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