104afb09dSKarl Rupp #if !defined(__PETSCVIENNACL_H) 204afb09dSKarl Rupp #define __PETSCVIENNACL_H 304afb09dSKarl Rupp 404afb09dSKarl Rupp #include <petscvec.h> 5*0cd40bc2SKarl Rupp 6*0cd40bc2SKarl Rupp #if defined(PETSC_HAVE_CUDA) 7*0cd40bc2SKarl Rupp #define VIENNACL_WITH_CUDA 8*0cd40bc2SKarl Rupp #endif 9*0cd40bc2SKarl Rupp 10*0cd40bc2SKarl Rupp #if defined(PETSC_HAVE_OPENCL) 11*0cd40bc2SKarl Rupp #define VIENNACL_WITH_OPENCL 12*0cd40bc2SKarl Rupp #endif 13*0cd40bc2SKarl Rupp 14*0cd40bc2SKarl Rupp #if defined(PETSC_HAVE_OPENMP) 15*0cd40bc2SKarl Rupp #define VIENNACL_WITH_OPENMP 16*0cd40bc2SKarl Rupp #endif 17*0cd40bc2SKarl Rupp 18269c5266SKarl Rupp #include <viennacl/forwards.h> 19269c5266SKarl Rupp #include <viennacl/vector_proxy.hpp> 2004afb09dSKarl Rupp #include <viennacl/vector.hpp> 2104afb09dSKarl Rupp 2204afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayReadWrite(Vec v, viennacl::vector<PetscScalar> **a); 2304afb09dSKarl Rupp PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayReadWrite(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 3104afb09dSKarl Rupp 3204afb09dSKarl Rupp #endif 33