1: #ifndef __CUSPMATIMPL
4: #include <../src/vec/vec/impls/seq/seqcusp/cuspvecimpl.h>
5: #include <cusp/csr_matrix.h>
6: #include <cusp/multiply.h>
9: #define CUSPMATRIX cusp::csr_matrix<PetscInt,PetscScalar,cusp::device_memory> 11: struct Mat_SeqAIJCUSP {
12: CUSPMATRIX* mat; /* pointer to the matrix on the GPU */
13: CUSPINTARRAYGPU* indices; /*pointer to an array containing the nonzero row indices, should usecprow be true*/
14: CUSPARRAY* tempvec; /*pointer to a workvector to which we can copy the relevant indices of a vector we want to multiply */
15: };
17: extern PetscErrorCode MatCUSPCopyToGPU(Mat);
18: extern PetscErrorCode MatCUSPCopyFromGPU(Mat, CUSPMATRIX *);
19: #endif