Actual source code: petscmat_kokkos.hpp

      1: #pragma once

      3: #include <petscconf.h>

      5: /* SUBMANSEC = Mat */

      7: #if defined(PETSC_HAVE_KOKKOS)

      9:   #include <Kokkos_Core.hpp>
     10: #include <petscmat.h>

     12: /*@C
     13:    MatCreateSeqAIJKokkosWithKokkosViews - Creates a MATSEQAIJKOKKOS matrix with Kokkos views of the aij data

     15:    Synopsis:
     16: #include <petscmat_kokkos.hpp>
     17:    PetscErrorCode MatCreateSeqAIJKokkosWithKokkosViews  (MPI_Comm comm, PetscInt m, PetscInt n, Kokkos::View<PetscInt *>& i_d, Kokkos::View<PetscInt *>& j_d, Kokkos::View<PetscScalar *>& a_d, Mat *A);

     19:    Logically Collective, No Fortran Support

     21:    Input Parameter:
     22: +  comm  - the MPI communicator
     23: -  m     - row size
     24: -  n     - the column size
     25: -  i     - the Kokkos view of row data (in Kokkos::DefaultExecutionSpace)
     26: -  j     - the Kokkos view of the column data (in Kokkos::DefaultExecutionSpace)
     27: -  a     - the Kokkos view of the values (in Kokkos::DefaultExecutionSpace)

     29:    Output Parameter:
     30: .  A  - the `MATSEQAIJKOKKOS` matrix

     32:    Level: intermediate

     34:    Notes:
     35:    Creates a Mat given the csr data input as Kokkos views. This routine allows a Mat
     36:    to be built without involving the host. Don't modify entries in the views after this routine.
     37:    There should be no outstanding asynchronous operations on the views (ie this routine does not call fence()
     38:    before using the views)

     40: .seealso:
     41: @*/
     42: PetscErrorCode MatCreateSeqAIJKokkosWithKokkosViews(MPI_Comm, PetscInt, PetscInt, Kokkos::View<PetscInt *> &, Kokkos::View<PetscInt *> &, Kokkos::View<PetscScalar *> &, Mat *);

     44: #endif