Requirements

The following requirements ensure CLEO’s build, compilation and execution on DKRZ’s Levante HPC. If they do not work, please contact us or open a new issue on our GitHub repository.

Of course other architectures, other compilers, versions etc. are possible, but we leave this for you to discover.

CMake

CMake minimum version 3.18.0.

On Levante it’s best to use version 3.23.1 which can be loaded e.g. via the command

$ spack load cmake@3.23.1%gcc

Compilers

A C++ compiler with the C++20 standard library is the absolute minimum.

On Levante you can use the latest gcc compilers. At the time of writing this is gcc 11.2.0, e.g.

$ module load gcc/11.2.0-gcc-11.2.0

To compile with CUDA, use Levante’s latest nvhpc compilers, e.g.

$ module load nvhpc/23.9-gcc-11.2.0

Python

To use PySD you need Python minimum version 3.10.4. We advise you to create an environment using our envirnoment.yml file. This environment should automatically include all the additional packages you may require. If not, please contact us or open a new issue on our GitHub repository.

On Levante it’s a good idea to load the python3 module, e.g.

$ module load python3/2022.01-gcc-11.2.0

To use PySD and to run CLEO’s examples, particular Python packages are needed. These are included in our environment.yml file and are the following: matplotlib, numpy, scipy, xarray, zarr, and awkward. If there are other dependencies not listed here, you will have to install them too. We kindly ask that you also contact us or open a new issue on our GitHub repository to notify us.

You can install Python packages to an existing Conda (or Mamba) environment via:

$ conda activate [your conda environment]
$ python -m pip install [package name(s)]

YAC

Note

The installation of YAC for CLEO is currently in development and may require some manual installation.

YAC is one of the external libraries which CLEO may require in order to couple to dynamics and/or have MPI domain decomposition.

YAC requires some additional MPI, NetCDF and yaml libraries alongside the gcc compiler. You can load them on Levante via:

$ module load openmpi/4.1.2-gcc-11.2.0 netcdf-c/4.8.1-openmpi-4.1.2-gcc-11.2.0
$ spack load openblas@0.3.18%gcc@=11.2.0 libfyaml /fvbhgoq py-mpi4py