1 #if !defined(__VIENNACLMATIMPL) 2 #define __VIENNACLMATIMPL 3 4 #define PETSC_SKIP_IMMINTRIN_H_CUDAWORKAROUND 1 5 #include <../src/mat/impls/aij/seq/aij.h> /*I "petscmat.h" I*/ 6 7 /* Pulls in some ViennaCL includes as well as VIENNACL_WITH_OPENCL: */ 8 #include <../src/vec/vec/impls/seq/seqviennacl/viennaclvecimpl.h> 9 10 /* for everything else */ 11 #include "viennacl/compressed_matrix.hpp" 12 #include "viennacl/compressed_compressed_matrix.hpp" 13 14 15 typedef viennacl::compressed_matrix<PetscScalar> ViennaCLAIJMatrix; 16 typedef viennacl::compressed_compressed_matrix<PetscScalar> ViennaCLCompressedAIJMatrix; 17 18 19 struct Mat_SeqAIJViennaCL { 20 Mat_SeqAIJViennaCL() : tempvec(NULL), mat(NULL), compressed_mat(NULL) {} 21 ViennaCLVector *tempvec; 22 ViennaCLAIJMatrix *mat; /* pointer to the matrix on the GPU */ 23 ViennaCLCompressedAIJMatrix *compressed_mat; /* compressed CSR */ 24 }; 25 26 PETSC_INTERN PetscErrorCode MatViennaCLCopyToGPU(Mat); 27 PETSC_INTERN PetscErrorCode MatViennaCLCopyFromGPU(Mat, ViennaCLAIJMatrix*); 28 #endif 29