petsc-3.4.4 2014-03-13

VecScatterInitializeForGPU

Initializes a generalized scatter from one vector to another for GPU based computation. Effectively, this function creates all the necessary indexing buffers and work vectors needed to move data only those data points in a vector which need to be communicated across ranks. This is done at the first time this function is called. Thereafter, this function launches a kernel, VecCUSPCopySomeToContiguousBufferGPU_Public, which moves the scattered data into a contiguous buffer on the GPU. Currently, this only used in the context of the parallel SpMV call in MatMult_MPIAIJCUSP (in mpi/mpicusp/mpiaijcusp.cu) or MatMult_MPIAIJCUSPARSE (in mpi/mpicusparse/mpiaijcusparse.cu). This function is executed before the call to MatMult. This enables the memory transfers to be overlapped with the MatMult SpMV kernel call.

Synopsis

#include "petscvec.h" 
PetscErrorCode  VecScatterInitializeForGPU(VecScatter inctx,Vec x,ScatterMode mode)

Input Parameters

inctx - scatter context generated by VecScatterCreate()
x - the vector from which we scatter
mode - the scattering mode, usually SCATTER_FORWARD. The available modes are: SCATTER_FORWARD or SCATTER_REVERSE

See Also

VecScatterCreate(), VecScatterEnd()

Level:intermediate
Location:
src/vec/vec/utils/veccusp/vscatcusp.c
Index of all Vec routines
Table of Contents for all manual pages
Index of all manual pages