Skip to content

Commit 5569e99

Browse files
committed
compiler: Fixup deterministic codegen
1 parent 85518f6 commit 5569e99

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

devito/passes/clusters/buffering.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,7 @@ class InjectBuffers(Queue):
123123
def __init__(self, mapper, sregistry, options):
124124
super().__init__()
125125

126-
# Sort the mapper so that we always process the same Function in the
127-
# same order, hence we get deterministic code generation
128-
self.mapper = {i: mapper[i] for i in sorted(mapper, key=lambda i: i.name)}
126+
self.mapper = mapper
129127

130128
self.sregistry = sregistry
131129
self.options = options
@@ -302,6 +300,9 @@ def generate_buffers(clusters, key, sregistry, options, **kwargs):
302300
# {candidate buffered Function -> [Clusters that access it]}
303301
bfmap = map_buffered_functions(clusters, key)
304302

303+
# Sort for deterministic code generation
304+
bfmap = {i: bfmap[i] for i in sorted(bfmap, key=lambda i: i.name)}
305+
305306
# {buffered Function -> Buffer}
306307
xds = {}
307308
mapper = {}
@@ -718,7 +719,7 @@ def offset_from_centre(d, indices):
718719
# `time/factor` -- the starting pointing at time_m or time_M
719720
v = indices[0]
720721
try:
721-
p = sum(v.args[1:])
722+
p = v.func(*[i for i in v.args if not is_integer(i)])
722723
if not ((p - v).is_Integer or (p - v).is_Symbol):
723724
raise ValueError
724725
except (IndexError, ValueError):

0 commit comments

Comments
 (0)