Infrastructure#
This page describe the main infrastructures of the icon model such as the parallelization and I/O.
Parallelization#
The ICON model leverages parallelization approaches to enhance computational efficiency and performance. MPI (Message Passing Interface) is employed for distributed memory parallelization, specifically distributing the computational workload horizontally across multiple nodes. This means that the horizontal domain of the model is divided into smaller subdomains, distributed across nodes, allowing for efficient communication and computation on a distributed system. OpenMP (Open Multi-Processing) is used for shared memory parallelization, allowing multiple threads to execute concurrently within a single node, thus speeding up computations. For GPU acceleration, OpenACC compiler directives are utilized to offload compute-intensive tasks to GPUs, significantly reducing runtime by exploiting the massive parallelism offered by modern GPUs. These parallelization strategies collectively ensure that the ICON model can handle the complex and large-scale computations required for accurate and timely weather forecasting.
A more detailed description of the parallelization is provided in the ICON Tutorial section 8.
Input & Output (I/O)#
Detail information to Input and Output can be found in the ICON Tutorial in respectively section 2 and 7.
Coupling (YAC)#
YAC (Yet Another Coupler) is a flexible coupling library which comes with ICON. Its interface is compatible to the well-known OASIS coupler and it can be used as a full replacement of it. YAC supports many different horizontal interpolations and a unique interpolation stack to control alternatives in case direct interpolation is not feasible. It is not only used for coupling atmosphere and ocean components of ICON, but also for a highly flexible output method.
Using YAC for Coupled Setups#
Multiple ICON components as Atmosphere, Waves and Ocean can be coupled to each other. This way, variables are exchanged between the components that are necessary for conservation of momentum, energy and mass. The exchanged variables can be defined in the corresponding yaml-file.
As an example a typical coupled Atmosphere-Ocean simulation exchanges
Atmospheric Surface Stresses,
10m Wind,
Precipitation,
Evaporation,
Snowfall,
Sea-level Pressure,
Radiative fluxes,
Atmospheric Sea-Ice Variables,
River Runoff,
Sea Surface Temperature,
Ocean Sea-Ice Variables,
Ocean Surface Stresses,
CO2 content.
Coupling is performed at the end of a timestep if that timestep is a coupling timestep. Additionally, in the case of a NWP atmosphere and when starting from a state file coupling before the first timestep is performed. This guarantees that all coupling fields are initialized properly.
Each coupled field has an internal timer. It is initialised with:
(lag can be any integer value; also negative)
At each put/get YAC will determine whether an exchange(incl. interpolation) has to occur:
After the call to put/get, the timer is updated with:
For developers there is the option to exchange namelist settings between components by using a key value store object. Keep in mind that this is only intended for namelist values, fields should always be exchanged by using YAC.
Output Coupling#
Testing#
The ICON model integrates a set of tests for supported systems. The internal CI infrastructure includes:
Testing tools: