University of Cambridge > Talks.cam > RSE Seminars > How not to write a convection parameterisation code?

How not to write a convection parameterisation code?

Add to your list(s) Download to your calendar using vCal

If you have a question about this talk, please contact Jack Atkinson.

Convection parameterisations are a crucial element of global atmospheric models. They simulate the vertical transport of heat, moisture and momentum by convective clouds, and associated rainfall. The majority of Tropical rainfall is associated with these clouds, which are too small-scale to explicitly resolve on the model’s grid and so need to be parameterised.

Most global atmosphere models use a so-called “mass-flux” form of convection parameterisation, which consists of a diagnostic vertical integral to compute the properties of the clouds and the amount of heat / moisture entrained / detrained at each height. The calculations in a given vertical column of model grid-points are completely independent of those in other neighbouring columns, so it would be simplest to write the code so that it only considers a single column at a time. However, since we are performing a vertical integral the calculations at a given height within each column depend on the results from those calculations at the level below, so the scheme must be structured in a vertically sequential manner considering a single height-level at a time.

Considering only a single column and a single height-level at a time amounts to computing only a single grid-point at a time. On CPU architectures, this is extremely inefficient; far greater computation speeds are obtained by doing many identical calculations simultaneously, via vectorisation. Another challenge / opportunity is the sparsity of the required calculations, since convective clouds only occupy a small fraction of the atmosphere’s volume.

In this talk I discuss routes to exploiting both vectorisation and shared memory parallelisation, and how to make efficient use of memory given the sparsity, in the comorph convection parameterisation fortran code currently under development at the Met Office.

However, current and future changes in software and HPC architectures (such as GPUs) may radically change the optimal code structure. Is there any way to adapt our convection code to these changes without completely rewriting it, or write it in a “future proof” way?

Hybrid Zoom details will be emailed to the RSE mailing list; if you are not on the list, please contact the organisers.

This talk is part of the RSE Seminars series.

Tell a friend about this talk:

This talk is included in these lists:

Note that ex-directory lists are not shown.

 

© 2006-2024 Talks.cam, University of Cambridge. Contact Us | Help and Documentation | Privacy and Publicity