Convert checkpoint files from legacy domains to layered CF - #782
Ed Hone (EdHone) wants to merge 7 commits into
Conversation
|
Again, just adding a note that this is blocked by #774 |
DanStoneMO
left a comment
There was a problem hiding this comment.
Ran JEDI with this and it works fine. No linked PR will be needed for it
iboutle
left a comment
There was a problem hiding this comment.
Just one question from me
There was a problem hiding this comment.
Why have some (but not all) grids included here had a _cf version added? None of the _cf versions are directly referenced in the xml files - is something behind the scenes causing these to be picked up and used though? If so, should every grid_def be duplicated? Or if not, do any of them need duplicating?
There was a problem hiding this comment.
It's a mixture of our current I/O implementation and expediency. The _cf domains are created during XIOS initialisation automatically as part of the lfric_core part of this PR. However, some of the checkpoint fields for lfric_atm are on grids that reference the UGRID versions of the domains, and these grids need a corresponding _cf version, which references the CF version of the domain instead of the UGRID one. It would probably be possible to automatically generate these grids as well (in lfric_core's I/O XIOS grids are dynamically generated according to which fields I/O is requested for), but in the interest of keeping this change as simple as possible I decided to just create definitions in the XML by hand. The CF grids that are present are the only ones needed to get all checkpointing to work.
There was a problem hiding this comment.
Thanks, that makes sense. So essentially any domain or grid referenced in the lfric_dictionary file (i.e. fields which are potentially checkpointed) will need to have a _cf version added?
Would you be able to document this somewhere - I would suggest adding a comment to the lfric_dictionary file itself, saying that any domain or grid referenced in here needs to have 2 versions (with and without the _cf) defined in the grid_def files
PR Summary
Sci/Tech Reviewer: iboutle
Code Reviewer:
The checkpointing I/O system used by all the LFRic apps uses 'legacy' checkpointing domains which are extremely non-performance at scale. The aim is convert to using the same UGRID format for output as the diagnostic files, which would involve changing the way that fields on the W2 function space are set up for I/O in XIOS. However, progress has been difficult for implementing this goal, as the UGRID implementation inside XIOS has some requirements and bugs which we cannot circumvent at the required timescales.
To get a performant checkpointing system working as soon as possible, this PR switches checkpoint files to use a layered CF I/O implementation, which will circumvent the bugs in UGRID whilst maintaining the improved performance gains. This will not be the long-term solution, as the output files will lack some required metadata but in the mean time this will allow us to start testing at scale with checkpoint-restart.
REVIEWER GUIDE - please run the
lfric_atm_extragroup to update the KGOslinked Enable the use of layered CF output for checkpoint-restart lfric_core#468
is blocked-by Coupled checkpoint restart #774
Code Quality Checklist
Testing
trac.log
Test Suite Results - lfric_apps - lfric_apps-layered-cf-cp/run21
Suite Information
Task Information
❌ failed tasks - 4
⌛ waiting tasks - 2
Security Considerations
Performance Impact
AI Assistance and Attribution
Documentation
PSyclone Approval
Sci/Tech Review
(Please alert the code reviewer via a tag when you have approved the SR)
Code Review