Repository navigation
Implement OM3 manager and layout conventions - #78
Merged
Merged
Conversation
micaeljtoliveira
marked this pull request as draft
September 11, 2026 01:13
micaeljtoliveira
force-pushed
the
om3_layout_conventions
branch
2 times, most recently
from
September 17, 2026 05:14
d548d5a to
c0d969d
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #78 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 16 16
Lines 1454 1641 +187
==========================================
+ Hits 1454 1641 +187 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
micaeljtoliveira
force-pushed
the
om3_layout_conventions
branch
5 times, most recently
from
September 23, 2026 22:47
302f635 to
d112702
Compare
micaeljtoliveira
force-pushed
the
om3_layout_conventions
branch
8 times, most recently
from
September 29, 2026 23:40
1dd3b74 to
ab3f216
Compare
Which components ACCESS-OM3 runs, and on what grid, varies from one configuration to the next, so a hard-coded tree cannot describe it the way one describes ACCESS-ESM1.6. OM3Configuration is that description, and OM3Profiling takes one. NUOPC gives every component an ntasks and a rootpe. The mediator, the data atmosphere, the data runoff and the sea ice draw on one range of cores and run on it in turn, so they sit under a parent whose cores are shared: the range is as large as the furthest of them reaches, not as large as their total. The ocean and the waves take ranges of their own. Where each shared component starts is a property of the configuration, which passes it to the tree as a core offset, so the search never offers a layout that would not fit. MOM6 works out its own decomposition from the ranks it is given - ACCESS-OM3's MOM_input sets AUTO_MASKTABLE and states no LAYOUT - so by default the ocean carries no grid into the tree and no process grid is enumerated for it. On a 240-core configuration that is 8 layouts rather than 96, the rest differing only in a LAYOUT nothing would read. auto_ocean_layout turns it off where a configuration really does pin one. Only released configurations ship, and all five are the same one once forcing and biogeochemistry are set aside, so there is a single preset with the released core counts beside it as the reference a caller writes an allocation strategy from. The development configurations are built in the tests the way a caller builds one. Logs come from the ESMF profile summary, from MOM6 through the FMS parser and from CICE6 through the CICE5 one, all optional. Closes #47 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Some configurations run CDEPS's data sea ice in place of CICE6. It still takes its turn on the shared range and still receives cores, but ESMF decomposes its mesh over whatever ranks it is given, so no configuration file states a process grid for it and there is nothing for the search to choose. OM3Configuration gains data_sea_ice, false by default. Set, the sea ice is built as the data atmosphere and the data runoff already are - no grid on the tree, and so no process grid enumerated, no ice_in written, and a branch name recording its cores rather than a grid. Its grid stays recorded in sea_ice, which is also what says the configuration has a sea ice at all. The constraints have to travel with the grid rather than being left behind: MinSubdomainSizeConstraint reads a decomposition, and raises rather than skipping when there is none, so leaving it attached would refuse every candidate instead of ignoring them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
An experiment this manager generated carries the layout it was generated from. One it did not - archived, or added from a directory - has to be read back from its configuration, and for ACCESS-OM3 that is the PELAYOUT block of nuopc.runconfig: every realm states the first core it runs on and how many it is given. This is the inverse of what layout_config_changes writes. Cores alone do not say the shape, so the configuration being profiled is what supplies it: the realms taking turns on one range go under the parent holding that range, placed at the offsets their rootpes give, and the ocean and the waves follow it with ranges of their own. That makes this the place where a configuration disagreeing with the tree is found, and it is worth finding rather than quietly plotting. A shared range its realms leave partly idle is refused by the layout itself; a gap between two ranges is refused here, since reconstructing the shared range from its own realms cannot see one. Either way the message names the file it came from. What comes back carries no decompositions, the PE layout saying how many ranks a realm has rather than what grid they are in, so it answers what a component was given and is not fit to generate from. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
micaeljtoliveira
force-pushed
the
om3_layout_conventions
branch
from
October 6, 2026 01:31
ab3f216 to
11713d8
Compare
micaeljtoliveira
marked this pull request as ready for review
October 6, 2026 01:35
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.
Closes #47