Skip to content

Build Optional

Sam Reeve edited this page Sep 15, 2023 · 4 revisions

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.

MPI

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

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

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

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

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

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

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.

GTest

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

Clone this wiki locally