Skip to content

Commit 074df11

Browse files
authored
Merge pull request #2230 from devitocodes/msd-pass-fix
compiler: prevent multisubdimension expressions duplicates
2 parents 617ce82 + b3b85e5 commit 074df11

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

devito/passes/clusters/implicit.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from devito.ir import (Cluster, Interval, IntervalGroup, IterationSpace, Queue,
99
FetchUpdate, PrefetchUpdate, SEQUENTIAL)
10+
from devito.symbolics import retrieve_dimensions
1011
from devito.tools import as_tuple, timed_pass
1112
from devito.types import Eq
1213
from devito.types.grid import MultiSubDimension, SubDomainSet
@@ -106,6 +107,13 @@ def callback(self, clusters, prefix):
106107
# The "implicit expressions" created for the MultiSubDomain
107108
exprs, dims, sub_iterators = make_implicit_exprs(d.msd, c)
108109

110+
# Make sure the "implicit expressions" aren't scheduled in
111+
# an inner loop. E.g schedule both for `t, xi, yi` and `t, d, xi, yi`
112+
edims = set(retrieve_dimensions(exprs, deep=True))
113+
if dim not in edims and any(d.dim in edims for d in prefix):
114+
processed.append(c)
115+
continue
116+
109117
# The IterationSpace induced by the MultiSubDomain
110118
if dims:
111119
intervals = [Interval(i) for i in dims]

0 commit comments

Comments
 (0)