35 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
45 bind(c, name =
'hip_tnsr3d_el_list')
46 use,
intrinsic :: iso_c_binding
47 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d, elements
48 integer(c_int) :: nu, nv, n_points
52 subroutine hip_tnsr3d(v_d, nv, u_d, nu, A_d, Bt_d, Ct_d, nelv) &
53 bind(c, name =
'hip_tnsr3d')
54 use,
intrinsic :: iso_c_binding
55 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d
56 integer(c_int) :: nu, nv, nelv
63 bind(c, name =
'cuda_tnsr3d_el_list')
64 use,
intrinsic :: iso_c_binding
65 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d, elements
66 integer(c_int) :: nu, nv, n_points
70 subroutine cuda_tnsr3d(v_d, nv, u_d, nu, A_d, Bt_d, Ct_d, nelv) &
71 bind(c, name =
'cuda_tnsr3d')
72 use,
intrinsic :: iso_c_binding
73 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d
74 integer(c_int) :: nu, nv, nelv
81 bind(c, name =
'opencl_tnsr3d_el_list')
82 use,
intrinsic :: iso_c_binding
83 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d, elements
84 integer(c_int) :: nu, nv, n_points
88 subroutine opencl_tnsr3d(v_d, nv, u_d, nu, A_d, Bt_d, Ct_d, nelv) &
89 bind(c, name =
'opencl_tnsr3d')
90 use,
intrinsic :: iso_c_binding
91 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d
92 integer(c_int) :: nu, nv, nelv
97 subroutine metal_tnsr3d_el_list(v_d, nv, u_d, nu, A_d, Bt_d, Ct_d, &
99 bind(c, name =
'metal_tnsr3d_el_list')
100 use,
intrinsic :: iso_c_binding
101 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d, elements
102 integer(c_int) :: nu, nv, n_points
103 end subroutine metal_tnsr3d_el_list
106 subroutine metal_tnsr3d(v_d, nv, u_d, nu, A_d, Bt_d, Ct_d, nelv) &
107 bind(c, name =
'metal_tnsr3d')
108 use,
intrinsic :: iso_c_binding
109 type(c_ptr),
value :: v_d, u_d, A_d, Bt_d, Ct_d
110 integer(c_int) :: nu, nv, nelv
111 end subroutine metal_tnsr3d
117 type(c_ptr) :: v_d, u_d, a_d, bt_d, ct_d
118 integer(c_int) :: nu, nv, nelv
120 call hip_tnsr3d(v_d, nv, u_d, nu, a_d, bt_d, ct_d, nelv)
122 call cuda_tnsr3d(v_d, nv, u_d, nu, a_d, bt_d, ct_d, nelv)
126 call metal_tnsr3d(v_d, nv, u_d, nu, a_d, bt_d, ct_d, nelv)
128 call neko_error(
'No device backend configured')
134 type(c_ptr) :: v_d, u_d, a_d, bt_d, ct_d, elements
135 integer(c_int) :: nu, nv, n_points
146 call metal_tnsr3d_el_list(v_d, nv, u_d, nu, a_d, bt_d, ct_d, elements, &
149 call neko_error(
'No device backend configured')
subroutine, public tnsr3d_el_list_device(v_d, nv, u_d, nu, a_d, bt_d, ct_d, elements, n_points)
subroutine, public tnsr3d_device(v_d, nv, u_d, nu, a_d, bt_d, ct_d, nelv)
void opencl_tnsr3d(void *v, int *nv, void *u, int *nu, void *A, void *Bt, void *Ct, int *nel)
void opencl_tnsr3d_el_list(void *v, int *nv, void *u, int *nu, void *A, void *Bt, void *Ct, int *elements, int *n_points)
void cuda_tnsr3d(void *v, int *nv, void *u, int *nu, void *A, void *Bt, void *Ct, int *nel)
void cuda_tnsr3d_el_list(void *v, int *nv, void *u, int *nu, void *A, void *Bt, void *Ct, int *elements, int *n_points)