-
Notifications
You must be signed in to change notification settings - Fork 60
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