xref: /petsc/include/petscviennacl.h (revision df4cd43f92eaa320656440c40edb1046daee8f75)
1 #ifndef PETSCVIENNACL_H
2 #define PETSCVIENNACL_H
3 
4 #include <petscvec.h>
5 
6 #if defined(PETSC_HAVE_CUDA)
7   #define VIENNACL_WITH_CUDA
8 #endif
9 
10 #if defined(PETSC_HAVE_OPENCL)
11   #define VIENNACL_WITH_OPENCL
12 #endif
13 
14 #if defined(PETSC_HAVE_OPENMP)
15   #define VIENNACL_WITH_OPENMP
16 #endif
17 
18 #include <viennacl/forwards.h>
19 #include <viennacl/vector_proxy.hpp>
20 #include <viennacl/vector.hpp>
21 
22 PETSC_EXTERN PetscErrorCode VecViennaCLGetArray(Vec v, viennacl::vector<PetscScalar> **a);
23 PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArray(Vec v, viennacl::vector<PetscScalar> **a);
24 
25 PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayRead(Vec v, const viennacl::vector<PetscScalar> **a);
26 PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayRead(Vec v, const viennacl::vector<PetscScalar> **a);
27 
28 PETSC_EXTERN PetscErrorCode VecViennaCLGetArrayWrite(Vec v, viennacl::vector<PetscScalar> **a);
29 PETSC_EXTERN PetscErrorCode VecViennaCLRestoreArrayWrite(Vec v, viennacl::vector<PetscScalar> **a);
30 
31 PETSC_EXTERN PetscErrorCode VecCreateSeqViennaCLWithArray(MPI_Comm, PetscInt, PetscInt, const viennacl::vector<PetscScalar> *, Vec *);
32 PETSC_EXTERN PetscErrorCode VecCreateSeqViennaCLWithArrays(MPI_Comm, PetscInt, PetscInt, const PetscScalar *, const viennacl::vector<PetscScalar> *, Vec *);
33 PETSC_EXTERN PetscErrorCode VecCreateMPIViennaCLWithArray(MPI_Comm, PetscInt, PetscInt, PetscInt, const viennacl::vector<PetscScalar> *, Vec *);
34 PETSC_EXTERN PetscErrorCode VecCreateMPIViennaCLWithArrays(MPI_Comm, PetscInt, PetscInt, PetscInt, const PetscScalar *, const viennacl::vector<PetscScalar> *, Vec *);
35 
36 PETSC_EXTERN PetscErrorCode VecViennaCLPlaceArray(Vec, const viennacl::vector<PetscScalar> *);
37 PETSC_EXTERN PetscErrorCode VecViennaCLResetArray(Vec);
38 
39 #endif
40