1a4963045SJacob Faibussowitsch #pragma once 204afb09dSKarl Rupp 304afb09dSKarl Rupp #include <petscvec.h> 40cd40bc2SKarl Rupp 5*1850900dSBarry Smith /* MANSEC = Vec */ 6*1850900dSBarry Smith 70cd40bc2SKarl Rupp #if defined(PETSC_HAVE_CUDA) 80cd40bc2SKarl Rupp #define VIENNACL_WITH_CUDA 90cd40bc2SKarl Rupp #endif 100cd40bc2SKarl Rupp 110cd40bc2SKarl Rupp #if defined(PETSC_HAVE_OPENCL) 120cd40bc2SKarl Rupp #define VIENNACL_WITH_OPENCL 130cd40bc2SKarl Rupp #endif 140cd40bc2SKarl Rupp 150cd40bc2SKarl Rupp #if defined(PETSC_HAVE_OPENMP) 160cd40bc2SKarl Rupp #define VIENNACL_WITH_OPENMP 170cd40bc2SKarl Rupp #endif 180cd40bc2SKarl Rupp 19269c5266SKarl Rupp #include <viennacl/forwards.h> 20269c5266SKarl Rupp #include <viennacl/vector_proxy.hpp> 2104afb09dSKarl Rupp #include <viennacl/vector.hpp> 2204afb09dSKarl Rupp 23f2d70e9dSBarry Smith PETSC_EXTERN PetscErrorCode VecViennaCLGetArray(Vec v, viennacl::vector<PetscScalar> **a); 24f2d70e9dSBarry Smith PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArray(Vec v, viennacl::vector<PetscScalar> **a); 2504afb09dSKarl Rupp 2604afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayRead(Vec v, const viennacl::vector<PetscScalar> **a); 2704afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayRead(Vec v, const viennacl::vector<PetscScalar> **a); 2804afb09dSKarl Rupp 2904afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayWrite(Vec v, viennacl::vector<PetscScalar> **a); 3004afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayWrite(Vec v, viennacl::vector<PetscScalar> **a); 3104afb09dSKarl Rupp 32a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecCreateSeqViennaCLWithArray(MPI_Comm, PetscInt, PetscInt, const viennacl::vector<PetscScalar> *, Vec *); 3367d63736SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecCreateSeqViennaCLWithArrays(MPI_Comm, PetscInt, PetscInt, const PetscScalar *, const viennacl::vector<PetscScalar> *, Vec *); 34a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecCreateMPIViennaCLWithArray(MPI_Comm, PetscInt, PetscInt, PetscInt, const viennacl::vector<PetscScalar> *, Vec *); 3567d63736SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecCreateMPIViennaCLWithArrays(MPI_Comm, PetscInt, PetscInt, PetscInt, const PetscScalar *, const viennacl::vector<PetscScalar> *, Vec *); 36a83f5ae2SKaushik Kulkarni 37a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecViennaCLPlaceArray(Vec, const viennacl::vector<PetscScalar> *); 38a83f5ae2SKaushik Kulkarni PETSC_EXTERN PetscErrorCode VecViennaCLResetArray(Vec); 39