79 use,
intrinsic :: iso_c_binding, only : c_ptr
97 integer,
intent(in),
optional :: n
109 call rzero(a%x, size)
116 integer,
intent(in),
optional :: n
136 integer,
intent(in),
optional :: n
148 call copy(a%x, b%x, size)
155 real(kind=
rp),
intent(in) :: c
156 integer,
intent(in),
optional :: n
168 call cmult(a%x, c, size)
175 real(kind=
rp),
intent(in) :: s
176 integer,
intent(in),
optional :: n
188 call cadd(a%x, s, size)
195 real(kind=
rp),
intent(in) :: c
196 integer,
intent(in),
optional :: n
208 call cfill(a%x, c, size)
215 integer,
intent(in),
optional :: n
237 integer,
intent(in),
optional :: n
249 call invcol3(a%x, b%x, c%x, size)
258 integer,
intent(in),
optional :: n
270 call add2(a%x, b%x, size)
279 integer,
intent(in),
optional :: n
291 call add3(a%x, b%x, c%x, size)
299 type(
matrix_t),
intent(in) :: b, c, d
300 integer,
intent(in),
optional :: n
312 call add4(a%x, b%x, c%x, d%x, size)
321 integer,
intent(in),
optional :: n
333 call sub2(a%x, b%x, size)
343 integer,
intent(in),
optional :: n
355 call sub3(a%x, b%x, c%x, size)
366 real(kind=
rp),
intent(in) :: c1
367 integer,
intent(in),
optional :: n
379 call add2s1(a%x, b%x, c1, size)
389 real(kind=
rp),
intent(in) :: c1
390 integer,
intent(in),
optional :: n
402 call add2s2(a%x, b%x, c1, size)
411 real(kind=
rp),
intent(in) :: c1
412 integer,
intent(in),
optional :: n
433 real(kind=
rp),
intent(in) :: c
434 integer,
intent(in),
optional :: n
446 call cmult2(a%x, b%x, c, size)
455 integer,
intent(in),
optional :: n
477 integer,
intent(in),
optional :: n
489 call col2(a%x, b%x, size)
499 integer,
intent(in),
optional :: n
511 call col3(a%x, b%x, c%x, size)
521 integer,
intent(in),
optional :: n
533 call subcol3(a%x, b%x, c%x, size)
543 real(kind=
rp),
intent(in) :: c1, c2
544 integer,
intent(in),
optional :: n
556 call add3s2(a%x, b%x, c%x, c1, c2, size)
566 integer,
intent(in),
optional :: n
578 call addcol3(a%x, b%x, c%x, size)
589 integer,
intent(in),
optional :: n
601 call addcol4(a%x, b%x, c%x, d%x, size)
608 integer,
intent(in),
optional :: n
622 sum =
glsum(a%x, size)
629 integer,
intent(in),
optional :: n
643 val =
glmax(a%x, size)
650 integer,
intent(in),
optional :: n
664 val =
glmin(a%x, size)
671 integer,
intent(in),
optional :: n
685 ip =
glsc2(a%x, b%x, size)
692 integer,
intent(in),
optional :: n
693 type(
matrix_t),
intent(in) :: a, b, c
706 ip =
glsc3(a%x, b%x, c%x, size)
714 integer,
intent(in),
optional :: n
716 real(kind=
rp) :: norm
subroutine, public device_add2s1(a_d, b_d, c1, n, strm)
subroutine, public device_sub3(a_d, b_d, c_d, n, strm)
Vector subtraction .
subroutine, public device_masked_scatter_copy_0(a_d, b_d, mask_d, n, n_mask, strm)
Scatter a masked vector .
subroutine, public device_add2s2(a_d, b_d, c1, n, strm)
Vector addition with scalar multiplication (multiplication on first argument)
real(kind=rp) function, public device_glmax(a_d, n, strm)
Max of a vector of length n.
subroutine, public device_add2(a_d, b_d, n, strm)
Vector addition .
subroutine, public device_addcol3(a_d, b_d, c_d, n, strm)
Returns .
real(kind=rp) function, public device_glsum(a_d, n, strm)
Sum a vector of length n.
subroutine, public device_invcol1(a_d, n, strm)
Invert a vector .
subroutine, public device_add3s2(a_d, b_d, c_d, c1, c2, n, strm)
Returns .
subroutine, public device_rzero(a_d, n, strm)
Zero a real vector.
subroutine, public device_rone(a_d, n, strm)
Set all elements to one.
subroutine, public device_cmult(a_d, c, n, strm)
Multiplication by constant c .
subroutine, public device_vdot3(dot_d, u1_d, u2_d, u3_d, v1_d, v2_d, v3_d, n, strm)
Compute a dot product (3-d version) assuming vector components etc.
real(kind=rp) function, public device_glsubnorm(a_d, b_d, n, strm)
Returns the norm of the difference of two vectors .
subroutine, public device_sub2(a_d, b_d, n, strm)
Vector substraction .
subroutine, public device_copy(a_d, b_d, n, strm)
Copy a vector .
subroutine, public device_invcol3(a_d, b_d, c_d, n, strm)
Vector division .
subroutine, public device_col2(a_d, b_d, n, strm)
Vector multiplication .
subroutine, public device_add4(a_d, b_d, c_d, d_d, n, strm)
subroutine, public device_subcol3(a_d, b_d, c_d, n, strm)
Returns .
subroutine, public device_masked_gather_copy_0(a_d, b_d, mask_d, n, n_mask, strm)
Gather a masked vector .
subroutine, public device_invcol2(a_d, b_d, n, strm)
Vector division .
subroutine, public device_addsqr2s2(a_d, b_d, c1, n, strm)
Returns .
real(kind=rp) function, public device_glsc3(a_d, b_d, c_d, n, strm)
Weighted inner product .
real(kind=rp) function, public device_glsc2(a_d, b_d, n, strm)
Weighted inner product .
subroutine, public device_cmult2(a_d, b_d, c, n, strm)
Multiplication by constant c .
subroutine, public device_col3(a_d, b_d, c_d, n, strm)
Vector multiplication with 3 vectors .
subroutine, public device_addcol4(a_d, b_d, c_d, d_d, n, strm)
Returns .
subroutine, public device_cfill(a_d, c, n, strm)
Set all elements to a constant c .
subroutine, public device_add3(a_d, b_d, c_d, n, strm)
Vector addition .
real(kind=rp) function, public device_glmin(a_d, n, strm)
Min of a vector of length n.
Device abstraction, common interface for various accelerators.
subroutine, public cmult(a, c, n)
Multiplication by constant c .
subroutine, public cmult2(a, b, c, n)
Multiplication by constant c .
subroutine, public invcol2(a, b, n)
Vector division .
real(kind=rp) function, public glsc3(a, b, c, n)
Weighted inner product .
subroutine, public cadd(a, s, n)
Add a scalar to vector .
subroutine, public addsqr2s2(a, b, c1, n)
Returns .
subroutine, public add2s1(a, b, c1, n)
Vector addition with scalar multiplication (multiplication on first argument)
real(kind=rp) function, public glsc2(a, b, n)
Weighted inner product .
subroutine, public masked_scatter_copy_0(a, b, mask, n, n_mask)
Scatter a contigous vector to masked positions in a target array .
subroutine, public subcol3(a, b, c, n)
Returns .
subroutine, public rone(a, n)
Set all elements to one.
subroutine, public add3(a, b, c, n)
Vector addition .
real(kind=rp) function, public glsum(a, n)
Sum a vector of length n.
subroutine, public sub3(a, b, c, n)
Vector subtraction .
subroutine, public addcol4(a, b, c, d, n)
Returns .
subroutine, public add2(a, b, n)
Vector addition .
subroutine, public cfill(a, c, n)
Set all elements to a constant c .
subroutine, public invcol3(a, b, c, n)
Invert a vector .
subroutine, public add3s2(a, b, c, c1, c2, n)
Returns .
subroutine, public masked_gather_copy_0(a, b, mask, n, n_mask)
Gather a masked vector to reduced contigous vector .
subroutine, public addcol3(a, b, c, n)
Returns .
subroutine, public invcol1(a, n)
Invert a vector .
subroutine, public col2(a, b, n)
Vector multiplication .
real(kind=rp) function, public glmax(a, n)
Max of a vector of length n.
subroutine, public copy(a, b, n)
Copy a vector .
subroutine, public add4(a, b, c, d, n)
Vector addition .
subroutine, public col3(a, b, c, n)
Vector multiplication with 3 vectors .
subroutine, public vdot3(dot, u1, u2, u3, v1, v2, v3, n)
Compute a dot product (3-d version) assuming vector components etc.
subroutine, public rzero(a, n)
Zero a real vector.
real(kind=rp) function, public glsubnorm(a, b, n)
Returns the norm of the difference of two vectors .
subroutine, public sub2(a, b, n)
Vector substraction .
subroutine, public add2s2(a, b, c1, n)
Vector addition with scalar multiplication (multiplication on second argument)
real(kind=rp) function, public glmin(a, n)
Min of a vector of length n.
real(kind=rp) function, public matrix_glmax(a, n)
Global maximum of all elements in a matrix .
real(kind=rp) function, public matrix_glsum(a, n)
Global sum of all elements in a matrix .
subroutine, public matrix_copy(a, b, n)
Copy a matrix .
subroutine, public matrix_invcol2(a, b, n)
Vector division .
subroutine, public matrix_add2(a, b, n)
Vector addition .
subroutine, public matrix_addcol4(a, b, c, d, n)
Returns .
subroutine, public matrix_cadd(a, s, n)
Add a scalar to matrix .
subroutine, public matrix_cmult(a, c, n)
Multiplication by constant c .
subroutine, public matrix_add3s2(a, b, c, c1, c2, n)
Returns .
subroutine, public matrix_cmult2(a, b, c, n)
Multiplication by constant c .
subroutine matrix_add4(a, b, c, d, n)
Vector addition .
subroutine, public matrix_col3(a, b, c, n)
Vector multiplication with 3 vectors .
subroutine, public matrix_cfill(a, c, n)
Set all elements to a constant c .
subroutine, public matrix_invcol1(a, n)
Invert elements of a matrix .
real(kind=rp) function, public matrix_glsc3(a, b, c, n)
Global inner product of three matrices .
subroutine, public matrix_sub2(a, b, n)
Vector substraction .
subroutine, public matrix_subcol3(a, b, c, n)
Returns .
subroutine, public matrix_addsqr2s2(a, b, c1, n)
Returns .
real(kind=rp) function, public matrix_glmin(a, n)
Global minimum of all elements in a matrix .
subroutine, public matrix_add3(a, b, c, n)
Vector addition .
subroutine, public matrix_rzero(a, n)
Zero a real matrix .
real(kind=rp) function, public matrix_glsc2(a, b, n)
Global inner product of two matrices .
subroutine, public matrix_add2s2(a, b, c1, n)
Vector addition with scalar multiplication (multiplication on second argument)
subroutine, public matrix_addcol3(a, b, c, n)
Returns .
subroutine, public matrix_add2s1(a, b, c1, n)
Vector addition with scalar multiplication (multiplication on first argument)
subroutine, public matrix_invcol3(a, b, c, n)
Element division of two matrices .
real(kind=rp) function, public matrix_glsubnorm(a, b, n)
Global subtracted norm of two matrices .
subroutine, public matrix_col2(a, b, n)
Vector multiplication .
subroutine, public matrix_rone(a, n)
Set all elements to one.
subroutine, public matrix_sub3(a, b, c, n)
Vector subtraction .
integer, parameter neko_bcknd_device
integer, parameter, public rp
Global precision used in computations.