20 #ifndef AMESOS2_KOKKOSCRSMATRIX_MATRIXADAPTER_DECL_HPP
21 #define AMESOS2_KOKKOSCRSMATRIX_MATRIXADAPTER_DECL_HPP
23 #include "Amesos2_config.h"
25 #include "Amesos2_MatrixAdapter_decl.hpp"
26 #include "KokkosSparse_CrsMatrix.hpp"
39 template <
typename Scalar,
40 typename LocalOrdinal,
41 typename ExecutionSpace>
42 class ConcreteMatrixAdapter<KokkosSparse::CrsMatrix<Scalar, LocalOrdinal, ExecutionSpace>> :
43 public MatrixAdapter<KokkosSparse::CrsMatrix<Scalar, LocalOrdinal, ExecutionSpace>>
46 typedef KokkosSparse::CrsMatrix<Scalar, LocalOrdinal, ExecutionSpace> matrix_t;
49 typedef typename MatrixTraits<matrix_t>::scalar_t scalar_t;
50 typedef typename MatrixTraits<matrix_t>::local_ordinal_t local_ordinal_t;
51 typedef typename MatrixTraits<matrix_t>::global_ordinal_t global_ordinal_t;
52 typedef typename MatrixTraits<matrix_t>::node_t node_t;
53 typedef typename MatrixTraits<matrix_t>::global_size_t global_size_t;
56 typedef ConcreteMatrixAdapter<matrix_t> type;
57 typedef typename MatrixTraits<matrix_t>::major_access major_access;
59 ConcreteMatrixAdapter(Teuchos::RCP<matrix_t> m);
61 Teuchos::RCP<const MatrixAdapter<matrix_t> > get_impl(
const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > map,
EDistribution distribution = ROOTED)
const;
63 const Teuchos::RCP<const Teuchos::Comm<int> > getComm_impl()
const;
64 global_size_t getGlobalNumRows_impl()
const;
65 global_size_t getGlobalNumCols_impl()
const;
66 global_size_t getGlobalNNZ_impl()
const;
69 void getSparseRowPtr_kokkos_view(KV & view)
const {
70 deep_copy_or_assign_view(view, this->mat_->graph.row_map);
74 void getSparseColInd_kokkos_view(KV & view)
const {
75 deep_copy_or_assign_view(view, this->mat_->graph.entries);
79 void getSparseValues_kokkos_view(KV & view)
const {
80 deep_copy_or_assign_view(view, this->mat_->values);
83 size_t getGlobalRowNNZ_impl(global_ordinal_t row)
const;
84 size_t getLocalRowNNZ_impl(local_ordinal_t row)
const;
85 size_t getGlobalColNNZ_impl(global_ordinal_t col)
const;
86 size_t getLocalColNNZ_impl(local_ordinal_t col)
const;
88 global_size_t getRowIndexBase()
const;
89 global_size_t getColumnIndexBase()
const;
91 const Teuchos::RCP<
const Tpetra::Map<local_ordinal_t,
96 const Teuchos::RCP<
const Tpetra::Map<local_ordinal_t,
99 getRowMap_impl()
const;
101 const Teuchos::RCP<
const Tpetra::Map<local_ordinal_t,
104 getColMap_impl()
const;
107 void getGlobalRowCopy_impl(global_ordinal_t row,
108 const Teuchos::ArrayView<global_ordinal_t>& indices,
109 const Teuchos::ArrayView<scalar_t>& vals,
112 void getGlobalColCopy_impl(global_ordinal_t col,
113 const Teuchos::ArrayView<global_ordinal_t>& indices,
114 const Teuchos::ArrayView<scalar_t>& vals,
118 template <
typename KV_GO,
typename KV_S>
119 void getGlobalRowCopy_kokkos_view_impl(global_ordinal_t row,
128 #endif // AMESOS2_KOKKOSCRSMATRIX_MATRIXADAPTER_DECL_HPP
Copy or assign views based on memory spaces.
A Matrix adapter interface for Amesos2.
Definition: Amesos2_MatrixAdapter_decl.hpp:42
Indicates that the concrete class can use the generic getC{c|r}s methods implemented in MatrixAdapter...
Definition: Amesos2_TypeDecl.hpp:57
EDistribution
Definition: Amesos2_TypeDecl.hpp:89