Repository navigation
Conversation
Author
|
@dabail10 - I'm not sure I did this PR to the correct branch. I'm doing this off of main - but it looks like CESM_CICE is pointing to cice6_6_3_20260904 - which is almost a year old. I will hold off doing PR to CESM_CICE until I know what branch this is supposed to point. |
Collaborator
|
Please submit to to the CICE Consortium. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR checklist
Write several time samples to one history file
mvertens
See testing summary below
Summary
CICE writes one history file per time sample. For daily output needed in CMIP7 runs, a new netcdf file is created, defined written to and and closes a file every day. This not only has a negative impact on performance but also is thought to be a leading cause of the periodic hangs during I/O operations on olivia.
A new
setup_nmlvariable,hist_file_period(max_nstrm), has been added that determines how man time samples can go into a target history file for all the allowed streams (i.e. m, d, ...). It can take values ofnone,monthoryear. The default isnoneeverywhere (i.e. the current behavior).As an example - the following setting will bundle daily output into monthly files.
The daily stream then writes one file for January holding all 31 daily samples, one for February holding 28, and so on. Each file is named after its first sample. The fields and their values do not change. How often a sample is written is still set by histfreq.
Previously, ten PIO decompositions were created for each history write. They only need to be created once, since a decomposition belongs to the iosystem rather than to a file, so one set can be used for every file. They are now created on the first write and kept. This change does not depend on hist_file_period and improves every configuration, including one that writes monthly output.
NOTE: this PR will need a corresponding PR to CESM_CICE (will document this here when it is issues)
Performance impact
@dabail10 @briandobbins @phillips-ad
With the standard tn14 noresm CICE grid, the cmip7 daily output turned on, and the DIAF configuration, the daily wall clock time for the ice code is about 2/3 of the old setup.
Testing
The following testing was done for the same PR to NorESM:
Test1:
A two month run with the following settings
-compset NOIIA --res T62_tn14 --mach olivia --compiler intel
was done with a monthly stream and a daily stream grouped by month.
hist_file_period = "none", "month", "none", "none"
The user_nl_cice file was set to have the same settings as in cmip7 runs for daily output.
The daily stream wrote two files. January holds 31 samples and February holds 28. The output times were at midday on each day, and the bounds ran from one day to the next without a gap. No day was repeated or missing where the two files meet. January’s file was closed during the run and not at the end of it. The monthly stream wrote one file per month as before.
The same run was then repeated with hist_file_period set to none, which wrote one file per day. The daily files for January were joined with ncrcat and compared against the grouped file one record at a time with cprnc. All 31 records were identical in every field.
Test2:
Ran the previous case but in the following way:
Test2a: ran for 16 days
Test2b: restarted and ran until the end of the month
The resulting January file for daily output was identical to the one obtained in Test1
Test3:
Verified that the following test passed
ERS_Ld3.ne16pg3_tn14.NHistEsm.olivia_intel.allactive-cmip7hfio
No testing was done for this PR on derecho
@dabail10 @briandobbins phillips-ad
Performance impact: With the standard tn14 noresm grid and the DIAF configuration, the daily wall clock time for the ice code is about 2/3 of the old setup.
PR done in collaboration with Claude Opus 5.5