Neko 1.99.9
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) :: constrain_mixed_bc_program = c_null_ptr
31
33 type(c_ptr), public, bind(c) :: coupled_vector_bc_projector_program = &
34 c_null_ptr
35
37 type(c_ptr), public, bind(c) :: facet_normal_program = c_null_ptr
38
40 type(c_ptr), public, bind(c) :: neumann_program = c_null_ptr
41
43 type(c_ptr), public, bind(c) :: inhom_dirichlet_program = c_null_ptr
44
46 type(c_ptr), public, bind(c) :: dudxyz_program = c_null_ptr
47
49 type(c_ptr), public, bind(c) :: cdtp_program = c_null_ptr
50
52 type(c_ptr), public, bind(c) :: conv1_program = c_null_ptr
53
55 type(c_ptr), public, bind(c) :: convect_scalar_program = c_null_ptr
56
58 type(c_ptr), public, bind(c) :: set_convect_rst_program = c_null_ptr
59
61 type(c_ptr), public, bind(c) :: cfl_program = c_null_ptr
62
64 type(c_ptr), public, bind(c) :: opgrad_program = c_null_ptr
65
67 type(c_ptr), public, bind(c) :: rotate_program = c_null_ptr
68
70 type(c_ptr), public, bind(c) :: gs_program = c_null_ptr
71
73 type(c_ptr), public, bind(c) :: ax_helm_program = c_null_ptr
74
76 type(c_ptr), public, bind(c) :: ax_helm_full_program = c_null_ptr
77
79 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
80
82 type(c_ptr), public, bind(c) :: bicgstab_program = c_null_ptr
83
85 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
86
88 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
89
91 type(c_ptr), public, bind(c) :: pnpn_stress_res_program = c_null_ptr
92
94 type(c_ptr), public, bind(c) :: compressible_res_program = c_null_ptr
95
97 type(c_ptr), public, bind(c) :: &
99 type(c_ptr), public, bind(c) :: compressible_ops_compute_entropy_program = &
100 c_null_ptr
101 type(c_ptr), public, bind(c) :: compressible_ops_update_program = c_null_ptr
102
104 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
105
107 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
108
110 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
111
113 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
114
116 type(c_ptr), public, bind(c) :: cai_sagaut_model_ii_program = c_null_ptr
117
119 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
120
122 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
123
125 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
126
128 type(c_ptr), public, bind(c) :: compute_max_wave_speed_program = c_null_ptr
129
131 type(c_ptr), public, bind(c) :: mapping_program = c_null_ptr
132
134 type(c_ptr), public, bind(c) :: find_rst_legendre_program = c_null_ptr
135
137 type(c_ptr), public, bind(c) :: entropy_viscosity_program = c_null_ptr
138
140
141contains
142
144
145 if (c_associated(math_program)) then
147 call neko_error('Failed to release program')
148 end if
149 math_program = c_null_ptr
150 end if
151
152 if (c_associated(mathops_program)) then
154 call neko_error('Failed to release program')
155 end if
156 mathops_program = c_null_ptr
157 end if
158
159 if (c_associated(dirichlet_program)) then
161 call neko_error('Failed to release program')
162 end if
163 dirichlet_program = c_null_ptr
164 end if
165
166 if (c_associated(inflow_program)) then
168 call neko_error('Failed to release program')
169 end if
170 inflow_program = c_null_ptr
171 end if
172
173 if (c_associated(zero_dirichlet_program)) then
175 call neko_error('Failed to release program')
176 end if
177 zero_dirichlet_program = c_null_ptr
178 end if
179
180 if (c_associated(symmetry_program)) then
182 call neko_error('Failed to release program')
183 end if
184 symmetry_program = c_null_ptr
185 end if
186
187 if (c_associated(constrain_mixed_bc_program)) then
189 call neko_error('Failed to release program')
190 end if
191 constrain_mixed_bc_program = c_null_ptr
192 end if
193
194 if (c_associated(coupled_vector_bc_projector_program)) then
196 cl_success) then
197 call neko_error('Failed to release program')
198 end if
200 end if
201
202 if (c_associated(facet_normal_program)) then
204 call neko_error('Failed to release program')
205 end if
206 facet_normal_program = c_null_ptr
207 end if
208
209 if (c_associated(inhom_dirichlet_program)) then
211 call neko_error('Failed to release program')
212 end if
213 inhom_dirichlet_program = c_null_ptr
214 end if
215
216 if (c_associated(dudxyz_program)) then
218 call neko_error('Failed to release program')
219 end if
220 dudxyz_program = c_null_ptr
221 end if
222
223 if (c_associated(cdtp_program)) then
225 call neko_error('Failed to release program')
226 end if
227 cdtp_program = c_null_ptr
228 end if
229
230 if (c_associated(conv1_program)) then
232 call neko_error('Failed to release program')
233 end if
234 conv1_program = c_null_ptr
235 end if
236
237 if (c_associated(cfl_program)) then
239 call neko_error('Failed to release program')
240 end if
241 cfl_program = c_null_ptr
242 end if
243
244 if (c_associated(opgrad_program)) then
246 call neko_error('Failed to release program')
247 end if
248 opgrad_program = c_null_ptr
249 end if
250
251 if (c_associated(rotate_program)) then
253 call neko_error('Failed to release program')
254 end if
255 rotate_program = c_null_ptr
256 end if
257
258 if (c_associated(gs_program)) then
260 call neko_error('Failed to release program')
261 end if
262 gs_program = c_null_ptr
263 end if
264
265 if (c_associated(ax_helm_program)) then
267 call neko_error('Failed to release program')
268 end if
269 ax_helm_program = c_null_ptr
270 end if
271
272 if (c_associated(ax_helm_full_program)) then
274 call neko_error('Failed to release program')
275 end if
276 ax_helm_full_program = c_null_ptr
277 end if
278
279 if (c_associated(jacobi_program)) then
281 call neko_error('Failed to release program')
282 end if
283 jacobi_program = c_null_ptr
284 end if
285
286 if (c_associated(bicgstab_program)) then
288 call neko_error('Failed to release program')
289 end if
290 bicgstab_program = c_null_ptr
291 end if
292
293 if (c_associated(rhs_maker_program)) then
295 call neko_error('Failed to release program')
296 end if
297 rhs_maker_program = c_null_ptr
298 end if
299
300 if (c_associated(pnpn_res_program)) then
302 call neko_error('Failed to release program')
303 end if
304 pnpn_res_program = c_null_ptr
305 end if
306
307 if (c_associated(pnpn_stress_res_program)) then
309 call neko_error('Failed to release program')
310 end if
311 pnpn_stress_res_program = c_null_ptr
312 end if
313
314 if (c_associated(compressible_res_program)) then
316 call neko_error('Failed to release program')
317 end if
318 compressible_res_program = c_null_ptr
319 end if
320
323 .ne. cl_success) then
324 call neko_error('Failed to release program')
325 end if
327 end if
328
329 if (c_associated(compressible_ops_compute_entropy_program)) then
331 .ne. cl_success) then
332 call neko_error('Failed to release program')
333 end if
335 end if
336
337 if (c_associated(compressible_ops_update_program)) then
339 cl_success) then
340 call neko_error('Failed to release program')
341 end if
343 end if
344
345 if (c_associated(fdm_program)) then
347 call neko_error('Failed to release program')
348 end if
349 fdm_program = c_null_ptr
350 end if
351
352 if (c_associated(tensor_program)) then
354 call neko_error('Failed to release program')
355 end if
356 tensor_program = c_null_ptr
357 end if
358
359 if (c_associated(schwarz_program)) then
361 call neko_error('Failed to release program')
362 end if
363 schwarz_program = c_null_ptr
364 end if
365
366 if (c_associated(dong_program)) then
368 call neko_error('Failed to release program')
369 end if
370 dong_program = c_null_ptr
371 end if
372
373 if (c_associated(cai_sagaut_model_ii_program)) then
375 call neko_error('Failed to release program')
376 end if
377 cai_sagaut_model_ii_program = c_null_ptr
378 end if
379
380 if (c_associated(coef_program)) then
382 call neko_error('Failed to release program')
383 end if
384 coef_program = c_null_ptr
385 end if
386
387 if (c_associated(scalar_residual_program)) then
389 call neko_error('Failed to release program')
390 end if
391 scalar_residual_program = c_null_ptr
392 end if
393
394 if (c_associated(lambda2_program)) then
396 call neko_error('Failed to release program')
397 end if
398 lambda2_program = c_null_ptr
399 end if
400
401 if (c_associated(compute_max_wave_speed_program)) then
403 cl_success) then
404 call neko_error('Failed to release program')
405 end if
407 end if
408
409 if (c_associated(mapping_program)) then
411 call neko_error('Failed to release program')
412 end if
413 mapping_program = c_null_ptr
414 end if
415
416 if (c_associated(find_rst_legendre_program)) then
418 call neko_error('Failed to release program')
419 end if
420 find_rst_legendre_program = c_null_ptr
421 end if
422
423 if (c_associated(entropy_viscosity_program)) then
425 call neko_error('Failed to release program')
426 end if
427 entropy_viscosity_program = c_null_ptr
428 end if
429
430 end subroutine opencl_prgm_lib_release
431
432#endif
433
434end 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:79
type(c_ptr), bind(C), public opgrad_program
Device Velocity gradient kernels.
Definition prgm_lib.F90:64
type(c_ptr), bind(C), public rotate_program
Device cyclic boundary rotation kernels.
Definition prgm_lib.F90:67
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:55
type(c_ptr), bind(C), public symmetry_program
Device Symmetry kernels.
Definition prgm_lib.F90:27
type(c_ptr), bind(C), public constrain_mixed_bc_program
Device mixed BC constraint kernels.
Definition prgm_lib.F90:30
type(c_ptr), bind(C), public inhom_dirichlet_program
Device Blasius profile kernel.
Definition prgm_lib.F90:43
type(c_ptr), bind(C), public set_convect_rst_program
Device convect_rst kernels.
Definition prgm_lib.F90:58
type(c_ptr), bind(C), public compressible_ops_update_program
Definition prgm_lib.F90:101
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:113
type(c_ptr), bind(C), public conv1_program
Device convective kernels.
Definition prgm_lib.F90:52
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:76
type(c_ptr), bind(C), public dudxyz_program
Device Derivative kernels.
Definition prgm_lib.F90:46
type(c_ptr), bind(C), public coef_program
Device coef kernels.
Definition prgm_lib.F90:119
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:125
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:107
type(c_ptr), bind(C), public ax_helm_program
Device Ax helm kernels.
Definition prgm_lib.F90:73
type(c_ptr), bind(C), public cai_sagaut_model_ii_program
Device Cai-Sagaut Model-II kernels.
Definition prgm_lib.F90:116
type(c_ptr), bind(C), public cdtp_program
Device kernels.
Definition prgm_lib.F90:49
subroutine, public opencl_prgm_lib_release
Definition prgm_lib.F90:144
type(c_ptr), bind(C), public mapping_program
Device filter kernels.
Definition prgm_lib.F90:131
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:110
type(c_ptr), bind(C), public neumann_program
Device Neumann kernels.
Definition prgm_lib.F90:40
type(c_ptr), bind(C), public entropy_viscosity_program
Device entropy viscosity kernels.
Definition prgm_lib.F90:137
type(c_ptr), bind(C), public coupled_vector_bc_projector_program
Device coupled vector BC projector kernels.
Definition prgm_lib.F90:33
type(c_ptr), bind(C), public gs_program
Device Gather-Scatter kernels.
Definition prgm_lib.F90:70
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:61
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:99
type(c_ptr), bind(C), public compressible_res_program
Device compressible residual kernels.
Definition prgm_lib.F90:94
type(c_ptr), bind(C), public compute_max_wave_speed_program
Device compute_max_wave_speed kernels.
Definition prgm_lib.F90:128
type(c_ptr), bind(C), public find_rst_legendre_program
Device find rest kernels.
Definition prgm_lib.F90:134
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:88
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:85
type(c_ptr), bind(C), public bicgstab_program
Device BiCGStab kernels.
Definition prgm_lib.F90:82
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:122
type(c_ptr), bind(C), public pnpn_stress_res_program
Device pnpn residual kernels (stress formulation)
Definition prgm_lib.F90:91
type(c_ptr), bind(C), public facet_normal_program
Device Facet normal kernels.
Definition prgm_lib.F90:37
type(c_ptr), bind(C), public fdm_program
Device fdm kernels.
Definition prgm_lib.F90:104
type(c_ptr), bind(C), public compressible_ops_compute_max_wave_speed_program
Device compressible ops kernels.
Definition prgm_lib.F90:97
Utilities.
Definition utils.f90:35