xref: /petsc/include/petscviennacl.h (revision 0ff9d02ecf1627951ed050a8344155223c6ca4ea)
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