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