Neko 1.99.1
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) :: cfl_program = c_null_ptr
49
51 type(c_ptr), public, bind(c) :: opgrad_program = c_null_ptr
52
54 type(c_ptr), public, bind(c) :: gs_program = c_null_ptr
55
57 type(c_ptr), public, bind(c) :: ax_helm_program = c_null_ptr
58
60 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
61
63 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
64
66 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
67
69 type(c_ptr), public, bind(c) :: euler_res_program = c_null_ptr
70
72 type(c_ptr), public, bind(c) :: compressible_ops_compute_max_wave_speed_program = c_null_ptr
73 type(c_ptr), public, bind(c) :: compressible_ops_compute_entropy_program = c_null_ptr
74
76 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
77
79 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
80
82 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
83
85 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
86
88 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
89
91 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
92
94 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
95
97 type(c_ptr), public, bind(c) :: compute_max_wave_speed_program = c_null_ptr
98
100 type(c_ptr), public, bind(c) :: mapping_program = c_null_ptr
101
103
104contains
105
107
108 if (c_associated(math_program)) then
110 call neko_error('Failed to release program')
111 end if
112 math_program = c_null_ptr
113 end if
114
115 if (c_associated(mathops_program)) then
117 call neko_error('Failed to release program')
118 end if
119 mathops_program = c_null_ptr
120 end if
121
122 if (c_associated(dirichlet_program)) then
124 call neko_error('Failed to release program')
125 end if
126 dirichlet_program = c_null_ptr
127 end if
128
129 if (c_associated(inflow_program)) then
131 call neko_error('Failed to release program')
132 end if
133 inflow_program = c_null_ptr
134 end if
135
136 if (c_associated(zero_dirichlet_program)) then
138 call neko_error('Failed to release program')
139 end if
140 zero_dirichlet_program = c_null_ptr
141 end if
142
143 if (c_associated(symmetry_program)) then
145 call neko_error('Failed to release program')
146 end if
147 symmetry_program = c_null_ptr
148 end if
149
150 if (c_associated(facet_normal_program)) then
152 call neko_error('Failed to release program')
153 end if
154 facet_normal_program = c_null_ptr
155 end if
156
157 if (c_associated(inhom_dirichlet_program)) then
159 call neko_error('Failed to release program')
160 end if
161 inhom_dirichlet_program = c_null_ptr
162 end if
163
164 if (c_associated(dudxyz_program)) then
166 call neko_error('Failed to release program')
167 end if
168 dudxyz_program = c_null_ptr
169 end if
170
171 if (c_associated(cdtp_program)) then
173 call neko_error('Failed to release program')
174 end if
175 cdtp_program = c_null_ptr
176 end if
177
178 if (c_associated(conv1_program)) then
180 call neko_error('Failed to release program')
181 end if
182 conv1_program = c_null_ptr
183 end if
184
185 if (c_associated(cfl_program)) then
187 call neko_error('Failed to release program')
188 end if
189 cfl_program = c_null_ptr
190 end if
191
192 if (c_associated(opgrad_program)) then
194 call neko_error('Failed to release program')
195 end if
196 opgrad_program = c_null_ptr
197 end if
198
199 if (c_associated(gs_program)) then
201 call neko_error('Failed to release program')
202 end if
203 gs_program = c_null_ptr
204 end if
205
206 if (c_associated(ax_helm_program)) then
208 call neko_error('Failed to release program')
209 end if
210 ax_helm_program = c_null_ptr
211 end if
212
213 if (c_associated(jacobi_program)) then
215 call neko_error('Failed to release program')
216 end if
217 jacobi_program = c_null_ptr
218 end if
219
220 if (c_associated(rhs_maker_program)) then
222 call neko_error('Failed to release program')
223 end if
224 rhs_maker_program = c_null_ptr
225 end if
226
227 if (c_associated(pnpn_res_program)) then
229 call neko_error('Failed to release program')
230 end if
231 pnpn_res_program = c_null_ptr
232 end if
233
234 if (c_associated(euler_res_program)) then
236 call neko_error('Failed to release program')
237 end if
238 euler_res_program = c_null_ptr
239 end if
240
243 call neko_error('Failed to release program')
244 end if
246 end if
247
248 if (c_associated(compressible_ops_compute_entropy_program)) then
250 call neko_error('Failed to release program')
251 end if
253 end if
254
255 if (c_associated(fdm_program)) then
257 call neko_error('Failed to release program')
258 end if
259 fdm_program = c_null_ptr
260 end if
261
262 if (c_associated(tensor_program)) then
264 call neko_error('Failed to release program')
265 end if
266 tensor_program = c_null_ptr
267 end if
268
269 if (c_associated(schwarz_program)) then
271 call neko_error('Failed to release program')
272 end if
273 schwarz_program = c_null_ptr
274 end if
275
276 if (c_associated(dong_program)) then
278 call neko_error('Failed to release program')
279 end if
280 dong_program = c_null_ptr
281 end if
282
283 if (c_associated(coef_program)) then
285 call neko_error('Failed to release program')
286 end if
287 coef_program = c_null_ptr
288 end if
289
290 if (c_associated(scalar_residual_program)) then
292 call neko_error('Failed to release program')
293 end if
294 scalar_residual_program = c_null_ptr
295 end if
296
297 if (c_associated(lambda2_program)) then
299 call neko_error('Failed to release program')
300 end if
301 lambda2_program = c_null_ptr
302 end if
303
304 if (c_associated(compute_max_wave_speed_program)) then
306 call neko_error('Failed to release program')
307 end if
309 end if
310
311 if (c_associated(mapping_program)) then
313 call neko_error('Failed to release program')
314 end if
315 mapping_program = c_null_ptr
316 end if
317
318 end subroutine opencl_prgm_lib_release
319
320#endif
321
322end 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:60
type(c_ptr), bind(C), public opgrad_program
Device Velocity gradient kernels.
Definition prgm_lib.F90:51
type(c_ptr), bind(C), public math_program
Device math kernels.
Definition prgm_lib.F90:12
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 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:85
type(c_ptr), bind(C), public conv1_program
Device onvective 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 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:88
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:94
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:79
type(c_ptr), bind(C), public ax_helm_program
Device Ax helm kernels.
Definition prgm_lib.F90:57
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:107
type(c_ptr), bind(C), public mapping_program
Device filter kernels.
Definition prgm_lib.F90:100
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:82
type(c_ptr), bind(C), public neumann_program
Device Neumann kernels.
Definition prgm_lib.F90:33
type(c_ptr), bind(C), public gs_program
Device Gather-Scatter kernels.
Definition prgm_lib.F90:54
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:48
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:73
type(c_ptr), bind(C), public compute_max_wave_speed_program
Device compute_max_wave_speed kernels.
Definition prgm_lib.F90:97
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:66
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:63
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:91
type(c_ptr), bind(C), public euler_res_program
Device euler residual kernels.
Definition prgm_lib.F90:69
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:76
type(c_ptr), bind(C), public compressible_ops_compute_max_wave_speed_program
Device compressible ops kernels.
Definition prgm_lib.F90:72
Utilities.
Definition utils.f90:35