diff --git a/ICON.md b/ICON.md index ee6f708a356f8d9d3ea2f09694e2476dbbba5e47..921234d7f9cff2463738b338c7b9b4af93904096 100644 --- a/ICON.md +++ b/ICON.md @@ -2,7 +2,7 @@ ICON can be downloaded and used under a [personal non-commercial research license](https://code.mpimet.mpg.de/projects/iconpublic/wiki/Instructions_to_obtain_the_ICON_model_code_with_a_personal_non-commercial_research_license). An account at <code.mpimet.mpg.de> is required. Instructions are available on the [public ICON page](https://code.mpimet.mpg.de/projects/iconpublic). Useful information can be found in the ICON [Tutorial](https://www.dwd.de/EN/ourservices/nwv_icon_tutorial/pdf_volume/icon_tutorial2023_en.pdf?__blob=publicationFile&v=3). -## How to set up and run ICON on jet +## How to set up ICON on jet 1. Load the necessary modules. ``` @@ -93,28 +93,27 @@ ICON can be downloaded and used under a [personal non-commercial research licens -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/libxml2-2.10.1-rq3keeuc35vmgpvqk5z2rcimlfanni6x/lib \ -L/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/eccodes-2.25.0-zqawf62kodmeksghxvk3k7pqlekpvigy/lib64" \ LIBS='-leccodes -lxml2 -llapack -lblas -lnetcdff -lnetcdf -lmpi' \ + FI_provider=tcp \ --enable-mpi --enable-grib2 --without-external-cdi ``` This configure script does two things: i) loads a selection of environment modules; ii) runs the ICON configure scripts passing all the required compiler flags. 1. Prepare for an out-of-source build. Create a build directory in the source code root and move into it. In the build directory, link the `configure` file and then run `jet.ifort.sh` (the configuration script above) + ```sh (mypy36) [serafin@jet01 icon-2.6.6]$ mkdir jet (mypy36) [serafin@jet01 icon-2.6.6]$ cd jet/ (mypy36) [serafin@jet01 jet]$ ln -s ../configure . - (mypy36) [serafin@jet01 jet]$ srun --mem=20G ../config/univie/jet.ifort.sh + (mypy36) [serafin@jet01 jet]$ ../config/univie/jet.ifort.sh ``` - Why the `srun --mem=20G`? Because this way the configuration script runs on the compute nodes of `jet` and has enough memory to run simple test programmes (actually, it could work with a lot less than 20G). This is necessary because the configuration script makes some tests to see if the MPI environment (in particular `mpirun`) works correctly; with the default settings on `jet`, this is the case only on the compute nodes. - - According to MB, an alternative way to make it work is: + A side note: without specifying `FI_provider=tcp` in the configure script, it is still possible to run it as follows: ```sh (mypy36) [serafin@jet01 icon-2.6.6]$ mkdir jet (mypy36) [serafin@jet01 icon-2.6.6]$ cd jet/ (mypy36) [serafin@jet01 jet]$ ln -s ../configure . - (mypy36) [serafin@jet01 jet]$ export FI_PROVIDER=tcp - (mypy36) [serafin@jet01 jet]$ mpirun ../config/univie/jet.ifort.sh + (mypy36) [serafin@jet01 jet]$ srun --mem=20G ../config/univie/jet.ifort.sh ``` - It is yet untested. + Why the `srun --mem=20G`? Because this way the configuration script runs on the compute nodes of `jet` (so the MPI environment, in particular `mpirun`, works correctly) and has enough memory to run simple test programmes (actually, it could work with a lot less than 20G). 1. Compile the code by running the following in the build directory (`-j8` is optional, it's only about running multiple compile jobs in parallel): ```sh @@ -145,3 +144,4 @@ ICON can be downloaded and used under a [personal non-commercial research licens ```sh (mypy36) [serafin@jet01 jet]$ ./copy_runscripts.sh ``` +## How to run ICON on jet