42 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
49 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
50 bind(c, name =
'hip_constrain_mixed_bc_zero')
51 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
53 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
55 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
59 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
60 values_n, values_t1, values_t2, m, strm) &
61 bind(c, name =
'hip_constrain_mixed_bc_set')
62 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
64 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
66 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
67 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
71 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
72 value_n, value_t1, value_t2, m, strm) &
73 bind(c, name =
'hip_constrain_mixed_bc_set_const')
74 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
77 real(c_rp) :: value_n, value_t1, value_t2
78 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
80 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
86 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
87 bind(c, name =
'cuda_constrain_mixed_bc_zero')
88 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
90 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
92 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
96 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
97 values_n, values_t1, values_t2, m, strm) &
98 bind(c, name =
'cuda_constrain_mixed_bc_set')
99 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
101 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
103 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
104 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
108 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
109 value_n, value_t1, value_t2, m, strm) &
110 bind(c, name =
'cuda_constrain_mixed_bc_set_const')
111 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
114 real(c_rp) :: value_n, value_t1, value_t2
115 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
117 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
123 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
124 bind(c, name =
'opencl_constrain_mixed_bc_zero')
125 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
127 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
129 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
133 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
134 values_n, values_t1, values_t2, m, strm) &
135 bind(c, name =
'opencl_constrain_mixed_bc_set')
136 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
138 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
140 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
141 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
145 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
146 value_n, value_t1, value_t2, m, strm) &
147 bind(c, name =
'opencl_constrain_mixed_bc_set_const')
148 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
151 real(c_rp) :: value_n, value_t1, value_t2
152 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
154 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
159 subroutine metal_constrain_mixed_bc_zero(mixed_msk, x, y, z, &
160 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
161 bind(c, name =
'metal_constrain_mixed_bc_zero')
162 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
164 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
166 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
167 end subroutine metal_constrain_mixed_bc_zero
169 subroutine metal_constrain_mixed_bc_set(mixed_msk, x, y, z, &
170 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
171 values_n, values_t1, values_t2, m, strm) &
172 bind(c, name =
'metal_constrain_mixed_bc_set')
173 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
175 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
177 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
178 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
179 end subroutine metal_constrain_mixed_bc_set
181 subroutine metal_constrain_mixed_bc_set_const(mixed_msk, x, y, z, &
182 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
183 value_n, value_t1, value_t2, m, strm) &
184 bind(c, name =
'metal_constrain_mixed_bc_set_const')
185 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
188 real(c_rp) :: value_n, value_t1, value_t2
189 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
191 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
192 end subroutine metal_constrain_mixed_bc_set_const
219 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm)
220 integer,
intent(in) :: constraint_n, constraint_t1, constraint_t2
221 integer,
intent(in) :: m
222 type(c_ptr),
intent(in) :: mixed_msk, x, y, z
223 type(c_ptr),
intent(in) :: n, t1, t2
224 type(c_ptr),
intent(in),
optional :: strm
229 if (
present(strm))
then
237 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
240 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
243 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
245 call metal_constrain_mixed_bc_zero(mixed_msk, x, y, z, &
246 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
248 call neko_error(
'No device backend configured for mixed BC constraint')
276 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
277 values_n, values_t1, values_t2, m, strm)
278 integer,
intent(in) :: constraint_n, constraint_t1, constraint_t2
279 integer,
intent(in) :: m
280 type(c_ptr),
intent(in) :: mixed_msk, x, y, z
281 type(c_ptr),
intent(in) :: n, t1, t2
282 type(c_ptr),
intent(in) :: values_n, values_t1, values_t2
283 type(c_ptr),
intent(in),
optional :: strm
288 if (
present(strm))
then
296 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
297 values_n, values_t1, values_t2, m, strm_)
300 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
301 values_n, values_t1, values_t2, m, strm_)
304 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
305 values_n, values_t1, values_t2, m, strm_)
307 call metal_constrain_mixed_bc_set(mixed_msk, x, y, z, &
308 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
309 values_n, values_t1, values_t2, m, strm_)
311 call neko_error(
'No device backend configured for mixed BC constraint')
336 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
337 value_n, value_t1, value_t2, m, strm)
338 integer,
intent(in) :: constraint_n, constraint_t1, constraint_t2
339 integer,
intent(in) :: m
340 real(kind=
rp),
intent(in) :: value_n, value_t1, value_t2
341 type(c_ptr),
intent(in) :: mixed_msk, x, y, z
342 type(c_ptr),
intent(in) :: n, t1, t2
343 type(c_ptr),
intent(in),
optional :: strm
348 if (
present(strm))
then
356 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
357 value_n, value_t1, value_t2, m, strm_)
360 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
361 value_n, value_t1, value_t2, m, strm_)
364 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
365 value_n, value_t1, value_t2, m, strm_)
367 call metal_constrain_mixed_bc_set_const(mixed_msk, x, y, z, &
368 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
369 value_n, value_t1, value_t2, m, strm_)
371 call neko_error(
'No device backend configured for mixed BC constraint')
void opencl_constrain_mixed_bc_set(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, void *values_n, void *values_t1, void *values_t2, int *m, cl_command_queue cmd_queue)
void opencl_constrain_mixed_bc_set_const(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, real *value_n, real *value_t1, real *value_t2, int *m, cl_command_queue cmd_queue)
void opencl_constrain_mixed_bc_zero(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, int *m, cl_command_queue cmd_queue)
void cuda_constrain_mixed_bc_zero(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, int *m, cudaStream_t strm)
void cuda_constrain_mixed_bc_set(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, void *values_n, void *values_t1, void *values_t2, int *m, cudaStream_t strm)
void cuda_constrain_mixed_bc_set_const(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, real *value_n, real *value_t1, real *value_t2, int *m, cudaStream_t strm)
Device wrappers for basis-aware mixed boundary-condition constraint kernels. These routines operate o...
subroutine, public device_constrain_mixed_bc_zero(mixed_msk, x, y, z, constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm)
Constrain mixed-boundary projections by zeroing the selected local components on the device.
subroutine, public device_constrain_mixed_bc_set_const(mixed_msk, x, y, z, constraint_n, constraint_t1, constraint_t2, n, t1, t2, value_n, value_t1, value_t2, m, strm)
Constrain mixed-boundary projections by assigning prescribed local components derived from a constant...
subroutine, public device_constrain_mixed_bc_set(mixed_msk, x, y, z, constraint_n, constraint_t1, constraint_t2, n, t1, t2, values_n, values_t1, values_t2, m, strm)
Constrain mixed-boundary projections by assigning prescribed local components derived from nodewise t...
Device abstraction, common interface for various accelerators.
type(c_ptr), bind(C), public glb_cmd_queue
Global command queue.
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.