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 12 13 typedef viennacl::compressed_matrix<PetscScalar> ViennaCLAIJMatrix; 14 15 16 struct Mat_SeqAIJViennaCL { 17 ViennaCLAIJMatrix *mat; /* pointer to the matrix on the GPU */ 18 }; 19 20 #undef __FUNCT__ 21 #define __FUNCT__ "MatSetFromOptions_SeqViennaCL" 22 static PetscErrorCode MatSetFromOptions_SeqViennaCL(Mat A) 23 { 24 PetscErrorCode ierr; 25 PetscBool flg; 26 27 PetscFunctionBegin; 28 ViennaCLSetFromOptions((PetscObject)A); 29 PetscFunctionReturn(0); 30 } 31 32 PETSC_INTERN PetscErrorCode MatViennaCLCopyToGPU(Mat); 33 PETSC_INTERN PetscErrorCode MatViennaCLCopyFromGPU(Mat, ViennaCLAIJMatrix*); 34 #endif 35