Skip to content

Build Dependencies

Sam Reeve edited this page May 17, 2023 · 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.

Cabana uses Cabana_ENABLE_* CMake variables for sub-packages and general options (e.g. Cabana_ENABLE_TESTS). Using Cabana_REQUIRE_* CMake variables will cause the configuration to fail if a given Kokkos backend was not enabled (e.g. Cabana_REQUIRE_SERIAL). Cabana builds with all enabled Kokkos backends.

Kokkos supported versions

Cabana Version Kokkos Versions
master 3.6+
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

Dependency Version Required Details Available since
MPI GPU Aware if CUDA/HIP/SYCL Enabled No Message Passing Interface 0.1
ArborX master No (Experimental) Performance portable geometric search 0.3
heFFTe 2.1.0 No (Experimental) Performance portable fast Fourier transforms 0.4
hypre 2.22.1 No Preconditioners and solvers 0.4
HDF5 develop No Particle I/O master
Silo main No (Experimental) Particle I/O 0.5
ALL master No (Experimental) Load balancing 0.5
CUDA 9+ No Programming model for NVIDIA GPUs 0.1
HIP 3.5+ No Programming model for AMD GPUs 0.4
SYCL nightly No Programming model for Intel GPUs 0.4
GoogleTest 1.10+ No Unit test framework 0.1

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). 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.

Clone this wiki locally