Optimization Cycle I: Loop merge & transient refine#465
Draft
FlorianDeconinck wants to merge 115 commits into
Draft
Optimization Cycle I: Loop merge & transient refine#465FlorianDeconinck wants to merge 115 commits into
FlorianDeconinck wants to merge 115 commits into
Conversation
…lInTasklet` Move re-usable functions into `tree_common_op`
Move pipeline defaults inside the Pipeline itself and have orchestration call default Mockup of passes required for merging to behave
Use symbols in the replacement directory. Update DaCe to a version that doesn't re-initialize the symbols. And fix the test failure in python 3.13.
This has been replaced with `InlineOffgridConditionals` pass
- Local are no longer transient on GPU - RefineTransients is deactivated
Because we have a "dace/" directory in `ndsl/dsl`, the previous import could be resolved as a local import. If that happened (depending on import order), then the DaCe's `Config` object would not be found there. Resolved by importing `Config` from `dace.config`, which is unambiguous to resolve.
The default merging order for `CartesianMerge` is to follow the loop order of the given backend. This commit adds support for a custom merge oder override.
6 tasks
When we normalize cartesian indices, add support for plain numbers as indices. Previously, we'd assume that each index is a symbolic expression. Now we have support for plain numbers too (e.g. from transient refinement).
This was causing issues because one symbol was contained in the other, e.g. when replacing `__k` with `__k_123` you'd get things like `__k_123_456` in case `__k` and `__k_456` were mixed.
This was referenced Jul 1, 2026
This is working to the best of my knowledge. Test case is a `D_SW` in `orch:dace:cpu:IJK` with FvTp2d configured to have loops ordered as `K-J-I` i.e. the other way round, which allows to merge K-loops.
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.
Description
Readying for mainline the following Schedule Tree transform:
CartesianMergeInlineVertical2DWriteCartesianRefineTransientsQOL / Tooling:
TreeOptimizationStatisticswill record the before/after count of maps, fors and transients🐞 Regression/ Bugs worked around
Locals are now non-transient in GPU because of bugs showing during tree optimizationCartesianRefineTransientsis not applied on GPU - same as aboveHow has this been tested?
New tests when needed
Checklist