Skip to content

Commit 1ed5c1c

Browse files
committed
compiler: Adjust targets for CXX and SIMD or OpenMP
1 parent 5c3be36 commit 1ed5c1c

2 files changed

Lines changed: 26 additions & 7 deletions

File tree

devito/passes/iet/languages/openmp.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
PragmaIteration, PragmaTransfer)
1717
from devito.passes.iet.languages.utils import joins
1818
from devito.passes.iet.languages.C import CBB
19+
from devito.passes.iet.languages.CXX import CXXBB
1920
from devito.symbolics import CondEq, DefFunction
2021
from devito.tools import filter_ordered
2122

@@ -111,7 +112,7 @@ def _generate(self):
111112
return self.pragma % (joins(*items), n)
112113

113114

114-
class OmpBB(LangBB):
115+
class AbstractOmpBB(LangBB):
115116

116117
mapper = {
117118
# Misc
@@ -134,14 +135,21 @@ class OmpBB(LangBB):
134135
'atomic':
135136
Pragma('omp atomic update')
136137
}
137-
mapper.update(CBB.mapper)
138138

139139
Region = OmpRegion
140140
HostIteration = OmpIteration
141141
DeviceIteration = DeviceOmpIteration
142142
Prodder = ThreadedProdder
143143

144144

145+
class OmpBB(AbstractOmpBB):
146+
mapper = {**AbstractOmpBB.mapper, **CBB.mapper}
147+
148+
149+
class CXXOmpBB(AbstractOmpBB):
150+
mapper = {**AbstractOmpBB.mapper, **CXXBB.mapper}
151+
152+
145153
class DeviceOmpBB(OmpBB, PragmaLangBB):
146154

147155
BackendCall = DeviceCall
@@ -213,9 +221,11 @@ class SimdOmpizer(PragmaSimdTransformer):
213221
langbb = OmpBB
214222

215223

216-
class Ompizer(PragmaShmTransformer):
224+
class CXXSimdOmpizer(PragmaSimdTransformer):
225+
langbb = CXXOmpBB
217226

218-
langbb = OmpBB
227+
228+
class AbstractOmpizer(PragmaShmTransformer):
219229

220230
@classmethod
221231
def _support_array_reduction(cls, compiler):
@@ -227,6 +237,14 @@ def _support_array_reduction(cls, compiler):
227237
return True
228238

229239

240+
class Ompizer(AbstractOmpizer):
241+
langbb = OmpBB
242+
243+
244+
class CXXOmpizer(AbstractOmpizer):
245+
langbb = CXXOmpBB
246+
247+
230248
class DeviceOmpizer(PragmaDeviceAwareTransformer):
231249
langbb = DeviceOmpBB
232250

devito/passes/iet/languages/targets.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from devito.passes.iet.languages.CXX import CXXPrinter
33
from devito.passes.iet.languages.openmp import (SimdOmpizer, Ompizer, DeviceOmpizer,
44
OmpDataManager, DeviceOmpDataManager,
5-
OmpOrchestrator, DeviceOmpOrchestrator)
5+
OmpOrchestrator, DeviceOmpOrchestrator,
6+
CXXSimdOmpizer, CXXOmpizer)
67
from devito.passes.iet.languages.openacc import (DeviceAccizer, DeviceAccDataManager,
78
AccOrchestrator, AccPrinter)
89
from devito.passes.iet.instrument import instrument
@@ -34,7 +35,7 @@ class CTarget(Target):
3435

3536

3637
class CXXTarget(Target):
37-
Parizer = SimdOmpizer
38+
Parizer = CXXSimdOmpizer
3839
DataManager = CDataManager
3940
Orchestrator = COrchestrator
4041
Printer = CXXPrinter
@@ -51,7 +52,7 @@ class COmpTarget(Target):
5152

5253

5354
class CXXOmpTarget(Target):
54-
Parizer = Ompizer
55+
Parizer = CXXOmpizer
5556
DataManager = OmpDataManager
5657
Orchestrator = OmpOrchestrator
5758
Printer = CXXPrinter

0 commit comments

Comments
 (0)