Loading [MathJax]/extensions/tex2jax.js
Neko 0.9.99
A portable framework for high-order spectral element flow simulations
All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros Pages
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) :: inhom_dirichlet_program = c_null_ptr
34
36 type(c_ptr), public, bind(c) :: dudxyz_program = c_null_ptr
37
39 type(c_ptr), public, bind(c) :: cdtp_program = c_null_ptr
40
42 type(c_ptr), public, bind(c) :: conv1_program = c_null_ptr
43
45 type(c_ptr), public, bind(c) :: cfl_program = c_null_ptr
46
48 type(c_ptr), public, bind(c) :: opgrad_program = c_null_ptr
49
51 type(c_ptr), public, bind(c) :: gs_program = c_null_ptr
52
54 type(c_ptr), public, bind(c) :: ax_helm_program = c_null_ptr
55
57 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
58
60 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
61
63 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
64
66 type(c_ptr), public, bind(c) :: euler_res_program = c_null_ptr
67
69 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
70
72 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
73
75 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
76
78 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
79
81 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
82
84 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
85
87 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
88
90 type(c_ptr), public, bind(c) :: filter_program = c_null_ptr
91
93
94contains
95
97
98 if (c_associated(math_program)) then
100 call neko_error('Failed to release program')
101 end if
102 math_program = c_null_ptr
103 end if
104
105 if (c_associated(mathops_program)) then
107 call neko_error('Failed to release program')
108 end if
109 mathops_program = c_null_ptr
110 end if
111
112 if (c_associated(dirichlet_program)) then
114 call neko_error('Failed to release program')
115 end if
116 dirichlet_program = c_null_ptr
117 end if
118
119 if (c_associated(inflow_program)) then
121 call neko_error('Failed to release program')
122 end if
123 inflow_program = c_null_ptr
124 end if
125
126 if (c_associated(zero_dirichlet_program)) then
128 call neko_error('Failed to release program')
129 end if
130 zero_dirichlet_program = c_null_ptr
131 end if
132
133 if (c_associated(symmetry_program)) then
135 call neko_error('Failed to release program')
136 end if
137 symmetry_program = c_null_ptr
138 end if
139
140 if (c_associated(facet_normal_program)) then
142 call neko_error('Failed to release program')
143 end if
144 facet_normal_program = c_null_ptr
145 end if
146
147 if (c_associated(inhom_dirichlet_program)) then
149 call neko_error('Failed to release program')
150 end if
151 inhom_dirichlet_program = c_null_ptr
152 end if
153
154 if (c_associated(dudxyz_program)) then
156 call neko_error('Failed to release program')
157 end if
158 dudxyz_program = c_null_ptr
159 end if
160
161 if (c_associated(cdtp_program)) then
163 call neko_error('Failed to release program')
164 end if
165 cdtp_program = c_null_ptr
166 end if
167
168 if (c_associated(conv1_program)) then
170 call neko_error('Failed to release program')
171 end if
172 conv1_program = c_null_ptr
173 end if
174
175 if (c_associated(cfl_program)) then
177 call neko_error('Failed to release program')
178 end if
179 cfl_program = c_null_ptr
180 end if
181
182 if (c_associated(opgrad_program)) then
184 call neko_error('Failed to release program')
185 end if
186 opgrad_program = c_null_ptr
187 end if
188
189 if (c_associated(gs_program)) then
191 call neko_error('Failed to release program')
192 end if
193 gs_program = c_null_ptr
194 end if
195
196 if (c_associated(ax_helm_program)) then
198 call neko_error('Failed to release program')
199 end if
200 ax_helm_program = c_null_ptr
201 end if
202
203 if (c_associated(jacobi_program)) then
205 call neko_error('Failed to release program')
206 end if
207 jacobi_program = c_null_ptr
208 end if
209
210 if (c_associated(rhs_maker_program)) then
212 call neko_error('Failed to release program')
213 end if
214 rhs_maker_program = c_null_ptr
215 end if
216
217 if (c_associated(pnpn_res_program)) then
219 call neko_error('Failed to release program')
220 end if
221 pnpn_res_program = c_null_ptr
222 end if
223
224 if (c_associated(euler_res_program)) then
226 call neko_error('Failed to release program')
227 end if
228 euler_res_program = c_null_ptr
229 end if
230
231 if (c_associated(fdm_program)) then
233 call neko_error('Failed to release program')
234 end if
235 fdm_program = c_null_ptr
236 end if
237
238 if (c_associated(tensor_program)) then
240 call neko_error('Failed to release program')
241 end if
242 tensor_program = c_null_ptr
243 end if
244
245 if (c_associated(schwarz_program)) then
247 call neko_error('Failed to release program')
248 end if
249 schwarz_program = c_null_ptr
250 end if
251
252 if (c_associated(dong_program)) then
254 call neko_error('Failed to release program')
255 end if
256 dong_program = c_null_ptr
257 end if
258
259 if (c_associated(coef_program)) then
261 call neko_error('Failed to release program')
262 end if
263 coef_program = c_null_ptr
264 end if
265
266 if (c_associated(scalar_residual_program)) then
268 call neko_error('Failed to release program')
269 end if
270 scalar_residual_program = c_null_ptr
271 end if
272
273 if (c_associated(lambda2_program)) then
275 call neko_error('Failed to release program')
276 end if
277 lambda2_program = c_null_ptr
278 end if
279
280 if (c_associated(filter_program)) then
282 call neko_error('Failed to release program')
283 end if
284 filter_program = c_null_ptr
285 end if
286
287 end subroutine opencl_prgm_lib_release
288
289#endif
290
291end 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:57
type(c_ptr), bind(C), public opgrad_program
Device Velocity gradient kernels.
Definition prgm_lib.F90:48
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:33
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:78
type(c_ptr), bind(C), public conv1_program
Device onvective kernels.
Definition prgm_lib.F90:42
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:36
type(c_ptr), bind(C), public coef_program
Device coef kernels.
Definition prgm_lib.F90:81
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:87
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:72
type(c_ptr), bind(C), public ax_helm_program
Device Ax helm kernels.
Definition prgm_lib.F90:54
type(c_ptr), bind(C), public cdtp_program
Device kernels.
Definition prgm_lib.F90:39
subroutine, public opencl_prgm_lib_release
Definition prgm_lib.F90:97
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:75
type(c_ptr), bind(C), public gs_program
Device Gather-Scatter kernels.
Definition prgm_lib.F90:51
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:45
type(c_ptr), bind(C), public dirichlet_program
Device Dirichlet kernels.
Definition prgm_lib.F90:18
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:63
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:60
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:84
type(c_ptr), bind(C), public filter_program
Device filter kernels.
Definition prgm_lib.F90:90
type(c_ptr), bind(C), public euler_res_program
Device euler residual kernels.
Definition prgm_lib.F90:66
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:69
Utilities.
Definition utils.f90:35