40 bind(c, name =
'cuda_copy')
41 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
42 type(c_ptr),
value :: a_d, b_d
47 bind(c, name =
'cuda_masked_copy')
48 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
49 type(c_ptr),
value :: a_d, b_d, mask_d
50 integer(c_int) :: n, m
54 bind(c, name =
'cuda_masked_red_copy')
55 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
56 type(c_ptr),
value :: a_d, b_d, mask_d
57 integer(c_int) :: n, m
61 bind(c, name =
'cuda_cfill_mask')
62 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
64 type(c_ptr),
value :: a_d
66 integer(c_int) :: size
67 type(c_ptr),
value :: mask_d
68 integer(c_int) :: mask_size
72 bind(c, name =
'cuda_cmult')
73 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
75 type(c_ptr),
value :: a_d
81 bind(c, name =
'cuda_cmult2')
82 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
84 type(c_ptr),
value :: a_d, b_d
90 bind(c, name =
'cuda_cadd')
91 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
93 type(c_ptr),
value :: a_d
99 bind(c, name =
'cuda_cadd2')
100 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
102 type(c_ptr),
value :: a_d
103 type(c_ptr),
value :: b_d
109 bind(c, name =
'cuda_cfill')
110 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
112 type(c_ptr),
value :: a_d
118 bind(c, name =
'cuda_rzero')
119 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
120 type(c_ptr),
value :: a_d
125 bind(c, name =
'cuda_add2')
126 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
128 type(c_ptr),
value :: a_d, b_d
133 bind(c, name =
'cuda_add4')
134 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
136 type(c_ptr),
value :: a_d, b_d, c_d, d_d
141 bind(c, name =
'cuda_add2s1')
142 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
144 type(c_ptr),
value :: a_d, b_d
150 bind(c, name =
'cuda_add2s2')
151 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
153 type(c_ptr),
value :: a_d, b_d
159 bind(c, name =
'cuda_addsqr2s2')
160 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
162 type(c_ptr),
value :: a_d, b_d
168 bind(c, name =
'cuda_add3s2')
169 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
171 type(c_ptr),
value :: a_d, b_d, c_d
177 bind(c, name =
'cuda_invcol1')
178 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
179 type(c_ptr),
value :: a_d
184 bind(c, name =
'cuda_invcol2')
185 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
186 type(c_ptr),
value :: a_d, b_d
191 bind(c, name =
'cuda_col2')
192 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
193 type(c_ptr),
value :: a_d, b_d
198 bind(c, name =
'cuda_col3')
199 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
200 type(c_ptr),
value :: a_d, b_d, c_d
205 bind(c, name =
'cuda_subcol3')
206 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
207 type(c_ptr),
value :: a_d, b_d, c_d
212 bind(c, name =
'cuda_sub2')
213 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
214 type(c_ptr),
value :: a_d, b_d
219 bind(c, name =
'cuda_sub3')
220 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
221 type(c_ptr),
value :: a_d, b_d, c_d
226 bind(c, name =
'cuda_add3')
227 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
228 type(c_ptr),
value :: a_d, b_d, c_d
233 bind(c, name =
'cuda_addcol3')
234 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
235 type(c_ptr),
value :: a_d, b_d, c_d
240 bind(c, name =
'cuda_addcol4')
241 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
242 type(c_ptr),
value :: a_d, b_d, c_d, d_d
246 subroutine cuda_vdot3(dot_d, u1_d, u2_d, u3_d, v1_d, v2_d, v3_d, n) &
247 bind(c, name =
'cuda_vdot3')
248 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
249 type(c_ptr),
value :: dot_d, u1_d, u2_d, u3_d, v1_d, v2_d, v3_d
254 w1_d, w2_d, w3_d, n) &
255 bind(c, name =
'cuda_vcross')
256 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
257 type(c_ptr),
value :: u1_d, u2_d, u3_d
258 type(c_ptr),
value :: v1_d, v2_d, v3_d
259 type(c_ptr),
value :: w1_d, w2_d, w3_d
264 bind(c, name =
'cuda_vlsc3')
265 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
267 type(c_ptr),
value :: u_d, v_d, w_d
272 bind(c, name =
'cuda_add2s2_many')
273 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
275 type(c_ptr),
value :: y_d, x_d_d, a_d
276 integer(c_int) :: j, n
280 bind(c, name =
'cuda_glsc3')
281 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
283 type(c_ptr),
value :: a_d, b_d, c_d
288 bind(c, name =
'cuda_glsc3_many')
289 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
291 type(c_ptr),
value :: w_d, v_d_d, mult_d
292 integer(c_int) :: j, n
297 bind(c, name =
'cuda_glsc2')
298 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
300 type(c_ptr),
value :: a_d, b_d
305 bind(c, name =
'cuda_glsum')
306 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
308 type(c_ptr),
value :: a_d
313 bind(c, name =
'cuda_absval')
314 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
316 type(c_ptr),
value :: a_d
326 bind(c, name =
'cuda_pwmax_vec2')
327 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
328 type(c_ptr),
value :: a_d, b_d
333 bind(c, name =
'cuda_pwmax_vec3')
334 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
335 type(c_ptr),
value :: a_d, b_d, c_d
340 bind(c, name =
'cuda_pwmax_sca2')
341 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
343 type(c_ptr),
value :: a_d
349 bind(c, name =
'cuda_pwmax_sca3')
350 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
352 type(c_ptr),
value :: a_d, b_d
358 bind(c, name =
'cuda_pwmin_vec2')
359 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
360 type(c_ptr),
value :: a_d, b_d
365 bind(c, name =
'cuda_pwmin_vec3')
366 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
367 type(c_ptr),
value :: a_d, b_d, c_d
372 bind(c, name =
'cuda_pwmin_sca2')
373 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
375 type(c_ptr),
value :: a_d
381 bind(c, name =
'cuda_pwmin_sca3')
382 use,
intrinsic :: iso_c_binding, only: c_int, c_ptr
384 type(c_ptr),
value :: a_d, b_d
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.