Skip to content

Commit 7db5c7e

Browse files
committed
compiler: Refactor ModuloDimension handling in abridge_dim_names
1 parent 8af19a9 commit 7db5c7e

1 file changed

Lines changed: 9 additions & 12 deletions

File tree

‎devito/passes/iet/misc.py‎

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -347,10 +347,11 @@ def _(iet):
347347
def _(iet):
348348
# SubDimensions in the main loop nests
349349
mapper = {}
350-
mds = {}
350+
351+
trees = retrieve_iteration_tree(iet)
351352
# Build a mapper replacing SubDimension names with respective root dimension
352353
# names where possible
353-
for tree in retrieve_iteration_tree(iet):
354+
for tree in trees:
354355
# Rename SubDimensions present as indices in innermost loop
355356
mapper.update(_rename_subdims(tree.inner, tree.dimensions))
356357

@@ -359,16 +360,12 @@ def _(iet):
359360
dims = [d for d in dims if d.is_Incr and d.parent in mapper]
360361
mapper.update({d: d._rebuild(parent=mapper[d.parent]) for d in dims})
361362

362-
# Update parents of CIRE-generated ModuloDimensions. Search once per
363-
# outermost Iteration, as each tree would otherwise rescan the outer loops
364-
try:
365-
candidates = mds[tree.root]
366-
except KeyError:
367-
candidates = mds[tree.root] = [
368-
d for d in FindSymbols('dimensions').visit(tree.root) if d.is_Modulo
369-
]
370-
dims = [d for d in candidates if d.parent in mapper]
371-
mapper.update({d: d._rebuild(parent=mapper[d.parent]) for d in dims})
363+
# Update parents of CIRE-generated ModuloDimensions
364+
roots = {tree.root for tree in trees}
365+
mds = {d for root in roots for d in FindSymbols('dimensions').visit(root)
366+
if d.is_Modulo}
367+
mapper.update({d: d._rebuild(parent=mapper[d.parent])
368+
for d in mds if d.parent in mapper})
372369

373370
return Uxreplace(mapper, nested=True).visit(iet)
374371

0 commit comments

Comments
 (0)