From c7aba8691c96c4a244c2598df4b40ff99cf83482 Mon Sep 17 00:00:00 2001 From: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:06:10 +0100 Subject: [PATCH] Move transient lifetime into OirSDFGBuilder Transients are added in OirSDFGBuilder, where no array lifetime is configured. After building that SDFG, the lifetime of all transients is manually set to `Persistent` (which is an optimization leading to less frequent memory allocation in case a kernel is called multiple times). In this commit we directly specify the transient's lifetime when building the SDFG. --- src/gt4py/cartesian/backend/dace_backend.py | 4 ---- src/gt4py/cartesian/gtc/dace/oir_to_dace.py | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/gt4py/cartesian/backend/dace_backend.py b/src/gt4py/cartesian/backend/dace_backend.py index 5b822a1ab5..8ca18705c9 100644 --- a/src/gt4py/cartesian/backend/dace_backend.py +++ b/src/gt4py/cartesian/backend/dace_backend.py @@ -151,10 +151,6 @@ def _pre_expand_transformations(gtir_pipeline: GtirPipeline, sdfg: dace.SDFG, la sdfg.add_state(gtir_pipeline.gtir.name) return sdfg - for array in sdfg.arrays.values(): - if array.transient: - array.lifetime = dace.AllocationLifetime.Persistent - sdfg.simplify(validate=False) _set_expansion_orders(sdfg) diff --git a/src/gt4py/cartesian/gtc/dace/oir_to_dace.py b/src/gt4py/cartesian/gtc/dace/oir_to_dace.py index d44c05de72..9b24bc3331 100644 --- a/src/gt4py/cartesian/gtc/dace/oir_to_dace.py +++ b/src/gt4py/cartesian/gtc/dace/oir_to_dace.py @@ -171,6 +171,7 @@ def visit_Stencil(self, node: oir.Stencil): ], dtype=data_type_to_dace_typeclass(decl.dtype), transient=True, + lifetime=dace.AllocationLifetime.Persistent, debuginfo=get_dace_debuginfo(decl), ) self.generic_visit(node, ctx=ctx)