Neko 1.99.2
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) :: gs_program = c_null_ptr
61
63 type(c_ptr), public, bind(c) :: ax_helm_program = c_null_ptr
64
66 type(c_ptr), public, bind(c) :: ax_helm_full_program = c_null_ptr
67
69 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
70
72 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
73
75 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
76
78 type(c_ptr), public, bind(c) :: pnpn_stress_res_program = c_null_ptr
79
81 type(c_ptr), public, bind(c) :: euler_res_program = c_null_ptr
82
84 type(c_ptr), public, bind(c) :: compressible_ops_compute_max_wave_speed_program = c_null_ptr
85 type(c_ptr), public, bind(c) :: compressible_ops_compute_entropy_program = c_null_ptr
86 type(c_ptr), public, bind(c) :: compressible_ops_update_program = c_null_ptr
87
89 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
90
92 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
93
95 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
96
98 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
99
101 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
102
104 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
105
107 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
108
110 type(c_ptr), public, bind(c) :: compute_max_wave_speed_program = c_null_ptr
111
113 type(c_ptr), public, bind(c) :: mapping_program = c_null_ptr
114
116 type(c_ptr), public, bind(c) :: find_rst_legendre_program = c_null_ptr
117
119 type(c_ptr), public, bind(c) :: entropy_viscosity_program = c_null_ptr
120
122
123contains
124
126
127 if (c_associated(math_program)) then
129 call neko_error('Failed to release program')
130 end if
131 math_program = c_null_ptr
132 end if
133
134 if (c_associated(mathops_program)) then
136 call neko_error('Failed to release program')
137 end if
138 mathops_program = c_null_ptr
139 end if
140
141 if (c_associated(dirichlet_program)) then
143 call neko_error('Failed to release program')
144 end if
145 dirichlet_program = c_null_ptr
146 end if
147
148 if (c_associated(inflow_program)) then
150 call neko_error('Failed to release program')
151 end if
152 inflow_program = c_null_ptr
153 end if
154
155 if (c_associated(zero_dirichlet_program)) then
157 call neko_error('Failed to release program')
158 end if
159 zero_dirichlet_program = c_null_ptr
160 end if
161
162 if (c_associated(symmetry_program)) then
164 call neko_error('Failed to release program')
165 end if
166 symmetry_program = c_null_ptr
167 end if
168
169 if (c_associated(facet_normal_program)) then
171 call neko_error('Failed to release program')
172 end if
173 facet_normal_program = c_null_ptr
174 end if
175
176 if (c_associated(inhom_dirichlet_program)) then
178 call neko_error('Failed to release program')
179 end if
180 inhom_dirichlet_program = c_null_ptr
181 end if
182
183 if (c_associated(dudxyz_program)) then
185 call neko_error('Failed to release program')
186 end if
187 dudxyz_program = c_null_ptr
188 end if
189
190 if (c_associated(cdtp_program)) then
192 call neko_error('Failed to release program')
193 end if
194 cdtp_program = c_null_ptr
195 end if
196
197 if (c_associated(conv1_program)) then
199 call neko_error('Failed to release program')
200 end if
201 conv1_program = c_null_ptr
202 end if
203
204 if (c_associated(cfl_program)) then
206 call neko_error('Failed to release program')
207 end if
208 cfl_program = c_null_ptr
209 end if
210
211 if (c_associated(opgrad_program)) then
213 call neko_error('Failed to release program')
214 end if
215 opgrad_program = c_null_ptr
216 end if
217
218 if (c_associated(gs_program)) then
220 call neko_error('Failed to release program')
221 end if
222 gs_program = c_null_ptr
223 end if
224
225 if (c_associated(ax_helm_program)) then
227 call neko_error('Failed to release program')
228 end if
229 ax_helm_program = c_null_ptr
230 end if
231
232 if (c_associated(ax_helm_full_program)) then
234 call neko_error('Failed to release program')
235 end if
236 ax_helm_full_program = c_null_ptr
237 end if
238
239 if (c_associated(jacobi_program)) then
241 call neko_error('Failed to release program')
242 end if
243 jacobi_program = c_null_ptr
244 end if
245
246 if (c_associated(rhs_maker_program)) then
248 call neko_error('Failed to release program')
249 end if
250 rhs_maker_program = c_null_ptr
251 end if
252
253 if (c_associated(pnpn_res_program)) then
255 call neko_error('Failed to release program')
256 end if
257 pnpn_res_program = c_null_ptr
258 end if
259
260 if (c_associated(pnpn_stress_res_program)) then
262 call neko_error('Failed to release program')
263 end if
264 pnpn_stress_res_program = c_null_ptr
265 end if
266
267 if (c_associated(euler_res_program)) then
269 call neko_error('Failed to release program')
270 end if
271 euler_res_program = c_null_ptr
272 end if
273
276 call neko_error('Failed to release program')
277 end if
279 end if
280
281 if (c_associated(compressible_ops_compute_entropy_program)) then
283 call neko_error('Failed to release program')
284 end if
286 end if
287
288 if (c_associated(compressible_ops_update_program)) then
290 call neko_error('Failed to release program')
291 end if
293 end if
294
295 if (c_associated(fdm_program)) then
297 call neko_error('Failed to release program')
298 end if
299 fdm_program = c_null_ptr
300 end if
301
302 if (c_associated(tensor_program)) then
304 call neko_error('Failed to release program')
305 end if
306 tensor_program = c_null_ptr
307 end if
308
309 if (c_associated(schwarz_program)) then
311 call neko_error('Failed to release program')
312 end if
313 schwarz_program = c_null_ptr
314 end if
315
316 if (c_associated(dong_program)) then
318 call neko_error('Failed to release program')
319 end if
320 dong_program = c_null_ptr
321 end if
322
323 if (c_associated(coef_program)) then
325 call neko_error('Failed to release program')
326 end if
327 coef_program = c_null_ptr
328 end if
329
330 if (c_associated(scalar_residual_program)) then
332 call neko_error('Failed to release program')
333 end if
334 scalar_residual_program = c_null_ptr
335 end if
336
337 if (c_associated(lambda2_program)) then
339 call neko_error('Failed to release program')
340 end if
341 lambda2_program = c_null_ptr
342 end if
343
344 if (c_associated(compute_max_wave_speed_program)) then
346 call neko_error('Failed to release program')
347 end if
349 end if
350
351 if (c_associated(mapping_program)) then
353 call neko_error('Failed to release program')
354 end if
355 mapping_program = c_null_ptr
356 end if
357
358 if (c_associated(find_rst_legendre_program)) then
360 call neko_error('Failed to release program')
361 end if
362 find_rst_legendre_program = c_null_ptr
363 end if
364
365 if (c_associated(entropy_viscosity_program)) then
367 call neko_error('Failed to release program')
368 end if
369 entropy_viscosity_program = c_null_ptr
370 end if
371
372 end subroutine opencl_prgm_lib_release
373
374#endif
375
376end 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:69
type(c_ptr), bind(C), public opgrad_program
Device Velocity gradient kernels.
Definition prgm_lib.F90:57
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:86
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:98
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:66
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:101
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:107
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:92
type(c_ptr), bind(C), public ax_helm_program
Device Ax helm kernels.
Definition prgm_lib.F90:63
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:126
type(c_ptr), bind(C), public mapping_program
Device filter kernels.
Definition prgm_lib.F90:113
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:95
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:119
type(c_ptr), bind(C), public gs_program
Device Gather-Scatter kernels.
Definition prgm_lib.F90:60
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:85
type(c_ptr), bind(C), public compute_max_wave_speed_program
Device compute_max_wave_speed kernels.
Definition prgm_lib.F90:110
type(c_ptr), bind(C), public find_rst_legendre_program
Device find rest kernels.
Definition prgm_lib.F90:116
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:75
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:72
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:104
type(c_ptr), bind(C), public euler_res_program
Device euler residual kernels.
Definition prgm_lib.F90:81
type(c_ptr), bind(C), public pnpn_stress_res_program
Device pnpn residual kernels (stress formulation)
Definition prgm_lib.F90:78
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:89
type(c_ptr), bind(C), public compressible_ops_compute_max_wave_speed_program
Device compressible ops kernels.
Definition prgm_lib.F90:84
Utilities.
Definition utils.f90:35