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