reduce or delay global communications
There is a large number of global mpi communications in the code. They are mostly used for diagnostics (but not only), hence they are not always activated. However, they clearly decrease scalability for a regular use of nemo.
Here is the (non-exhaustive?) list of global communications in the code (glob_* + mpp_*). For each of them, one has to decide whether they can be gathered, delayed or kept as they are. The idea is to have a namelist parameter that is able to switch most global communications to delayed ones if the user is not interested to have perfectly accurate results.
-
change glob comm. with delayed comm.
- ICE/icedia.F90
- OCE/ISF/isfcavmlt.F90
- OCE/ISF/isfparmlt.F90
- OCE/BDY/bdyvol.F90
- OCE/DIA/diahsb.F90
- OCE/SBC/sbcfwb.F90
- OCE/SBC/sbcapr.F90
- OCE/ZDF/zdfiwm.F90
- TOP/PISCES/P4Z/p4zsink.F90
- TOP/PISCES/P4Z/p4zsms.F90
- TOP/PISCES/P4Z/p4zprod.F90
- TOP/PISCES/P4Z/p4zflx.F90
- TOP/PISCES/P4Z/p2zprod.F90
- TOP/TRP/trcrad.F90
-
and/or gather global comm.:
- ICE/icewri.F90
- OCE/DIA/diaar5.F90
- OCE/LDF/ldfeke.F90
- OCE/SBC/sbcclo.F90
- TOP/trcini.F90
- TOP/trcrst.F90
- TOP/C14/trcwri_c14.F90
-
cleaning:
- remove most IF( lk_mpp )