Repository navigation
feature[next]: Dycore fusion passes - #2906
Closed
dganellari wants to merge 5 commits into
Closed
dganellari wants to merge 5 commits into
dganellari wants to merge 5 commits into
Conversation
This was referenced Sep 25, 2026
Author
|
Split this into three PRs so the changes can be reviewed separately:
Closing this PR in favor of those three. Keeping this branch available because our earlier GPU results refer to it. |
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.
Enable guarded producer/consumer fusion in the DaCe backend while retaining the original model field operators. Both extensions are opt-in and reuse existing GT4Py transformations.
VerticalSplitMapRangewithallow_shared_data. Require disjoint pointwise writers and one covering writer for each reader. Preserve external stores and later consumers; reject unknown or unsafe partitions. Applications select candidates through the existing auto-optimizer callback.fuse_as_fieldoponce per original scan, with optional per-input selection, alias guards and shifted-input handling. The optionalfield_operatorpreparation combines local coefficient expressions within their original function boundary. Calls to upstream field operators remain boundaries. Run the standard field-view transforms before fusion and again after a successful rewrite.The design ADR describes options, examples and safety limits. This branch is based on
amd_chiplet_setting(eb763b97).Reproduction with ICON4Py
Companion application integration and controlled runner: C2SM/icon4py#1484.
The reproduction instructions pin this compiler and the measured DaCe base. The runner selects the passes through normal ICON4Py model options, with separate or combined comparisons on global/120 and regional/120. It restores arrays and scalar state, checks 148 fields, uses balanced A/B quartets with interleaved A/A controls, and saves device/wall samples, SDFGs, generated code and source provenance. No compiler overlay or model rewrite is required.
Published controlled compiler-only measurements, original versus both passes:
These are the archived GPU experiments. The newly packaged public PR pair still requires its end-to-end GPU replay. The figures are combined-treatment results, not a universal profitability guarantee or isolated attribution to each pass. The ICON4Py PR documents wall time, timing controls, generated-code evidence and the original grid-dependent vendor gap.
Validation
gt4py.nextdoctests: 111 passed, 2 skipped.Requirements