Skip to content
Snippets Groups Projects
Commit eac84d40 authored by Stefano Serafin's avatar Stefano Serafin
Browse files

Update ICON.md

parent aaee86c5
No related branches found
No related tags found
No related merge requests found
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment