37 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
45 bind(c, name =
'hip_schwarz_extrude')
46 use,
intrinsic :: iso_c_binding
49 type(c_ptr),
value :: arr1_d, arr2_d, stream
50 integer(c_int) :: l1, l2, nx, nelv
55 bind(c, name =
'hip_schwarz_toext3d')
56 use,
intrinsic :: iso_c_binding
59 type(c_ptr),
value :: a_d, b_d, stream
60 integer(c_int) :: nx, nelv
63 bind(c, name =
'hip_schwarz_toreg3d')
64 use,
intrinsic :: iso_c_binding
67 type(c_ptr),
value :: a_d, b_d, stream
68 integer(c_int) :: nx, nelv
75 bind(c, name =
'cuda_schwarz_extrude')
76 use,
intrinsic :: iso_c_binding
79 type(c_ptr),
value :: arr1_d, arr2_d, stream
81 integer(c_int) :: l1, l2, nx, nelv
85 bind(c, name =
'cuda_schwarz_toext3d')
86 use,
intrinsic :: iso_c_binding
89 type(c_ptr),
value :: a_d, b_d, stream
90 integer(c_int) :: nx, nelv
93 bind(c, name =
'cuda_schwarz_toreg3d')
94 use,
intrinsic :: iso_c_binding
97 type(c_ptr),
value :: a_d, b_d, stream
98 integer(c_int) :: nx, nelv
105 bind(c, name =
'opencl_schwarz_extrude')
106 use,
intrinsic :: iso_c_binding
109 type(c_ptr),
value :: arr1_d, arr2_d, stream
110 integer(c_int) :: l1, l2, nx, nelv
114 bind(c, name =
'opencl_schwarz_toext3d')
115 use,
intrinsic :: iso_c_binding
118 type(c_ptr),
value :: a_d, b_d, stream
119 integer(c_int) :: nx, nelv
122 bind(c, name =
'opencl_schwarz_toreg3d')
123 use,
intrinsic :: iso_c_binding
126 type(c_ptr),
value :: a_d, b_d, stream
127 integer(c_int) :: nx, nelv
132 subroutine metal_schwarz_extrude(arr1_d, l1, f1, arr2_d, l2, f2, &
134 bind(c, name =
'metal_schwarz_extrude')
135 use,
intrinsic :: iso_c_binding
138 type(c_ptr),
value :: arr1_d, arr2_d, stream
139 integer(c_int) :: l1, l2, nx, nelv
141 end subroutine metal_schwarz_extrude
142 subroutine metal_schwarz_toext3d(a_d, b_d, nx, nelv, stream) &
143 bind(c, name =
'metal_schwarz_toext3d')
144 use,
intrinsic :: iso_c_binding
147 type(c_ptr),
value :: a_d, b_d, stream
148 integer(c_int) :: nx, nelv
149 end subroutine metal_schwarz_toext3d
150 subroutine metal_schwarz_toreg3d(b_d, a_d, nx, nelv, stream) &
151 bind(c, name =
'metal_schwarz_toreg3d')
152 use,
intrinsic :: iso_c_binding
155 type(c_ptr),
value :: a_d, b_d, stream
156 integer(c_int) :: nx, nelv
157 end subroutine metal_schwarz_toreg3d
166 nx, ny, nz, nelv, stream)
167 integer,
intent(in) :: l1, l2, nx, ny, nz, nelv
168 type(c_ptr),
intent(inout) :: arr1_d, arr2_d
169 real(kind=
rp),
intent(in) :: f1, f2
170 type(c_ptr),
optional :: stream
171 if (.not.
present(stream))
then
182 call metal_schwarz_extrude(arr1_d, l1, f1, arr2_d, l2, f2, nx, &
185 call neko_error(
'No device backend configured')
190 integer,
intent(in) :: nx, nelv
191 type(c_ptr) :: a_d, b_d
192 type(c_ptr),
optional :: stream
193 if (.not.
present(stream))
then
204 call metal_schwarz_toext3d(a_d, b_d, nx, nelv, stream)
206 call neko_error(
'No device backend configured')
211 integer,
intent(in) :: nx, nelv
212 type(c_ptr) :: a_d, b_d
213 type(c_ptr),
optional :: stream
214 if (.not.
present(stream))
then
224 call metal_schwarz_toreg3d(b_d, a_d, nx, nelv, stream)
226 call neko_error(
'No device backend configured')
subroutine, public device_schwarz_toreg3d(b_d, a_d, nx, nelv, stream)
subroutine, public device_schwarz_extrude(arr1_d, l1, f1, arr2_d, l2, f2, nx, ny, nz, nelv, stream)
subroutine, public device_schwarz_toext3d(a_d, b_d, nx, nelv, stream)
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.
void opencl_schwarz_toext3d(void *a, void *b, int *nx, int *nel, cl_command_queue command_queue)
void opencl_schwarz_extrude(void *arr1, int *l1, real *f1, void *arr2, int *l2, real *f2, int *nx, int *nel, cl_command_queue command_queue)
void opencl_schwarz_toreg3d(void *b, void *a, int *nx, int *nel, cl_command_queue command_queue)
void cuda_schwarz_extrude(void *arr1, int *l1, real *f1, void *arr2, int *l2, real *f2, int *nx, int *nel, cudaStream_t stream)
void cuda_schwarz_toreg3d(void *b, void *a, int *nx, int *nel, cudaStream_t stream)
void cuda_schwarz_toext3d(void *a, void *b, int *nx, int *nel, cudaStream_t stream)