Skip to content

Build Dependencies

Sam Reeve edited this page Jul 9, 2024 · 6 revisions

Required dependencies

Cabana has a minimal number of required dependencies:

Dependency Version Required Details
CMake 3.16+ Yes Build system
Kokkos 3.6+ Yes Portable on-node parallelism

Please note that you should compile both Kokkos and Cabana with the same compiler (both family and version), as the Cabana build system inherits compile flags from Kokkos.

Using Cabana_REQUIRE_* CMake variables will cause the configuration to fail if a given Kokkos backend was not enabled (e.g. Cabana_REQUIRE_SERIAL), but notably does not disable a backend if turned off. Cabana builds with all enabled Kokkos backends.

Kokkos supported versions

Cabana Version Kokkos Versions
master 4.1+
0.6 3.7+
0.5 3.4+
0.4 3.2+
0.3 3.1+
0.2 2.7-2.9
0.1 2.7-2.9

Other version combinations may work.

Moving forward, support is planned for 2 Kokkos releases per version

Optional dependencies

Cabana uses Cabana_ENABLE_* CMake variables to enable/disable general options (e.g. Cabana_ENABLE_EXAMPLES and Cabana_ENABLE_PERFORMANCE_TESTING). Cabana automatically builds with optional third-party libraries if found. Using Cabana_REQUIRE_* CMake variables will cause the configuration to fail if the library is not found (e.g. Cabana_REQUIRE_MPI), but notably does not disable the dependency if turned off. Instead CMAKE_DISABLE_FIND_PACKAGE_*=ON can be used to ignore available options. Note these options always use upper case.

The HDF5 library is an exception because of the C interface requirements. Cabana_REQUIRE_HDF5=ON is necessary to use HDF5 output with Cabana; this will be changed in a future release to build automatically if found to match all other optional dependencies.

Dependency Version Required CMake Variable Details Available since
MPI GPU Aware if CUDA/HIP/SYCL Enabled No Cabana_REQUIRE_MPI Message Passing Interface 0.1
ArborX master No Cabana_REQUIRE_ARBORX (Experimental) Performance portable geometric search 0.3
heFFTe 2.3.0 No Cabana_REQUIRE_HEFFTE (Experimental) Performance portable fast Fourier transforms 0.4
hypre 2.22.1 No Cabana_REQUIRE_HYPRE Preconditioners and solvers 0.4
HDF5 develop No Cabana_REQUIRE_HDF5 Particle I/O 0.6
Silo main No Cabana_REQUIRE_SILO (Experimental) Particle I/O 0.5
ALL master No Cabana_REQUIRE_ALL (Experimental) Load balancing 0.5
CUDA Kokkos min versions No Cabana_REQUIRE_CUDA Programming model for NVIDIA GPUs 0.1
HIP Kokkos min versions No Cabana_REQUIRE_HIP Programming model for AMD GPUs 0.3
SYCL Kokkos min versions No Cabana_REQUIRE_SYCL Programming model for Intel GPUs 0.4
GoogleTest 1.10+ No Cabana_ENABLE_TESTING Unit test framework 0.1
Clone this wiki locally