1 #if !defined(__MPICUSPARSEMATIMPL)
2 #define __MPICUSPARSEMATIMPL
3 
4 #include <cusparse_v2.h>
5 #include <petsc/private/cudavecimpl.h>
6 
7 typedef struct {
8   /* The following are used by GPU capabilities to store matrix storage formats on the device */
9   MatCUSPARSEStorageFormat   diagGPUMatFormat;
10   MatCUSPARSEStorageFormat   offdiagGPUMatFormat;
11   cudaStream_t               stream;
12   cusparseHandle_t           handle;
13   PetscSplitCSRDataStructure *deviceMat;
14 } Mat_MPIAIJCUSPARSE;
15 
16 PETSC_INTERN PetscErrorCode MatCUSPARSESetStream(Mat, const cudaStream_t stream);
17 PETSC_INTERN PetscErrorCode MatCUSPARSESetHandle(Mat, const cusparseHandle_t handle);
18 PETSC_INTERN PetscErrorCode MatCUSPARSEClearHandle(Mat);
19 
20 #endif
21