Skip to content

Commit 62c4caa

Browse files
committedNov 23, 2023
compiler: regain correctness for indirections
1 parent b656400 commit 62c4caa

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed
 

‎devito/ir/clusters/cluster.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,12 @@ def dspace(self):
367367
for f, v in parts.items():
368368
for i in v:
369369
if i.dim in oobs:
370-
intervals = intervals.ceil(v[i.dim])
370+
try:
371+
if intervals[i.dim].upper > v[i.dim].upper and \
372+
bool(i.dim in f.dimensions):
373+
intervals = intervals.ceil(v[i.dim])
374+
except AttributeError:
375+
pass
371376

372377
return DataSpace(intervals, parts)
373378

‎devito/ir/support/utils.py

-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ def detect_accesses(exprs):
127127
mapper = defaultdict(Stencil)
128128
for e in retrieve_indexed(exprs, deep=True):
129129
f = e.function
130-
131130
for a, d0 in zip(e.indices, f.dimensions):
132131
if isinstance(a, Indirection):
133132
a = a.mapped

‎devito/types/dimension.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ def _arg_check(self, args, size, interval):
342342
# Autopadding causes non-integer upper limit
343343
from devito.symbolics import normalize_args
344344
upper = interval.upper.subs(normalize_args(args))
345-
if args[self.max_name] + upper > size:
345+
if args[self.max_name] + upper >= size:
346346
raise InvalidArgument("OOB detected due to %s=%d" % (self.max_name,
347347
args[self.max_name]))
348348

‎examples/userapi/02_apply.ipynb

+2-2
Original file line numberDiff line numberDiff line change
@@ -250,14 +250,14 @@
250250
"name": "stdout",
251251
"output_type": "stream",
252252
"text": [
253-
"OOB detected due to time_M=3\n"
253+
"OOB detected due to time_M=2\n"
254254
]
255255
}
256256
],
257257
"source": [
258258
"from devito.exceptions import InvalidArgument\n",
259259
"try:\n",
260-
" op.apply(time_M=3)\n",
260+
" op.apply(time_M=2)\n",
261261
"except InvalidArgument as e:\n",
262262
" print(e)"
263263
]

0 commit comments

Comments
 (0)