This library contains a variety of data structures and synchronization primitives which are compatible with shared memory. This library is also compatible with CUDA and ROCm.
For those installing this component (rather than all of iowarp):
git clone https://github.com/grc-iit/grc-repo.git
spack repo add grc-repo
spack install hermes_shm
This will install dependencies of hermes-shm:
git clone https://github.com/grc-iit/grc-repo.git
spack repo add grc-repo
spack install hermes_shm +nocompile
spack load hermes_shm +nocompile
NOTE: spack load needs to be done for each new terminal.
This will compile:
git clone https://github.com/grc-iit/hermes-shm.git
cd hermes-shm
mkdir build
cd build
cmake ../ -DHSHM_ENABLE_CUDA=OFF -DHSHM_ENABLE_ROCM=OFF
make -j8
find_package(HermesShm CONFIG REQUIRED)
message(STATUS "found hermes_shm.h at ${HermesShm_INCLUDE_DIRS}")
target_link_libraries(hshm::cxx)
find_package(HermesShm CONFIG REQUIRED)
message(STATUS "found hermes_shm.h at ${HermesShm_INCLUDE_DIRS}")
target_link_libraries(hshm::cudacxx)
find_package(HermesShm CONFIG REQUIRED)
message(STATUS "found hermes_shm.h at ${HermesShm_INCLUDE_DIRS}")
target_link_libraries(hshm::rocmcxx_gpu)
To run the tests, do the following:
ctest
To run the MPSC queue tests, do the following:
ctest -VV -R test_mpsc_queue_mpi