-
Notifications
You must be signed in to change notification settings - Fork 50
Build Optional
To build Cabana with optional libraries, add the path to the installation to the CMAKE_PREFIX_PATH
. If a given library is found, the Cabana interface to it is automatically built.
To disable this behavior (e.g. if a system includes an optional library which is NOT desired within Cabana), -DCMAKE_DISABLE_FIND_PACKAGE_*=ON
can be added to the configuration for any of the optional libraries. Note that -DCabana_REQUIRE_*=OFF
does NOT turn remove the optional library from the build; a requirement turned off is simply not required.
To require building Cabana with MPI add -D Cabana_REQUIRE_MPI=ON
. If MPI is already in the system paths it is not necessary to manually add it to the CMAKE_PREFIX_PATH
. Note that the Grid subpackage requires MPI.
CMake can be used to specify alternative MPI settings. If you have built Cabana with CUDA support, you must also have a GPU-aware MPI implementation as Cabana directly uses this capability for efficient communication. See your MPI implementation for details on how to enable this. If GPU support is not enabled in Cabana then a GPU-aware MPI implementation is not needed.
ArborX provides Kokkos-based, performance portable, tree-based neighbor lists in Cabana.
Instructions for building ArborX are available: https://github.com/arborx/ArborX
To require building Cabana with ArborX, add -D Cabana_REQUIRE_ARBORX=ON
.
heFFTe provides performance portable 3D fast Fourier transforms in Cabana.
Instructions for building heFFTe are available: https://bitbucket.org/icl/heffte
To require building Cabana with heFFTe, add -D Cabana_REQUIRE_HEFFTE=ON
.
Note that for each enabled Kokkos backend, there must be at least one compatible heFFTe backend enabled. These options are sometimes named differently across Kokkos/heFFTe (e.g. HIP vs ROCM).
HYPRE provides preconditioners and solvers in Cabana.
Instructions for building HYPRE are available: https://github.com/hypre-space/hypre
To require building Cabana with HYPRE, add -D Cabana_REQUIRE_HYPRE=ON
.
ALL provides load balancing in Cabana.
Instructions for building ALL are available: https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing
To require building Cabana with ALL, add -D Cabana_REQUIRE_ALL=ON
.
SILO provides particle output in Cabana.
Instructions for building SILO are available: https://github.com/LLNL/Silo/blob/main/INSTALL
To require building Cabana with SILO, add -D Cabana_REQUIRE_SILO=ON
.
HDF5 provides particle output in Cabana.
HDF5 is available on many systems - NOTE this must be a parallel (MPI-enabled) HDF5 installation. If needed, instructions for building HDF5 are available (again, this must be a parallel HDF5 build): https://github.com/HDFGroup/hdf5/blob/develop/release_docs/INSTALL
In order to build Cabana with HDF5 -D Cabana_REQUIRE_HDF5=ON
must be added to the CMake configuration.
GoogleTest provides unit test infrastructure in Cabana.
GoogleTest is available on many systems. If needed, instructions for building GoogleTest are available: https://github.com/google/googletest
Cabana - A Co-Designed Library for Exascale Particle Simulations