44 use,
intrinsic :: iso_c_binding
50 real(kind=
rp),
allocatable :: x(:)
52 type(c_ptr) :: x_d = c_null_ptr
54 integer,
private :: n = 0
87 integer,
intent(in) :: n
90 call cfill(v%x, 0.0_rp, n)
101 integer,
intent(in) :: n
104 if (a%n .eq. n)
return
119 if (
allocated(v%x))
then
123 if (c_associated(v%x_d))
then
145 integer,
intent(in) :: memdir
146 logical,
intent(in) :: sync
164 call copy(v%x, w%x, v%n)
172 real(kind=
rp),
intent(in) :: s
177 call cfill(v%x, s, v%n)
Deassociate a Fortran array from a device pointer.
Map a Fortran array to a device (allocate and associate)
Copy data between host and device (or device and device)
Synchronize a device or stream.
subroutine, public device_sub3(a_d, b_d, c_d, n, strm)
Vector subtraction .
subroutine, public device_cmult(a_d, c, n, strm)
Multiplication by constant c .
subroutine, public device_cadd2(a_d, b_d, c, n, strm)
Add a scalar to vector .
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_cdiv2(a_d, b_d, c, n, strm)
Division of constant c by array .
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_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 .
Device abstraction, common interface for various accelerators.
subroutine, public device_free(x_d)
Deallocate memory on the device.
subroutine, public cfill(a, c, n)
Set all elements to a constant c .
subroutine, public copy(a, b, n)
Copy a vector .
integer, parameter neko_bcknd_device
integer, parameter, public rp
Global precision used in computations.
subroutine vector_init(v, n)
Initialise a vector of size n.
subroutine vector_assign_scalar(v, s)
Assignment .
subroutine vector_free(v)
Deallocate a vector.
pure integer function vector_size(v)
Return the number of entries in the vector.
subroutine vector_allocate(a, n)
Vector allocation without initialisation.
subroutine vector_assign_vector(v, w)
Assignment .
subroutine vector_copy_from(v, memdir, sync)
Easy way to copy between host and device.