Neko 1.99.3
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
prgm_lib.F90
Go to the documentation of this file.
1
4 use utils, only : neko_error
5 use, intrinsic :: iso_c_binding, only : c_ptr, c_null_ptr
6 implicit none
7 private
8
9#ifdef HAVE_OPENCL
10
12 type(c_ptr), public, bind(c) :: math_program = c_null_ptr
13
15 type(c_ptr), public, bind(c) :: mathops_program = c_null_ptr
16
18 type(c_ptr), public, bind(c) :: dirichlet_program = c_null_ptr
19
21 type(c_ptr), public, bind(c) :: inflow_program = c_null_ptr
22
24 type(c_ptr), public, bind(c) :: zero_dirichlet_program = c_null_ptr
25
27 type(c_ptr), public, bind(c) :: symmetry_program = c_null_ptr
28
30 type(c_ptr), public, bind(c) :: facet_normal_program = c_null_ptr
31
33 type(c_ptr), public, bind(c) :: neumann_program = c_null_ptr
34
36 type(c_ptr), public, bind(c) :: inhom_dirichlet_program = c_null_ptr
37
39 type(c_ptr), public, bind(c) :: dudxyz_program = c_null_ptr
40
42 type(c_ptr), public, bind(c) :: cdtp_program = c_null_ptr
43
45 type(c_ptr), public, bind(c) :: conv1_program = c_null_ptr
46
48 type(c_ptr), public, bind(c) :: convect_scalar_program = c_null_ptr
49
51 type(c_ptr), public, bind(c) :: set_convect_rst_program = c_null_ptr
52
54 type(c_ptr), public, bind(c) :: cfl_program = c_null_ptr
55
57 type(c_ptr), public, bind(c) :: opgrad_program = c_null_ptr
58
60 type(c_ptr), public, bind(c) :: rotate_program = c_null_ptr
61
63 type(c_ptr), public, bind(c) :: gs_program = c_null_ptr
64
66 type(c_ptr), public, bind(c) :: ax_helm_program = c_null_ptr
67
69 type(c_ptr), public, bind(c) :: ax_helm_full_program = c_null_ptr
70
72 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
73
75 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
76
78 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
79
81 type(c_ptr), public, bind(c) :: pnpn_stress_res_program = c_null_ptr
82
84 type(c_ptr), public, bind(c) :: euler_res_program = c_null_ptr
85
87 type(c_ptr), public, bind(c) :: &
89 type(c_ptr), public, bind(c) :: compressible_ops_compute_entropy_program = &
90 c_null_ptr
91 type(c_ptr), public, bind(c) :: compressible_ops_update_program = c_null_ptr
92
94 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
95
97 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
98
100 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
101
103 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
104
106 type(c_ptr), public, bind(c) :: cai_sagaut_model_ii_program = c_null_ptr
107
109 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
110
112 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
113
115 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
116
118 type(c_ptr), public, bind(c) :: compute_max_wave_speed_program = c_null_ptr
119
121 type(c_ptr), public, bind(c) :: mapping_program = c_null_ptr
122
124 type(c_ptr), public, bind(c) :: find_rst_legendre_program = c_null_ptr
125
127 type(c_ptr), public, bind(c) :: entropy_viscosity_program = c_null_ptr
128
130
131contains
132
134
135 if (c_associated(math_program)) then
137 call neko_error('Failed to release program')
138 end if
139 math_program = c_null_ptr
140 end if
141
142 if (c_associated(mathops_program)) then
144 call neko_error('Failed to release program')
145 end if
146 mathops_program = c_null_ptr
147 end if
148
149 if (c_associated(dirichlet_program)) then
151 call neko_error('Failed to release program')
152 end if
153 dirichlet_program = c_null_ptr
154 end if
155
156 if (c_associated(inflow_program)) then
158 call neko_error('Failed to release program')
159 end if
160 inflow_program = c_null_ptr
161 end if
162
163 if (c_associated(zero_dirichlet_program)) then
165 call neko_error('Failed to release program')
166 end if
167 zero_dirichlet_program = c_null_ptr
168 end if
169
170 if (c_associated(symmetry_program)) then
172 call neko_error('Failed to release program')
173 end if
174 symmetry_program = c_null_ptr
175 end if
176
177 if (c_associated(facet_normal_program)) then
179 call neko_error('Failed to release program')
180 end if
181 facet_normal_program = c_null_ptr
182 end if
183
184 if (c_associated(inhom_dirichlet_program)) then
186 call neko_error('Failed to release program')
187 end if
188 inhom_dirichlet_program = c_null_ptr
189 end if
190
191 if (c_associated(dudxyz_program)) then
193 call neko_error('Failed to release program')
194 end if
195 dudxyz_program = c_null_ptr
196 end if
197
198 if (c_associated(cdtp_program)) then
200 call neko_error('Failed to release program')
201 end if
202 cdtp_program = c_null_ptr
203 end if
204
205 if (c_associated(conv1_program)) then
207 call neko_error('Failed to release program')
208 end if
209 conv1_program = c_null_ptr
210 end if
211
212 if (c_associated(cfl_program)) then
214 call neko_error('Failed to release program')
215 end if
216 cfl_program = c_null_ptr
217 end if
218
219 if (c_associated(opgrad_program)) then
221 call neko_error('Failed to release program')
222 end if
223 opgrad_program = c_null_ptr
224 end if
225
226 if (c_associated(rotate_program)) then
228 call neko_error('Failed to release program')
229 end if
230 rotate_program = c_null_ptr
231 end if
232
233 if (c_associated(gs_program)) then
235 call neko_error('Failed to release program')
236 end if
237 gs_program = c_null_ptr
238 end if
239
240 if (c_associated(ax_helm_program)) then
242 call neko_error('Failed to release program')
243 end if
244 ax_helm_program = c_null_ptr
245 end if
246
247 if (c_associated(ax_helm_full_program)) then
249 call neko_error('Failed to release program')
250 end if
251 ax_helm_full_program = c_null_ptr
252 end if
253
254 if (c_associated(jacobi_program)) then
256 call neko_error('Failed to release program')
257 end if
258 jacobi_program = c_null_ptr
259 end if
260
261 if (c_associated(rhs_maker_program)) then
263 call neko_error('Failed to release program')
264 end if
265 rhs_maker_program = c_null_ptr
266 end if
267
268 if (c_associated(pnpn_res_program)) then
270 call neko_error('Failed to release program')
271 end if
272 pnpn_res_program = c_null_ptr
273 end if
274
275 if (c_associated(pnpn_stress_res_program)) then
277 call neko_error('Failed to release program')
278 end if
279 pnpn_stress_res_program = c_null_ptr
280 end if
281
282 if (c_associated(euler_res_program)) then
284 call neko_error('Failed to release program')
285 end if
286 euler_res_program = c_null_ptr
287 end if
288
291 .ne. cl_success) then
292 call neko_error('Failed to release program')
293 end if
295 end if
296
297 if (c_associated(compressible_ops_compute_entropy_program)) then
299 .ne. cl_success) then
300 call neko_error('Failed to release program')
301 end if
303 end if
304
305 if (c_associated(compressible_ops_update_program)) then
307 cl_success) then
308 call neko_error('Failed to release program')
309 end if
311 end if
312
313 if (c_associated(fdm_program)) then
315 call neko_error('Failed to release program')
316 end if
317 fdm_program = c_null_ptr
318 end if
319
320 if (c_associated(tensor_program)) then
322 call neko_error('Failed to release program')
323 end if
324 tensor_program = c_null_ptr
325 end if
326
327 if (c_associated(schwarz_program)) then
329 call neko_error('Failed to release program')
330 end if
331 schwarz_program = c_null_ptr
332 end if
333
334 if (c_associated(dong_program)) then
336 call neko_error('Failed to release program')
337 end if
338 dong_program = c_null_ptr
339 end if
340
341 if (c_associated(cai_sagaut_model_ii_program)) then
343 call neko_error('Failed to release program')
344 end if
345 cai_sagaut_model_ii_program = c_null_ptr
346 end if
347
348 if (c_associated(coef_program)) then
350 call neko_error('Failed to release program')
351 end if
352 coef_program = c_null_ptr
353 end if
354
355 if (c_associated(scalar_residual_program)) then
357 call neko_error('Failed to release program')
358 end if
359 scalar_residual_program = c_null_ptr
360 end if
361
362 if (c_associated(lambda2_program)) then
364 call neko_error('Failed to release program')
365 end if
366 lambda2_program = c_null_ptr
367 end if
368
369 if (c_associated(compute_max_wave_speed_program)) then
371 cl_success) then
372 call neko_error('Failed to release program')
373 end if
375 end if
376
377 if (c_associated(mapping_program)) then
379 call neko_error('Failed to release program')
380 end if
381 mapping_program = c_null_ptr
382 end if
383
384 if (c_associated(find_rst_legendre_program)) then
386 call neko_error('Failed to release program')
387 end if
388 find_rst_legendre_program = c_null_ptr
389 end if
390
391 if (c_associated(entropy_viscosity_program)) then
393 call neko_error('Failed to release program')
394 end if
395 entropy_viscosity_program = c_null_ptr
396 end if
397
398 end subroutine opencl_prgm_lib_release
399
400#endif
401
402end module opencl_prgm_lib
Fortran OpenCL interface.
OpenCL JIT program library.
Definition prgm_lib.F90:2
type(c_ptr), bind(C), public jacobi_program
Device jacobi kernels.
Definition prgm_lib.F90:72
type(c_ptr), bind(C), public opgrad_program
Device Velocity gradient kernels.
Definition prgm_lib.F90:57
type(c_ptr), bind(C), public rotate_program
Device cyclic boundary rotation kernels.
Definition prgm_lib.F90:60
type(c_ptr), bind(C), public math_program
Device math kernels.
Definition prgm_lib.F90:12
type(c_ptr), bind(C), public convect_scalar_program
Device convective kernels for oifs.
Definition prgm_lib.F90:48
type(c_ptr), bind(C), public symmetry_program
Device Symmetry kernels.
Definition prgm_lib.F90:27
type(c_ptr), bind(C), public inhom_dirichlet_program
Device Blasius profile kernel.
Definition prgm_lib.F90:36
type(c_ptr), bind(C), public set_convect_rst_program
Device convect_rst kernels.
Definition prgm_lib.F90:51
type(c_ptr), bind(C), public compressible_ops_update_program
Definition prgm_lib.F90:91
type(c_ptr), bind(C), public mathops_program
Device mathops kernels.
Definition prgm_lib.F90:15
type(c_ptr), bind(C), public dong_program
Device dong kernels.
Definition prgm_lib.F90:103
type(c_ptr), bind(C), public conv1_program
Device convective kernels.
Definition prgm_lib.F90:45
type(c_ptr), bind(C), public inflow_program
Device Inflow kernels.
Definition prgm_lib.F90:21
type(c_ptr), bind(C), public ax_helm_full_program
Device Ax helm full kernels.
Definition prgm_lib.F90:69
type(c_ptr), bind(C), public dudxyz_program
Device Derivative kernels.
Definition prgm_lib.F90:39
type(c_ptr), bind(C), public coef_program
Device coef kernels.
Definition prgm_lib.F90:109
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:115
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:97
type(c_ptr), bind(C), public ax_helm_program
Device Ax helm kernels.
Definition prgm_lib.F90:66
type(c_ptr), bind(C), public cai_sagaut_model_ii_program
Device Cai-Sagaut Model-II kernels.
Definition prgm_lib.F90:106
type(c_ptr), bind(C), public cdtp_program
Device kernels.
Definition prgm_lib.F90:42
subroutine, public opencl_prgm_lib_release
Definition prgm_lib.F90:134
type(c_ptr), bind(C), public mapping_program
Device filter kernels.
Definition prgm_lib.F90:121
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:100
type(c_ptr), bind(C), public neumann_program
Device Neumann kernels.
Definition prgm_lib.F90:33
type(c_ptr), bind(C), public entropy_viscosity_program
Device entropy viscosity kernels.
Definition prgm_lib.F90:127
type(c_ptr), bind(C), public gs_program
Device Gather-Scatter kernels.
Definition prgm_lib.F90:63
type(c_ptr), bind(C), public zero_dirichlet_program
Device zero dirichlet kernels.
Definition prgm_lib.F90:24
type(c_ptr), bind(C), public cfl_program
Device CFL kernels.
Definition prgm_lib.F90:54
type(c_ptr), bind(C), public dirichlet_program
Device Dirichlet kernels.
Definition prgm_lib.F90:18
type(c_ptr), bind(C), public compressible_ops_compute_entropy_program
Definition prgm_lib.F90:89
type(c_ptr), bind(C), public compute_max_wave_speed_program
Device compute_max_wave_speed kernels.
Definition prgm_lib.F90:118
type(c_ptr), bind(C), public find_rst_legendre_program
Device find rest kernels.
Definition prgm_lib.F90:124
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:78
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:75
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:112
type(c_ptr), bind(C), public euler_res_program
Device euler residual kernels.
Definition prgm_lib.F90:84
type(c_ptr), bind(C), public pnpn_stress_res_program
Device pnpn residual kernels (stress formulation)
Definition prgm_lib.F90:81
type(c_ptr), bind(C), public facet_normal_program
Device Facet normal kernels.
Definition prgm_lib.F90:30
type(c_ptr), bind(C), public fdm_program
Device fdm kernels.
Definition prgm_lib.F90:94
type(c_ptr), bind(C), public compressible_ops_compute_max_wave_speed_program
Device compressible ops kernels.
Definition prgm_lib.F90:87
Utilities.
Definition utils.f90:35