Skip to content

Commit d3837c2

Browse files
committed
compiler: Fix abstract_object(Array)
1 parent 419a3e8 commit d3837c2

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

devito/passes/iet/engine.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
search)
1818
from devito.tools import DAG, as_tuple, filter_ordered, sorted_priority, timed_pass
1919
from devito.types import (
20-
Array, Bundle, ComponentAccess, CompositeObject, Lock, IncrDimension,
20+
Array, Bundle, ComponentAccess, CompositeObject, IncrDimension, FunctionMap,
2121
ModuloDimension, Indirection, Pointer, SharedData, ThreadArray, Symbol, Temp,
2222
NPThreads, NThreadsBase, Wildcard
2323
)
@@ -528,12 +528,19 @@ def _(i, mapper, sregistry):
528528

529529
@abstract_object.register(Array)
530530
def _(i, mapper, sregistry):
531-
if isinstance(i, Lock):
532-
name = sregistry.make_name(prefix='lock')
531+
name = sregistry.make_name(prefix=i._symbol_prefix)
532+
533+
if i.initvalue is not None:
534+
initvalue = []
535+
for v in i.initvalue:
536+
try:
537+
initvalue.append(v.xreplace(mapper))
538+
except AttributeError:
539+
initvalue.append(v)
533540
else:
534-
name = sregistry.make_name(prefix='a')
541+
initvalue = None
535542

536-
v = i._rebuild(name=name, alias=True)
543+
v = i._rebuild(name=name, initvalue=initvalue, alias=True)
537544

538545
mapper.update({
539546
i: v,
@@ -640,6 +647,16 @@ def _(i, mapper, sregistry):
640647
mapper[i] = i._rebuild(name=sregistry.make_name(prefix='ptr'))
641648

642649

650+
@abstract_object.register(FunctionMap)
651+
def _(i, mapper, sregistry):
652+
name = sregistry.make_name(prefix=i._symbol_prefix)
653+
tensor = mapper.get(i.tensor, i.tensor)
654+
655+
v = i._rebuild(name, tensor)
656+
657+
mapper[i] = v
658+
659+
643660
@abstract_object.register(NPThreads)
644661
def _(i, mapper, sregistry):
645662
mapper[i] = i._rebuild(name=sregistry.make_name(prefix='npthreads'))

devito/types/array.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ class Array(ArrayBasic):
127127

128128
is_Array = True
129129

130+
_symbol_prefix = 'a'
131+
130132
__rkwargs__ = (ArrayBasic.__rkwargs__ +
131133
('dimensions', 'scope', 'initvalue'))
132134

devito/types/misc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
__all__ = ['Timer', 'Pointer', 'VolatileInt', 'FIndexed', 'Wildcard', 'Fence',
1616
'Global', 'Hyperplane', 'Indirection', 'Temp', 'TempArray', 'Jump',
17-
'nop', 'WeakFence', 'CriticalRegion', 'Auto', 'AutoRef', 'auto',
18-
'size_t']
17+
'nop', 'WeakFence', 'CriticalRegion', 'Auto', 'AutoRef', 'FunctionMap',
18+
'auto', 'size_t']
1919

2020

2121
class Timer(CompositeObject):

devito/types/parallel.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,8 @@ class Lock(Array):
226226

227227
is_volatile = True
228228

229+
_symbol_prefix = 'lock'
230+
229231
# Not a performance-sensitive object
230232
_data_alignment = False
231233

0 commit comments

Comments
 (0)