New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
2021WP/HPC-03_Mele_Comm_Cleanup – NEMO
wiki:2021WP/HPC-03_Mele_Comm_Cleanup

Version 6 (modified by epico, 3 years ago) (diff)

--

Name and subject of the action

Last edition: Wikinfo(changed_ts)? by Wikinfo(changed_by)?

The PI is responsible to closely follow the progress of the action, and especially to contact NEMO project manager if the delay on preview (or review) are longer than the 2 weeks expected.

  1. Summary
  2. Preview
  3. Tests
  4. Review

Summary

Action Communications cleanup
PI(S) Francesca Mele, Italo Epicoco
Digest This task concerns the removal/shifting of unnecessary communications within routines when using halo 2.
Dependencies
Branch source:/NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup
Previewer(s) TDB
Reviewer(s) TBD
Ticket #2607

Description

This action aims at completing what was stared in 2020. Due to the halo=2 most of the lbc_lnk communications can be removed or moved earlier in the code. A careful analysis of the DO LOOP ranges leads the removal of the useless lbc_lnk calls as well.

Implementation

The implementation (or better the rationalization) of the lbc_lnk calls will start from DYN and ZDF modules (the TRA module was completed in 2020). Because we decided to support halo=1 execution, we put the lbc_lnk call inside of an IF statement condition whenever needed.

The movement of a communication earlier in the code (in the case of halo=2) often leads to a difference in the outputs when compared with the halo=1 run. This is due to the north folding algorithm. In the attached document (and Halo2.pdf) we analysed the problem and found that, due to the north fold, some expressions are evalauted correctly but with a different order of the floating point operations with respect the halo=1 case.

In order to preserve the bit comparison of the results between the cases halo=1 and halo=2, we have to "force" the order of the floating point operations in both cases by introducing round brackets whithin the interested expressions.

We propose to insert the round brackets in the expressions where needed directly into the trunk. This will cause a version of the trunk which is not bit comparable with the previous one, but the differences will be only due to the changes in the order of the floating point operations, hence they should be acceptable.

Documentation updates

Error: Failed to load processor box
No macro or processor named 'box' found

...

Preview

Error: Failed to load processor box
No macro or processor named 'box' found

...

Tests

Error: Failed to load processor box
No macro or processor named 'box' found

...

Review

Error: Failed to load processor box
No macro or processor named 'box' found

...

Attachments (1)

Download all attachments as: .zip