36 use,
intrinsic :: iso_c_binding, only : c_int, c_ptr
43 bind(c, name =
'hip_opchsign')
44 use,
intrinsic :: iso_c_binding
45 type(c_ptr),
value :: a1_d, a2_d, a3_d
46 integer(c_int) :: gdim, n
52 bind(c, name =
'hip_opcolv')
53 use,
intrinsic :: iso_c_binding
54 type(c_ptr),
value :: a1_d, a2_d, a3_d, c_d
55 integer(c_int) :: gdim, n
62 bind(c, name =
'hip_opcolv3c')
63 use,
intrinsic :: iso_c_binding
65 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
67 integer(c_int) :: gdim, n
74 bind(c, name =
'hip_opadd2cm')
75 use,
intrinsic :: iso_c_binding
77 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d
79 integer(c_int) :: gdim, n
86 bind(c, name =
'hip_opadd2col')
87 use,
intrinsic :: iso_c_binding
88 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
89 integer(c_int) :: gdim, n
95 bind(c, name =
'cuda_opchsign')
96 use,
intrinsic :: iso_c_binding
97 type(c_ptr),
value :: a1_d, a2_d, a3_d
98 integer(c_int) :: gdim, n
103 subroutine cuda_opcolv(a1_d, a2_d, a3_d, c_d, gdim, n) &
104 bind(c, name =
'cuda_opcolv')
105 use,
intrinsic :: iso_c_binding
106 type(c_ptr),
value :: a1_d, a2_d, a3_d, c_d
107 integer(c_int) :: gdim, n
112 subroutine cuda_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, &
114 bind(c, name =
'cuda_opcolv3c')
115 use,
intrinsic :: iso_c_binding
117 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
119 integer(c_int) :: gdim, n
124 subroutine cuda_opadd2cm(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, &
126 bind(c, name =
'cuda_opadd2cm')
127 use,
intrinsic :: iso_c_binding
129 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d
131 integer(c_int) :: gdim, n
138 bind(c, name =
'cuda_opadd2col')
139 use,
intrinsic :: iso_c_binding
140 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
141 integer(c_int) :: gdim, n
147 bind(c, name =
'opencl_opchsign')
148 use,
intrinsic :: iso_c_binding
149 type(c_ptr),
value :: a1_d, a2_d, a3_d
150 integer(c_int) :: gdim, n
156 bind(c, name =
'opencl_opcolv')
157 use,
intrinsic :: iso_c_binding
158 type(c_ptr),
value :: a1_d, a2_d, a3_d, c_d
159 integer(c_int) :: gdim, n
166 bind(c, name =
'opencl_opcolv3c')
167 use,
intrinsic :: iso_c_binding
169 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
171 integer(c_int) :: gdim, n
178 bind(c, name =
'opencl_opadd2cm')
179 use,
intrinsic :: iso_c_binding
181 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d
183 integer(c_int) :: gdim, n
190 bind(c, name =
'opencl_opadd2col')
191 use,
intrinsic :: iso_c_binding
192 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
193 integer(c_int) :: gdim, n
198 subroutine metal_opchsign(a1_d, a2_d, a3_d, gdim, n) &
199 bind(c, name =
'metal_opchsign')
200 use,
intrinsic :: iso_c_binding
201 type(c_ptr),
value :: a1_d, a2_d, a3_d
202 integer(c_int) :: gdim, n
203 end subroutine metal_opchsign
207 subroutine metal_opcolv(a1_d, a2_d, a3_d, c_d, gdim, n) &
208 bind(c, name =
'metal_opcolv')
209 use,
intrinsic :: iso_c_binding
210 type(c_ptr),
value :: a1_d, a2_d, a3_d, c_d
211 integer(c_int) :: gdim, n
212 end subroutine metal_opcolv
216 subroutine metal_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, &
218 bind(c, name =
'metal_opcolv3c')
219 use,
intrinsic :: iso_c_binding
221 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
223 integer(c_int) :: gdim, n
224 end subroutine metal_opcolv3c
228 subroutine metal_opadd2cm(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, &
230 bind(c, name =
'metal_opadd2cm')
231 use,
intrinsic :: iso_c_binding
233 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d
235 integer(c_int) :: gdim, n
236 end subroutine metal_opadd2cm
240 subroutine metal_opadd2col(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, &
242 bind(c, name =
'metal_opadd2col')
243 use,
intrinsic :: iso_c_binding
244 type(c_ptr),
value :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
245 integer(c_int) :: gdim, n
246 end subroutine metal_opadd2col
257 type(c_ptr) :: a1_d, a2_d, a3_d
266 call metal_opchsign(a1_d, a2_d, a3_d, gdim, n)
268 call neko_error(
'No device backend configured')
274 type(c_ptr) :: a1_d, a2_d, a3_d, c_d
277 call hip_opcolv(a1_d, a2_d, a3_d, c_d, gdim, n)
283 call metal_opcolv(a1_d, a2_d, a3_d, c_d, gdim, n)
285 call neko_error(
'No device backend configured')
291 b1_d, b2_d, b3_d, c_d, d, n, gdim)
292 type(c_ptr) :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
296 call hip_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, d, gdim, n)
298 call cuda_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, d, gdim, n)
300 call opencl_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, d, gdim, n)
302 call metal_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, d, gdim, n)
304 call neko_error(
'No device backend configured')
310 type(c_ptr) :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d
314 call hip_opadd2cm(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c, gdim, n)
316 call cuda_opadd2cm(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c, gdim, n)
320 call metal_opadd2cm(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c, gdim, n)
322 call neko_error(
'No device backend configured')
328 type(c_ptr) :: a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d
331 call hip_opadd2col(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, gdim, n)
333 call cuda_opadd2col(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, gdim, n)
337 call metal_opadd2col(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, gdim, n)
339 call neko_error(
'No device backend configured')
void opencl_opcolv3c(void *a1, void *a2, void *a3, void *b1, void *b2, void *b3, void *c, real *d, int *gdim, int *n)
void opencl_opadd2cm(void *a1, void *a2, void *a3, void *b1, void *b2, void *b3, real *c, int *gdim, int *n)
void opencl_opcolv(void *a1, void *a2, void *a3, void *c, int *gdim, int *n)
void opencl_opchsign(void *a1, void *a2, void *a3, int *gdim, int *n)
void opencl_opadd2col(void *a1, void *a2, void *a3, void *b1, void *b2, void *b3, void *c, int *gdim, int *n)
void cuda_opchsign(void *a1, void *a2, void *a3, int *gdim, int *n)
void cuda_opcolv3c(void *a1, void *a2, void *a3, void *b1, void *b2, void *b3, void *c, real *d, int *gdim, int *n)
void cuda_opadd2cm(void *a1, void *a2, void *a3, void *b1, void *b2, void *b3, real *c, int *gdim, int *n)
void cuda_opcolv(void *a1, void *a2, void *a3, void *c, int *gdim, int *n)
void cuda_opadd2col(void *a1, void *a2, void *a3, void *b1, void *b2, void *b3, void *c, int *gdim, int *n)
subroutine, public device_opchsign(a1_d, a2_d, a3_d, gdim, n)
subroutine, public device_opadd2col(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, n, gdim)
subroutine, public device_opadd2cm(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c, n, gdim)
subroutine, public device_opcolv3c(a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, c_d, d, n, gdim)
subroutine, public device_opcolv(a1_d, a2_d, a3_d, c_d, gdim, n)
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.