-
Notifications
You must be signed in to change notification settings - Fork 15
[Orchestration/Performance] Transient memory scoping & transformation #267
Copy link
Copy link
Open
Labels
EnhancementNew feature or requestNew feature or requestPerformancePerformance related tasks & PRPerformance related tasks & PR
Description
With the introduction of transient in the orchestration pipeline we have the basis for two central cache-related optimization:
- Refining dimensionality of temporaries (
RefinedNestedAccesspass in DaCe) - Remove/replace fields that are no longer useful after reduction and merge (
DeadFlowEliminationin DaCe)
One issue is that all fields are considered lifetime.Persistent in the DaCe -> GT4Py bridge. Technically, those should be tagged as lifetime.Scope when orchestrating. lifetime.Persistent allows us to properly pool memory, a feature we need to keep. So we will need to re-scope to lifetime.Scope at first, then once optmization is done, de-scope back to Persistent and pool.
Flow of optimization for transient:
- Re-scope
transientin tolifetime.Scope(gt4py-dace bridge, potentially only for orchestration) - Apply merging of IJ or K loops
- Apply
RefineNestedAccessto reduce dimensionality - Simplify (scalarize &
DeadFlowElimination) - For any
transientstill alive, de-scope tolifetime.Persistentand flag haspool
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
EnhancementNew feature or requestNew feature or requestPerformancePerformance related tasks & PRPerformance related tasks & PR