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