40 #ifndef TPETRA_LOCALCRSMATRIXOPERATOR_DECL_HPP
41 #define TPETRA_LOCALCRSMATRIXOPERATOR_DECL_HPP
43 #include "Tpetra_LocalCrsMatrixOperator_fwd.hpp"
44 #include "Tpetra_LocalOperator.hpp"
45 #include "KokkosSparse_CrsMatrix.hpp"
59 template<
class MultiVectorScalar,
class MatrixScalar,
class Device>
63 using mv_scalar_type =
65 using matrix_scalar_type =
66 typename LocalOperator<MatrixScalar, Device>::scalar_type;
71 using local_ordinal_type =
73 using execution_space =
typename Device::execution_space;
75 using local_matrix_type =
76 KokkosSparse::CrsMatrix<matrix_scalar_type,
80 using local_graph_type =
typename local_matrix_type::StaticCrsGraphType;
87 apply (Kokkos::View<
const mv_scalar_type**, array_layout,
88 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> > X,
89 Kokkos::View<mv_scalar_type**, array_layout,
90 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> > Y,
91 const Teuchos::ETransp mode,
92 const mv_scalar_type alpha,
93 const mv_scalar_type beta)
const override;
97 Kokkos::View<
const mv_scalar_type**, array_layout,
98 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> > X,
99 Kokkos::View<mv_scalar_type**, array_layout,
100 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> > Y,
101 const Teuchos::ETransp mode,
102 const mv_scalar_type alpha,
103 const mv_scalar_type beta)
const;
105 bool hasTransposeApply ()
const override;
107 const local_matrix_type& getLocalMatrix ()
const;
110 std::shared_ptr<local_matrix_type> A_;
115 #endif // TPETRA_LOCALCRSMATRIXOPERATOR_DECL_HPP
Abstract interface for local operators (e.g., matrices and preconditioners).
Abstract interface for local operators (e.g., matrices and preconditioners).
int local_ordinal_type
Default value of Scalar template parameter.
void applyImbalancedRows(Kokkos::View< const mv_scalar_type **, array_layout, device_type, Kokkos::MemoryTraits< Kokkos::Unmanaged > > X, Kokkos::View< mv_scalar_type **, array_layout, device_type, Kokkos::MemoryTraits< Kokkos::Unmanaged > > Y, const Teuchos::ETransp mode, const mv_scalar_type alpha, const mv_scalar_type beta) const
Same behavior as apply() above, except give KokkosKernels a hint to use an SPMV algorithm that can ef...