-
Notifications
You must be signed in to change notification settings - Fork 50
Build 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.
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
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 |
Cabana - A Co-Designed Library for Exascale Particle Simulations