A high-performance shared memory library containing data structures and synchronization primitives compatible with shared memory, CUDA, and ROCm.
- CMake >= 3.10
- C++17 compatible compiler
- Optional: CUDA toolkit (for GPU support)
- Optional: ROCm (for AMD GPU support)
- Optional: MPI, ZeroMQ, Thallium (for distributed computing)
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 cte-hermes-shm
This will install dependencies of cte-hermes-shm:
git clone https://github.com/grc-iit/grc-repo.git
spack repo add grc-repo
spack install cte-hermes-shm +nocompile
spack load cte-hermes-shm +nocompile
NOTE: spack load needs to be done for each new terminal.
This will compile:
git clone https://github.com/grc-iit/cte-hermes-shm.git
cd cte-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 cte-hermes-shm.h at ${HermesShm_INCLUDE_DIRS}")
target_link_libraries(hshm::cxx)
find_package(HermesShm CONFIG REQUIRED)
message(STATUS "found cte-hermes-shm.h at ${HermesShm_INCLUDE_DIRS}")
target_link_libraries(hshm::cudacxx)
find_package(HermesShm CONFIG REQUIRED)
message(STATUS "found cte-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
include/hermes_shm/
- Core library headersdata_structures/
- Shared memory data structuresmemory/
- Memory management and allocatorsthread/
- Threading and synchronization primitivesutil/
- Utility functions and helpers
src/
- Core library implementationtest/
- Unit tests and benchmarksbenchmark/
- Performance benchmarksCMake/
- CMake configuration files