Skip to content

Commit 83409a2

Browse files
committed
compiler: Fix abstract_object(Array)
1 parent 16aa70f commit 83409a2

4 files changed

Lines changed: 28 additions & 7 deletions

File tree

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
)
@@ -555,12 +555,19 @@ def _(i, mapper, sregistry):
555555

556556
@abstract_object.register(Array)
557557
def _(i, mapper, sregistry):
558-
if isinstance(i, Lock):
559-
name = sregistry.make_name(prefix='lock')
558+
name = sregistry.make_name(prefix=i._symbol_prefix)
559+
560+
if i.initvalue is not None:
561+
initvalue = []
562+
for v in i.initvalue:
563+
try:
564+
initvalue.append(v.xreplace(mapper))
565+
except AttributeError:
566+
initvalue.append(v)
560567
else:
561-
name = sregistry.make_name(prefix='a')
568+
initvalue = None
562569

563-
v = i._rebuild(name=name, alias=True)
570+
v = i._rebuild(name=name, initvalue=initvalue, alias=True)
564571

565572
mapper.update({
566573
i: v,
@@ -667,6 +674,16 @@ def _(i, mapper, sregistry):
667674
mapper[i] = i._rebuild(name=sregistry.make_name(prefix='ptr'))
668675

669676

677+
@abstract_object.register(FunctionMap)
678+
def _(i, mapper, sregistry):
679+
name = sregistry.make_name(prefix=i._symbol_prefix)
680+
tensor = mapper.get(i.tensor, i.tensor)
681+
682+
v = i._rebuild(name, tensor)
683+
684+
mapper[i] = v
685+
686+
670687
@abstract_object.register(NPThreads)
671688
def _(i, mapper, sregistry):
672689
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
@@ -227,6 +227,8 @@ class Lock(Array):
227227

228228
is_volatile = True
229229

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

0 commit comments

Comments
 (0)