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.