Skip to content

Dependencies

To compile the code you need to have the following dependencies installed:

  • CMake (version >= 3.16; verify by running cmake --version).
  • GCC (version >= 8.3.1; verify by running g++ --version), llvm or Intel C++ compiler (version >= 19.1 or higher; verify by running icx --version).
  • to compile for GPUs, you need to have the CUDA toolkit installed (version >= 11.0; verify by running nvcc --version).
  • MPI (e.g., OpenMPI, MPICH, etc.; verify by running mpicxx --version) for multi-node simulations.
  • HDF5 for data output (verify by running h5c++ --version).

Cuda compatibility

Note, that different versions of CUDA are compatible with different host compiler versions (i.e., gcc, llvm, etc.). Please, refer to the following curated list for the compatibility matrix.

All the other third-party dependencies, such as Kokkos and ADIOS2, are included in the repository as submodules and are automatically compiled when you run cmake.

Preinstalling third-party libraries

To speed up the compilation process, it is often beneficial to precompile the third-party libraries and use those during the build process, either by setting the appropriate environment variables, using it within a conda environment or by using environment modules. Alternatively, of course, you can use the libraries provided by your system package manager, or the cluster's module system.

Anaconda

If you want to have ADIOS2 with the serial HDF5 support (i.e., without MPI) installed in the conda environment, we provide a shell script conda-entity-nompi.sh which installs the proper compiler, the hdf5 library, and the ADIOS2. Run the scripts via:

source conda-entity-nompi.sh

This also pip-installs the nt2.py package for post-processing. With this configuration, the Kokkos library will be built in-tree.

Environment modules

The form below allows you to generate the appropriate build scripts and optionally the environment modules for the libraries you want to compile and install. Library interdependencies are automatically resolved, and the form will only show the necessary fields for the libraries you select.

Libraries to compile




Configurations


MPI settings


HDF5 settings


Kokkos settings



ADIOS2 settings


Build scripts

MPI build/install script

HDF5 build/install script

Kokkos build/install script

ADIOS2 build/install script

Modulefiles






Note

We also provide a command-line tool called ntt-dploy which can be used for the same purpose.

Note

We assume that the source codes for each library are already downloaded and placed in the appropriate directories. Here's where you can download the source codes: