A header-only library of GPU neighbor search algorithms based on bounding volume hierarchies. For additional details, please refer to the following publications:
- M.P. Howard et al. "Efficient neighbor list calculation for molecular simulation of colloidal systems using graphics processing units". Comput. Phys. Commun. 203, 45-52 (2016).
- M.P. Howard et al. "Quantized bounding volume hierarchies for neighbor search in molecular simulations on graphics processing units". Comput. Mater. Sci. 164, 139-146 (2019).
For installation:
- CMake >= 3.9
To use with NVIDIA GPUs:
To use with AMD GPUs:
Optionally:
- hipper header-only GPU runtime interoperability layer. If not found, it will be added as a git submodule.
- upp11 header-only test library. If not found, it will be downloaded automatically to the build directory.
The neighbor library is header-only. It can be installed via CMake:
cmake ..
make install
(It can be included as part of an existing project, or simply downloaded.)
CMake projects can discover the installation using find_package in CONFIG
mode and should link against the neighbor::neighbor target.
neighbor will select between a CUDA or HIP build using the NEIGHBOR_HIP define.
If NEIGHBOR_HIP=ON, neighbor will use HIP for the GPU runtime, and both
NVIDIA and AMD GPUs are supported. If NEIGHBOR_HIP=OFF, neighbor will use
CUDA for the GPU runtime. If only NVIDIA GPUs are targeted, performance may
be slightly improved by setting NEIGHBOR_HIP=OFF.
If neighbor is being built directly by CMake, tests can optionally be built
with a working CUDA or HIP installation by setting NEIGHBOR_TEST=ON. Run the
included test suite with ctest.
This library is currently under development, so APIs may change between all minor versions in 0.x. Stability of the API will be guaranteed between minor versions beginning with 1.x.