Dependencies¶
To compile the code you need to have the following dependencies installed:
CMake
(version >= 3.16; verify by runningcmake --version
).GCC
(version >= 8.3.1; verify by runningg++ --version
),llvm
or Intel C++ compiler (version >= 19.1 or higher; verify by runningicx --version
).- to compile for GPUs, you need to have the
CUDA toolkit
installed (version >= 11.0; verify by runningnvcc --version
). MPI
(e.g.,OpenMPI
,MPICH
, etc.; verify by runningmpicxx --version
) for multi-node simulations.HDF5
for data output (verify by runningh5c++ --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.
Build scripts¶
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:
- Kokkos: https://github.com/kokkos/kokkos/releases;
- ADIOS2: https://github.com/ornladios/ADIOS2/releases;
- HDF5: https://github.com/HDFGroup/hdf5/releases, ZLIB: https://github.com/madler/zlib/releases, LIBAEC: https://github.com/MathisRosenhauer/libaec/releases; follow instructions here to place the proper source files;
- Open MPI: https://github.com/open-mpi/ompi.