Skip to content

Commit 2474a68

Browse files
committed
compiler: Rework correctness for indirections
1 parent b656400 commit 2474a68

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
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/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)