Skip to content

Commit 9f1fe85

Browse files
committed
compiler: Add PhaseMarker
1 parent c61b8cc commit 9f1fe85

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

devito/ir/clusters/cluster.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
from devito.symbolics import estimate_cost
1717
from devito.tools import as_tuple, filter_ordered, flatten, infer_dtype
1818
from devito.types import (
19-
CriticalRegion, Fence, Indexed, TensorMove, ThreadArrive, ThreadCommit,
20-
ThreadPoolSync, ThreadWait, WeakFence
19+
CriticalRegion, Fence, Indexed, PhaseMarker, TensorMove, ThreadArrive,
20+
ThreadCommit, ThreadPoolSync, ThreadWait, WeakFence
2121
)
2222

2323
__all__ = ["Cluster", "ClusterGroup"]
@@ -303,6 +303,10 @@ def is_fence(self):
303303
def is_weak_fence(self):
304304
return self._is_type(WeakFence)
305305

306+
@cached_property
307+
def is_phase_marker(self):
308+
return self._is_type(PhaseMarker)
309+
306310
@cached_property
307311
def is_critical_region(self):
308312
return self._is_type(CriticalRegion)

devito/types/misc.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
'Hyperplane',
2525
'Indirection',
2626
'Jump',
27+
'PhaseMarker',
2728
'Pointer',
2829
'Temp',
2930
'TempArray',
@@ -332,6 +333,17 @@ class WeakFence(sympy.Function, Fence):
332333
pass
333334

334335

336+
class PhaseMarker(WeakFence):
337+
338+
"""
339+
A special WeakFence acting as a marker to logically separate different compute phases.
340+
Thus, statements in different phases will not be reordered across the marker upon
341+
topological sorting.
342+
"""
343+
344+
pass
345+
346+
335347
class CriticalRegion(sympy.Function, Fence):
336348

337349
"""

0 commit comments

Comments
 (0)