petsc-3.10.4 2019-02-26
Report Typos and Errors


Provides access to the CUDA buffer inside a vector.


PETSC_EXTERN PetscErrorCode VecCUDAGetArrayReadWrite(Vec v, PetscScalar **a)
This function has semantics similar to VecGetArray(): the pointer returned by this function points to a consistent view of the vector data. This may involve a copy operation of data from the host to the device if the data on the device is out of date. If the device memory hasn't been allocated previously it will be allocated as part of this function call. VecCUDAGetArrayReadWrite() assumes that the user will modify the vector data. This is similar to intent(inout) in fortran.

The CUDA device pointer has to be released by calling VecCUDARestoreArrayReadWrite(). Upon restoring the vector data the data on the host will be marked as out of date. A subsequent access of the host data will thus incur a data transfer from the device to the host.

Input Parameter

v -the vector

Output Parameter

a -the CUDA device pointer

Fortran note

This function is not currently available from Fortran.

See Also

VecCUDARestoreArrayReadWrite(), VecCUDAGetArrayRead(), VecCUDAGetArrayWrite(), VecGetArray(), VecGetArrayRead()




Index of all Vec routines
Table of Contents for all manual pages
Index of all manual pages