16 template_parameters = [DSL.SyntaxTree.Argument(
"NC", DSL.SyntaxTree.TInteger()),
17 DSL.SyntaxTree.Argument(
"H", DSL.SyntaxTree.TInteger()),
18 DSL.SyntaxTree.Argument(
"NumberOfUnknowns", DSL.SyntaxTree.TInteger()),
19 DSL.SyntaxTree.Argument(
"NumberOfAuxiliaryVariables", DSL.SyntaxTree.TInteger()),
20 DSL.SyntaxTree.Argument(
"KOsigma", DSL.SyntaxTree.TInteger()),
21 DSL.SyntaxTree.Argument(
"EvaluateFlux", DSL.SyntaxTree.TBoolean()),
22 DSL.SyntaxTree.Argument(
"EvaluateNonconservativeProduct", DSL.SyntaxTree.TBoolean()),
23 DSL.SyntaxTree.Argument(
"EvaluateSource", DSL.SyntaxTree.TBoolean()),
24 DSL.SyntaxTree.Argument(
"copyOldTimeStepAndScaleWithTimeStepSize", DSL.SyntaxTree.TBoolean()),
25 DSL.SyntaxTree.Argument(
"SecondOrderFormulation", DSL.SyntaxTree.TBoolean()),
26 DSL.SyntaxTree.Argument(
"FirstOrderFormulation", DSL.SyntaxTree.TBoolean())]
28 functor_arguments = [DSL.SyntaxTree.Argument(
"flux", DSL.SyntaxTree.TCustom(
"const Flux&")),
29 DSL.SyntaxTree.Argument(
"nonconservativeProduct", DSL.SyntaxTree.TCustom(
"const NonconservativeProduct&")),
30 DSL.SyntaxTree.Argument(
"sourceTerm", DSL.SyntaxTree.TCustom(
"const Source&"))]
32 FD4InExaGRyPE_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4InExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4"])
33 FD4InExaGRyPE_kernel = FD4InExaGRyPE_tree.print_cpp()
34 FD4InExaGRyPE_call_with_measurement = FD4InExaGRyPE_tree.print_definition_with_timer()
35 FD4InExaGRyPE_kernel_declaration = FD4InExaGRyPE_tree.print_declaration()
36 FD4InExaGRyPE_call_with_measurement_declaration = FD4InExaGRyPE_tree.print_declaration_with_timer()
38 FD4InExaGRyPE_stateless_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4InExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4"], stateless=
True)
39 FD4InExaGRyPE_stateless_kernel = FD4InExaGRyPE_stateless_tree.print_cpp()
40 FD4InExaGRyPE_stateless_call_with_measurement = FD4InExaGRyPE_stateless_tree.print_definition_with_timer()
41 FD4InExaGRyPE_stateless_kernel_declaration = FD4InExaGRyPE_stateless_tree.print_declaration()
42 FD4InExaGRyPE_stateless_call_with_measurement_declaration = FD4InExaGRyPE_stateless_tree.print_declaration_with_timer()
50 FD4InExaGRyPE_omp_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4InExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"])
51 FD4InExaGRyPE_omp_kernel = FD4InExaGRyPE_omp_tree.print_omp()
52 FD4InExaGRyPE_omp_call_with_measurement = FD4InExaGRyPE_omp_tree.print_definition_with_timer()
53 FD4InExaGRyPE_omp_kernel_declaration = FD4InExaGRyPE_omp_tree.print_declaration()
54 FD4InExaGRyPE_omp_call_with_measurement_declaration = FD4InExaGRyPE_omp_tree.print_declaration_with_timer()
56 FD4InExaGRyPE_omp_stateless_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4InExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"], stateless=
True)
57 FD4InExaGRyPE_omp_stateless_kernel = FD4InExaGRyPE_omp_stateless_tree.print_omp()
58 FD4InExaGRyPE_omp_stateless_call_with_measurement = FD4InExaGRyPE_omp_stateless_tree.print_definition_with_timer()
59 FD4InExaGRyPE_omp_stateless_kernel_declaration = FD4InExaGRyPE_omp_stateless_tree.print_declaration()
60 FD4InExaGRyPE_omp_stateless_call_with_measurement_declaration = FD4InExaGRyPE_omp_stateless_tree.print_declaration_with_timer()
62 FD4InExaGRyPE_omp_accelerator_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4InExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"], stateless=
True, use_accelerator=
True)
63 FD4InExaGRyPE_omp_accelerator_kernel = FD4InExaGRyPE_omp_accelerator_tree.print_omp()
64 FD4InExaGRyPE_omp_accelerator_call_with_measurement = FD4InExaGRyPE_omp_accelerator_tree.print_definition_with_timer()
65 FD4InExaGRyPE_omp_accelerator_kernel_declaration = FD4InExaGRyPE_omp_accelerator_tree.print_declaration()
66 FD4InExaGRyPE_omp_accelerator_call_with_measurement_declaration = FD4InExaGRyPE_omp_accelerator_tree.print_declaration_with_timer()
68 FD4InExaGRyPE_sycl_accelerator_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4InExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"sycl"], stateless=
True, use_accelerator=
True)
69 FD4InExaGRyPE_sycl_accelerator_kernel = FD4InExaGRyPE_sycl_accelerator_tree.print_sycl()
70 FD4InExaGRyPE_sycl_accelerator_call_with_measurement = FD4InExaGRyPE_sycl_accelerator_tree.print_definition_with_timer()
71 FD4InExaGRyPE_sycl_accelerator_kernel_declaration = FD4InExaGRyPE_sycl_accelerator_tree.print_declaration()
72 FD4InExaGRyPE_sycl_accelerator_call_with_measurement_declaration = FD4InExaGRyPE_sycl_accelerator_tree.print_declaration_with_timer()
74 if not os.path.exists(
"kernels"):
75 os.makedirs(
"kernels")
77 file = open(
"kernels/FD4InExaGRyPE.h",
"w")
78 file.write(f
"""#pragma once
79#include "exahype2/CellData.h"
80#include "exahype2/VolumeIndex.h"
81#include "exahype2/fd/PatchUtils.h"
82#include "exahype2/fd/Functors.h"
83#include "peano4/utils/Loop.h"
84#include "tarch/timing/Measurement.h"
85#include "tarch/timing/Watch.h"
87{FD4InExaGRyPE_kernel_declaration}
88{FD4InExaGRyPE_call_with_measurement_declaration}
89{FD4InExaGRyPE_stateless_kernel_declaration}
90{FD4InExaGRyPE_stateless_call_with_measurement_declaration}
93{FD4InExaGRyPE_omp_kernel_declaration}
94{FD4InExaGRyPE_omp_call_with_measurement_declaration}
95{FD4InExaGRyPE_omp_stateless_kernel_declaration}
96{FD4InExaGRyPE_omp_stateless_call_with_measurement_declaration}
99#if defined(GPUOffloadingOMP)
100{FD4InExaGRyPE_omp_accelerator_kernel_declaration}
101{FD4InExaGRyPE_omp_accelerator_call_with_measurement_declaration}
104#if defined(GPUOffloadingSYCL)
105{FD4InExaGRyPE_sycl_accelerator_kernel_declaration}
106{FD4InExaGRyPE_sycl_accelerator_call_with_measurement_declaration}
109#include "FD4InExaGRyPE.cpph"
113 file = open(
"kernels/FD4InExaGRyPE.cpph",
"w")
114 file.write(FD4InExaGRyPE_kernel)
115 file.write(FD4InExaGRyPE_call_with_measurement)
116 file.write(FD4InExaGRyPE_stateless_kernel)
117 file.write(FD4InExaGRyPE_stateless_call_with_measurement)
119 file.write(
"#if defined(SharedOMP)\n")
120 file.write(FD4InExaGRyPE_omp_kernel)
121 file.write(FD4InExaGRyPE_omp_call_with_measurement)
122 file.write(FD4InExaGRyPE_omp_stateless_kernel)
123 file.write(FD4InExaGRyPE_omp_stateless_call_with_measurement)
124 file.write(
"#endif\n")
126 file.write(
"#if defined(GPUOffloadingOMP)\n")
127 file.write(FD4InExaGRyPE_omp_accelerator_kernel)
128 file.write(FD4InExaGRyPE_omp_accelerator_call_with_measurement)
129 file.write(
"#endif\n")
131 file.write(
"#if defined(GPUOffloadingSYCL)\n")
132 file.write(FD4InExaGRyPE_sycl_accelerator_kernel)
133 file.write(FD4InExaGRyPE_sycl_accelerator_call_with_measurement)
134 file.write(
"#endif\n")
138 template_parameters = [DSL.SyntaxTree.Argument(
"NC", DSL.SyntaxTree.TInteger()),
139 DSL.SyntaxTree.Argument(
"H", DSL.SyntaxTree.TInteger()),
140 DSL.SyntaxTree.Argument(
"NumberOfUnknowns", DSL.SyntaxTree.TInteger()),
141 DSL.SyntaxTree.Argument(
"NumberOfAuxiliaryVariables", DSL.SyntaxTree.TInteger()),
142 DSL.SyntaxTree.Argument(
"SecondOrderFormulation", DSL.SyntaxTree.TBoolean())]
144 functor_arguments = []
146 DeriCallInExaGRyPE_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.DerivativesCalInExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4"])
147 DeriCallInExaGRyPE_kernel = DeriCallInExaGRyPE_tree.print_cpp()
148 DeriCallInExaGRyPE_call_with_measurement = DeriCallInExaGRyPE_tree.print_definition_with_timer()
149 DeriCallInExaGRyPE_kernel_declaration = DeriCallInExaGRyPE_tree.print_declaration()
150 DeriCallInExaGRyPE_call_with_measurement_declaration = DeriCallInExaGRyPE_tree.print_declaration_with_timer()
152 DeriCallInExaGRyPE_stateless_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.DerivativesCalInExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4"], stateless=
True)
153 DeriCallInExaGRyPE_stateless_kernel = DeriCallInExaGRyPE_stateless_tree.print_cpp()
154 DeriCallInExaGRyPE_stateless_call_with_measurement = DeriCallInExaGRyPE_stateless_tree.print_definition_with_timer()
155 DeriCallInExaGRyPE_stateless_kernel_declaration = DeriCallInExaGRyPE_stateless_tree.print_declaration()
156 DeriCallInExaGRyPE_stateless_call_with_measurement_declaration = DeriCallInExaGRyPE_stateless_tree.print_declaration_with_timer()
164 DeriCallInExaGRyPE_omp_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.DerivativesCalInExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"])
165 DeriCallInExaGRyPE_omp_kernel = DeriCallInExaGRyPE_omp_tree.print_omp()
166 DeriCallInExaGRyPE_omp_call_with_measurement = DeriCallInExaGRyPE_omp_tree.print_definition_with_timer()
167 DeriCallInExaGRyPE_omp_kernel_declaration = DeriCallInExaGRyPE_omp_tree.print_declaration()
168 DeriCallInExaGRyPE_omp_call_with_measurement_declaration = DeriCallInExaGRyPE_omp_tree.print_declaration_with_timer()
170 DeriCallInExaGRyPE_omp_stateless_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.DerivativesCalInExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"], stateless=
True)
171 DeriCallInExaGRyPE_omp_stateless_kernel = DeriCallInExaGRyPE_omp_stateless_tree.print_omp()
172 DeriCallInExaGRyPE_omp_stateless_call_with_measurement = DeriCallInExaGRyPE_omp_stateless_tree.print_definition_with_timer()
173 DeriCallInExaGRyPE_omp_stateless_kernel_declaration = DeriCallInExaGRyPE_omp_stateless_tree.print_declaration()
174 DeriCallInExaGRyPE_omp_stateless_call_with_measurement_declaration = DeriCallInExaGRyPE_omp_stateless_tree.print_declaration_with_timer()
176 DeriCallInExaGRyPE_omp_accelerator_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.DerivativesCalInExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"], stateless=
True, use_accelerator=
True)
177 DeriCallInExaGRyPE_omp_accelerator_kernel = DeriCallInExaGRyPE_omp_accelerator_tree.print_omp()
178 DeriCallInExaGRyPE_omp_accelerator_call_with_measurement = DeriCallInExaGRyPE_omp_accelerator_tree.print_definition_with_timer()
179 DeriCallInExaGRyPE_omp_accelerator_kernel_declaration = DeriCallInExaGRyPE_omp_accelerator_tree.print_declaration()
180 DeriCallInExaGRyPE_omp_accelerator_call_with_measurement_declaration = DeriCallInExaGRyPE_omp_accelerator_tree.print_declaration_with_timer()
182 DeriCallInExaGRyPE_sycl_accelerator_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.DerivativesCalInExaGRyPE, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"sycl"], stateless=
True, use_accelerator=
True)
183 DeriCallInExaGRyPE_sycl_accelerator_kernel = DeriCallInExaGRyPE_sycl_accelerator_tree.print_sycl()
184 DeriCallInExaGRyPE_sycl_accelerator_call_with_measurement = DeriCallInExaGRyPE_sycl_accelerator_tree.print_definition_with_timer()
185 DeriCallInExaGRyPE_sycl_accelerator_kernel_declaration = DeriCallInExaGRyPE_sycl_accelerator_tree.print_declaration()
186 DeriCallInExaGRyPE_sycl_accelerator_call_with_measurement_declaration = DeriCallInExaGRyPE_sycl_accelerator_tree.print_declaration_with_timer()
188 if not os.path.exists(
"kernels"):
189 os.makedirs(
"kernels")
191 file = open(
"kernels/DeriCallInExaGRyPE.h",
"w")
192 file.write(f
"""#pragma once
193#include "exahype2/CellData.h"
194#include "exahype2/VolumeIndex.h"
195#include "exahype2/fd/PatchUtils.h"
196#include "exahype2/fd/Functors.h"
197#include "peano4/utils/Loop.h"
198#include "tarch/timing/Measurement.h"
199#include "tarch/timing/Watch.h"
201{DeriCallInExaGRyPE_kernel_declaration}
202{DeriCallInExaGRyPE_call_with_measurement_declaration}
203{DeriCallInExaGRyPE_stateless_kernel_declaration}
204{DeriCallInExaGRyPE_stateless_call_with_measurement_declaration}
206#if defined(SharedOMP)
207{DeriCallInExaGRyPE_omp_kernel_declaration}
208{DeriCallInExaGRyPE_omp_call_with_measurement_declaration}
209{DeriCallInExaGRyPE_omp_stateless_kernel_declaration}
210{DeriCallInExaGRyPE_omp_stateless_call_with_measurement_declaration}
213#if defined(GPUOffloadingOMP)
214{DeriCallInExaGRyPE_omp_accelerator_kernel_declaration}
215{DeriCallInExaGRyPE_omp_accelerator_call_with_measurement_declaration}
218#if defined(GPUOffloadingSYCL)
219{DeriCallInExaGRyPE_sycl_accelerator_kernel_declaration}
220{DeriCallInExaGRyPE_sycl_accelerator_call_with_measurement_declaration}
223#include "DeriCallInExaGRyPE.cpph"
227 file = open(
"kernels/DeriCallInExaGRyPE.cpph",
"w")
228 file.write(DeriCallInExaGRyPE_kernel)
229 file.write(DeriCallInExaGRyPE_call_with_measurement)
230 file.write(DeriCallInExaGRyPE_stateless_kernel)
231 file.write(DeriCallInExaGRyPE_stateless_call_with_measurement)
233 file.write(
"#if defined(SharedOMP)\n")
234 file.write(DeriCallInExaGRyPE_omp_kernel)
235 file.write(DeriCallInExaGRyPE_omp_call_with_measurement)
236 file.write(DeriCallInExaGRyPE_omp_stateless_kernel)
237 file.write(DeriCallInExaGRyPE_omp_stateless_call_with_measurement)
238 file.write(
"#endif\n")
240 file.write(
"#if defined(GPUOffloadingOMP)\n")
241 file.write(DeriCallInExaGRyPE_omp_accelerator_kernel)
242 file.write(DeriCallInExaGRyPE_omp_accelerator_call_with_measurement)
243 file.write(
"#endif\n")
245 file.write(
"#if defined(GPUOffloadingSYCL)\n")
246 file.write(DeriCallInExaGRyPE_sycl_accelerator_kernel)
247 file.write(DeriCallInExaGRyPE_sycl_accelerator_call_with_measurement)
248 file.write(
"#endif\n")
252 template_parameters = [DSL.SyntaxTree.Argument(
"NC", DSL.SyntaxTree.TInteger()),
253 DSL.SyntaxTree.Argument(
"H", DSL.SyntaxTree.TInteger()),
254 DSL.SyntaxTree.Argument(
"NumberOfUnknowns", DSL.SyntaxTree.TInteger()),
255 DSL.SyntaxTree.Argument(
"NumberOfAuxiliaryVariables", DSL.SyntaxTree.TInteger()),
256 DSL.SyntaxTree.Argument(
"KOsigma", DSL.SyntaxTree.TInteger()),
257 DSL.SyntaxTree.Argument(
"EvaluateFlux", DSL.SyntaxTree.TBoolean()),
258 DSL.SyntaxTree.Argument(
"EvaluateNonconservativeProduct", DSL.SyntaxTree.TBoolean()),
259 DSL.SyntaxTree.Argument(
"EvaluateSource", DSL.SyntaxTree.TBoolean()),
260 DSL.SyntaxTree.Argument(
"copyOldTimeStepAndScaleWithTimeStepSize", DSL.SyntaxTree.TBoolean())]
262 functor_arguments = [DSL.SyntaxTree.Argument(
"flux", DSL.SyntaxTree.TCustom(
"const Flux&")),
263 DSL.SyntaxTree.Argument(
"nonconservativeProduct", DSL.SyntaxTree.TCustom(
"const NonconservativeProduct&")),
264 DSL.SyntaxTree.Argument(
"sourceTerm", DSL.SyntaxTree.TCustom(
"const Source&"))]
266 FD4_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4"])
267 FD4_kernel = FD4_tree.print_cpp()
268 FD4_call_with_measurement = FD4_tree.print_definition_with_timer()
269 FD4_kernel_declaration = FD4_tree.print_declaration()
270 FD4_call_with_measurement_declaration = FD4_tree.print_declaration_with_timer()
272 FD4_stateless_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4"], stateless=
True)
273 FD4_stateless_kernel = FD4_stateless_tree.print_cpp()
274 FD4_stateless_call_with_measurement = FD4_stateless_tree.print_definition_with_timer()
275 FD4_stateless_kernel_declaration = FD4_stateless_tree.print_declaration()
276 FD4_stateless_call_with_measurement_declaration = FD4_stateless_tree.print_declaration_with_timer()
284 FD4_omp_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"])
285 FD4_omp_kernel = FD4_omp_tree.print_omp()
286 FD4_omp_call_with_measurement = FD4_omp_tree.print_definition_with_timer()
287 FD4_omp_kernel_declaration = FD4_omp_tree.print_declaration()
288 FD4_omp_call_with_measurement_declaration = FD4_omp_tree.print_declaration_with_timer()
290 FD4_omp_stateless_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"], stateless=
True)
291 FD4_omp_stateless_kernel = FD4_omp_stateless_tree.print_omp()
292 FD4_omp_stateless_call_with_measurement = FD4_omp_stateless_tree.print_definition_with_timer()
293 FD4_omp_stateless_kernel_declaration = FD4_omp_stateless_tree.print_declaration()
294 FD4_omp_stateless_call_with_measurement_declaration = FD4_omp_stateless_tree.print_declaration_with_timer()
296 FD4_omp_accelerator_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"omp"], stateless=
True, use_accelerator=
True)
297 FD4_omp_accelerator_kernel = FD4_omp_accelerator_tree.print_omp()
298 FD4_omp_accelerator_call_with_measurement = FD4_omp_accelerator_tree.print_definition_with_timer()
299 FD4_omp_accelerator_kernel_declaration = FD4_omp_accelerator_tree.print_declaration()
300 FD4_omp_accelerator_call_with_measurement_declaration = FD4_omp_accelerator_tree.print_declaration_with_timer()
302 FD4_sycl_accelerator_tree = DSL.Parser().parse(exahype2.solvers.rkfd.fd4.timeStepWithFD4, template_parameters, functor_arguments, [
"exahype2",
"fd",
"fd4",
"sycl"], stateless=
True, use_accelerator=
True)
303 FD4_sycl_accelerator_kernel = FD4_sycl_accelerator_tree.print_sycl()
304 FD4_sycl_accelerator_call_with_measurement = FD4_sycl_accelerator_tree.print_definition_with_timer()
305 FD4_sycl_accelerator_kernel_declaration = FD4_sycl_accelerator_tree.print_declaration()
306 FD4_sycl_accelerator_call_with_measurement_declaration = FD4_sycl_accelerator_tree.print_declaration_with_timer()
308 if not os.path.exists(
"kernels"):
309 os.makedirs(
"kernels")
311 file = open(
"kernels/FD4.h",
"w")
312 file.write(f
"""#pragma once
313#include "exahype2/CellData.h"
314#include "exahype2/VolumeIndex.h"
315#include "exahype2/fd/PatchUtils.h"
316#include "exahype2/fd/Functors.h"
317#include "peano4/utils/Loop.h"
318#include "tarch/timing/Measurement.h"
319#include "tarch/timing/Watch.h"
321{FD4_kernel_declaration}
322{FD4_call_with_measurement_declaration}
323{FD4_stateless_kernel_declaration}
324{FD4_stateless_call_with_measurement_declaration}
326#if defined(SharedOMP)
327{FD4_omp_kernel_declaration}
328{FD4_omp_call_with_measurement_declaration}
329{FD4_omp_stateless_kernel_declaration}
330{FD4_omp_stateless_call_with_measurement_declaration}
333#if defined(GPUOffloadingOMP)
334{FD4_omp_accelerator_kernel_declaration}
335{FD4_omp_accelerator_call_with_measurement_declaration}
338#if defined(GPUOffloadingSYCL)
339{FD4_sycl_accelerator_kernel_declaration}
340{FD4_sycl_accelerator_call_with_measurement_declaration}
347 file = open(
"kernels/FD4.cpph",
"w")
348 file.write(FD4_kernel)
349 file.write(FD4_call_with_measurement)
350 file.write(FD4_stateless_kernel)
351 file.write(FD4_stateless_call_with_measurement)
353 file.write(
"#if defined(SharedOMP)\n")
354 file.write(FD4_omp_kernel)
355 file.write(FD4_omp_call_with_measurement)
356 file.write(FD4_omp_stateless_kernel)
357 file.write(FD4_omp_stateless_call_with_measurement)
358 file.write(
"#endif\n")
360 file.write(
"#if defined(GPUOffloadingOMP)\n")
361 file.write(FD4_omp_accelerator_kernel)
362 file.write(FD4_omp_accelerator_call_with_measurement)
363 file.write(
"#endif\n")
365 file.write(
"#if defined(GPUOffloadingSYCL)\n")
366 file.write(FD4_sycl_accelerator_kernel)
367 file.write(FD4_sycl_accelerator_call_with_measurement)
368 file.write(
"#endif\n")