Skip to content

Commit 383b06f

Browse files
committed
compiler: Make DataSpace intervals get the upper limit available of time_dims
1 parent 44e226a commit 383b06f

File tree

4 files changed

+6
-9
lines changed

4 files changed

+6
-9
lines changed

devito/ir/clusters/cluster.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,12 +362,11 @@ def dspace(self):
362362
intervals = intervals.promote(lambda d: not d.is_Sub)
363363
intervals = intervals.zero(set(intervals.dimensions) - oobs)
364364

365-
# Buffered TimeDimensions should inherit the higher upper bound
366-
# of the involved parts
365+
# DataSpace intervals should derive their upper bound from
366+
# the higher upper bound available in the involved parts
367367
for f, v in parts.items():
368368
try:
369-
if f.save:
370-
intervals = intervals.ceil(v[f.time_dim])
369+
intervals = intervals.ceil(v[f.time_dim])
371370
except:
372371
pass
373372

devito/ir/support/space.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,9 +399,7 @@ def generate(cls, op, *interval_groups, relations=None):
399399
relations.update(set().union(*[ig.relations for ig in interval_groups]))
400400

401401
modes = set(ig.mode for ig in interval_groups)
402-
403402
assert len(modes) <= 1
404-
405403
try:
406404
mode = modes.pop()
407405
except KeyError:

devito/types/dimension.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ def _arg_check(self, args, size, interval):
340340
# Autopadding causes non-integer upper limit
341341
from devito.symbolics import normalize_args
342342
upper = interval.upper.subs(normalize_args(args))
343-
if args[self.max_name] + upper >= size:
343+
if args[self.max_name] + upper > size:
344344
raise InvalidArgument("OOB detected due to %s=%d" % (self.max_name,
345345
args[self.max_name]))
346346

tests/test_operator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2011,8 +2011,8 @@ def test_indirection(self):
20112011
op = Operator(eqns)
20122012

20132013
assert op._dspace[time].lower == 0
2014-
assert op._dspace[time].upper == 1
2015-
assert op.arguments()['time_M'] == nt - 2
2014+
assert op._dspace[time].upper == 0
2015+
assert op.arguments()['time_M'] == nt - 1
20162016

20172017
op.apply()
20182018

0 commit comments

Comments
 (0)