1d67ff14aSKarl Rupp #if !defined(__VIENNACLMATIMPL) 2d67ff14aSKarl Rupp #define __VIENNACLMATIMPL 3d67ff14aSKarl Rupp 4*3db98f88SKarl Rupp /* Pulls in some ViennaCL includes as well as VIENNACL_WITH_OPENCL: */ 5d67ff14aSKarl Rupp #include <../src/vec/vec/impls/seq/seqviennacl/viennaclvecimpl.h> 6d67ff14aSKarl Rupp 7d67ff14aSKarl Rupp /* for everything else */ 8d67ff14aSKarl Rupp #include "viennacl/compressed_matrix.hpp" 9d67ff14aSKarl Rupp 10d67ff14aSKarl Rupp 11d67ff14aSKarl Rupp /* Old way */ 12d67ff14aSKarl Rupp typedef viennacl::compressed_matrix<PetscScalar> ViennaCLAIJMatrix; 13d67ff14aSKarl Rupp 14d67ff14aSKarl Rupp 15d67ff14aSKarl Rupp struct Mat_SeqAIJViennaCL { 16d67ff14aSKarl Rupp ViennaCLAIJMatrix *mat; /* pointer to the matrix on the GPU */ 17d67ff14aSKarl Rupp }; 18d67ff14aSKarl Rupp 19d67ff14aSKarl Rupp 20d67ff14aSKarl Rupp PETSC_INTERN PetscErrorCode MatViennaCLCopyToGPU(Mat); 21d67ff14aSKarl Rupp PETSC_INTERN PetscErrorCode MatViennaCLCopyFromGPU(Mat, ViennaCLAIJMatrix*); 22d67ff14aSKarl Rupp #endif 23