ESCOMP / CMEPS

NUOPC Community Mediator for Earth Prediction Systems
https://escomp.github.io/CMEPS/
24 stars 79 forks source link

Fix xgrid reproducibility by using srcTermProcessing=0 for all xgrid FieldRegridStore calls #506

Closed billsacks closed 1 month ago

billsacks commented 1 month ago

Description of changes

Use srcTermProcessing=0 for all xgrid FieldRegridStore calls.

This is needed for bit-for-bit reproducibility. Most of the calls to FieldRegridStore weren't setting srcTermProcessing at all; this can lead to irreproducibility of the results. Two of the calls had srcTermProcessing set to 1 before, which leads to reproducibility but (according to Gerhard Theurich) is often worse for performance than a value of 0.

Note that we use a value of 0 in the calls in med_map_mod.

Specific notes

Contributors other than yourself, if any: Guidance from @oehmke and @theurich

CMEPS Issues Fixed (include github issue #): Resolves #505

Are changes expected to change answers? YES: roundoff-level differences expected for runs with aoflux_grid = "xgrid" (but those runs had expected roundoff-level differences from run to run before this fix anyway)

Any User Interface Changes (namelist or namelist defaults changes)? No

Testing performed

Please describe the tests along with the target model and machine(s) If possible, please also added hashes that were used in the testing

In the context of cesm3_0_alpha03c, with the change here put on top of the change in #501, ran REP_Ld2.ne30pg3_t232.BLT1850.derecho_intel.allactive-xgrid, where the xgrid testmod contained:

include_user_mods:

../defaultio

user_nl_cpl:

aoflux_grid = "xgrid"
billsacks commented 1 month ago

I have run two additional REP tests (REP_Ld2.ne30pg3_t232.BLT1850.derecho_intel.allactive-xgrid) and verified that they pass as well, so I'm fairly confident that this fixes the reproducibility issue (at least for this configuration) (i.e., the original pass wasn't just by chance).