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