xref: /petsc/src/mat/impls/aij/seq/seqviennacl/viennaclmatimpl.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1*a4963045SJacob Faibussowitsch #pragma once
2d67ff14aSKarl Rupp 
399acd6aaSStefano Zampini #define PETSC_SKIP_IMMINTRIN_H_CUDAWORKAROUND 1
4aaa7dc30SBarry Smith #include <../src/mat/impls/aij/seq/aij.h> /*I "petscmat.h" I*/
50a9f7e6aSKarl Rupp 
63db98f88SKarl Rupp /* Pulls in some ViennaCL includes as well as VIENNACL_WITH_OPENCL: */
7d67ff14aSKarl Rupp #include <../src/vec/vec/impls/seq/seqviennacl/viennaclvecimpl.h>
8d67ff14aSKarl Rupp 
9d67ff14aSKarl Rupp /* for everything else */
10d67ff14aSKarl Rupp #include "viennacl/compressed_matrix.hpp"
11a3430c56SKarl Rupp #include "viennacl/compressed_compressed_matrix.hpp"
12d67ff14aSKarl Rupp 
13d67ff14aSKarl Rupp typedef viennacl::compressed_matrix<PetscScalar>            ViennaCLAIJMatrix;
14a3430c56SKarl Rupp typedef viennacl::compressed_compressed_matrix<PetscScalar> ViennaCLCompressedAIJMatrix;
15d67ff14aSKarl Rupp 
16d67ff14aSKarl Rupp struct Mat_SeqAIJViennaCL {
Mat_SeqAIJViennaCLMat_SeqAIJViennaCL176447cd05SKarl Rupp   Mat_SeqAIJViennaCL() : tempvec(NULL), mat(NULL), compressed_mat(NULL) { }
18a3430c56SKarl Rupp   ViennaCLVector              *tempvec;
19d67ff14aSKarl Rupp   ViennaCLAIJMatrix           *mat;            /* pointer to the matrix on the GPU */
20a3430c56SKarl Rupp   ViennaCLCompressedAIJMatrix *compressed_mat; /* compressed CSR */
21d67ff14aSKarl Rupp };
22d67ff14aSKarl Rupp 
23d67ff14aSKarl Rupp PETSC_INTERN PetscErrorCode MatViennaCLCopyToGPU(Mat);
24d67ff14aSKarl Rupp PETSC_INTERN PetscErrorCode MatViennaCLCopyFromGPU(Mat, ViennaCLAIJMatrix *);
25