4: #define PETSC_SKIP_IMMINTRIN_H_CUDAWORKAROUND 1
5: #include <../src/mat/impls/aij/seq/aij.h>
7: /* Pulls in some ViennaCL includes as well as VIENNACL_WITH_OPENCL: */
8: #include <../src/vec/vec/impls/seq/seqviennacl/viennaclvecimpl.h>
10: /* for everything else */
11: #include "viennacl/compressed_matrix.hpp"
12: #include "viennacl/compressed_compressed_matrix.hpp"
15: typedef viennacl::compressed_matrix<PetscScalar> ViennaCLAIJMatrix;
16: typedef viennacl::compressed_compressed_matrix<PetscScalar> ViennaCLCompressedAIJMatrix;
19: struct Mat_SeqAIJViennaCL {
20: Mat_SeqAIJViennaCL() : tempvec(NULL), mat(NULL), compressed_mat(NULL) {}
21: ViennaCLVector *tempvec;
22: ViennaCLAIJMatrix *mat; /* pointer to the matrix on the GPU */
23: ViennaCLCompressedAIJMatrix *compressed_mat; /* compressed CSR */
24: };
26: PETSC_INTERN PetscErrorCode MatViennaCLCopyToGPU(Mat);
27: PETSC_INTERN PetscErrorCode MatViennaCLCopyFromGPU(Mat, ViennaCLAIJMatrix*);
28: #endif