xref: /petsc/include/petscviennacl.h (revision a83f5ae2601aaa672c82ffc5d87c829127fc61ae)
126bd1501SBarry Smith #if !defined(PETSCVIENNACL_H)
226bd1501SBarry Smith #define PETSCVIENNACL_H
304afb09dSKarl Rupp 
404afb09dSKarl Rupp #include <petscvec.h>
50cd40bc2SKarl Rupp 
60cd40bc2SKarl Rupp #if defined(PETSC_HAVE_CUDA)
70cd40bc2SKarl Rupp #define VIENNACL_WITH_CUDA
80cd40bc2SKarl Rupp #endif
90cd40bc2SKarl Rupp 
100cd40bc2SKarl Rupp #if defined(PETSC_HAVE_OPENCL)
110cd40bc2SKarl Rupp #define VIENNACL_WITH_OPENCL
120cd40bc2SKarl Rupp #endif
130cd40bc2SKarl Rupp 
140cd40bc2SKarl Rupp #if defined(PETSC_HAVE_OPENMP)
150cd40bc2SKarl Rupp #define VIENNACL_WITH_OPENMP
160cd40bc2SKarl Rupp #endif
170cd40bc2SKarl Rupp 
18269c5266SKarl Rupp #include <viennacl/forwards.h>
19269c5266SKarl Rupp #include <viennacl/vector_proxy.hpp>
2004afb09dSKarl Rupp #include <viennacl/vector.hpp>
2104afb09dSKarl Rupp 
22f2d70e9dSBarry Smith PETSC_EXTERN PetscErrorCode VecViennaCLGetArray(Vec v, viennacl::vector<PetscScalar> **a);
23f2d70e9dSBarry Smith PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArray(Vec v, viennacl::vector<PetscScalar> **a);
2404afb09dSKarl Rupp 
2504afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayRead(Vec v, const viennacl::vector<PetscScalar> **a);
2604afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayRead(Vec v, const viennacl::vector<PetscScalar> **a);
2704afb09dSKarl Rupp 
2804afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayWrite(Vec v, viennacl::vector<PetscScalar> **a);
2904afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayWrite(Vec v, viennacl::vector<PetscScalar> **a);
3004afb09dSKarl Rupp 
31*a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecCreateSeqViennaCLWithArray(MPI_Comm,PetscInt,PetscInt,const viennacl::vector<PetscScalar> *,Vec *);
32*a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecCreateMPIViennaCLWithArray(MPI_Comm,PetscInt,PetscInt,PetscInt,const viennacl::vector<PetscScalar> *,Vec *);
33*a83f5ae2SKaushik Kulkarni 
34*a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecViennaCLPlaceArray(Vec,const viennacl::vector<PetscScalar> *);
35*a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecViennaCLResetArray(Vec);
36*a83f5ae2SKaushik Kulkarni 
3704afb09dSKarl Rupp 
3804afb09dSKarl Rupp #endif
39