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 PetscInt coo_nd,coo_no; 15 THRUSTINTARRAY *coo_p; 16 THRUSTARRAY *coo_pw; 17 } Mat_MPIAIJCUSPARSE; 18 19 PETSC_INTERN PetscErrorCode MatCUSPARSESetStream(Mat, const cudaStream_t stream); 20 PETSC_INTERN PetscErrorCode MatCUSPARSESetHandle(Mat, const cusparseHandle_t handle); 21 PETSC_INTERN PetscErrorCode MatCUSPARSEClearHandle(Mat); 22 23 #endif 24