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