19 #ifndef AMESOS2_KOKKOS_MULTIVEC_ADAPTER_DEF_HPP
20 #define AMESOS2_KOKKOS_MULTIVEC_ADAPTER_DEF_HPP
22 #include <type_traits>
29 template <
typename Scalar,
typename ExecutionSpace >
31 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
::MultiVecAdapter(
const Teuchos::RCP<multivec_t>& m )
35 template <
typename Scalar,
typename ExecutionSpace >
36 Teuchos::RCP< Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
38 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::clone()
const
40 using MV = Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace>;
41 MV Y(
"clonedY", mv_->extent(0), mv_->extent(1));
42 return Teuchos::rcp( &Y );
45 template <
typename Scalar,
typename ExecutionSpace >
48 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::getMVPointer_impl()
const
50 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::runtime_error,
"getMVPointer_impl not implemented.");
53 template <
typename Scalar,
typename ExecutionSpace >
56 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::get1dCopy(
const Teuchos::ArrayView<scalar_t>& av,
59 const Tpetra::Map<local_ordinal_t, global_ordinal_t,
60 MultiVecAdapter<Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace>>::node_t>> distribution_map,
63 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::logic_error,
"get1dCopy for kokkos not implemented.");
66 template <
typename Scalar,
typename ExecutionSpace >
67 Teuchos::ArrayRCP<Scalar>
69 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::get1dViewNonConst (
bool local)
71 TEUCHOS_TEST_FOR_EXCEPTION(
72 true, std::logic_error,
"Amesos2::MultiVecAdapter::get1dViewNonConst: "
76 template <
typename Scalar,
typename ExecutionSpace>
79 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::put1dData(
80 const Teuchos::ArrayView<const scalar_t>& new_data,
83 const Tpetra::Map<local_ordinal_t, global_ordinal_t,
84 MultiVecAdapter<Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace>>::node_t> > source_map,
87 TEUCHOS_TEST_FOR_EXCEPTION(
88 true, std::logic_error,
"Amesos2::MultiVecAdapter::put1dData: "
92 template <
typename Scalar,
typename ExecutionSpace >
95 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::description()
const
97 std::ostringstream oss;
98 oss <<
"Amesos2 adapter wrapping: ";
99 oss << mv_->description();
104 template <
typename Scalar,
typename ExecutionSpace >
107 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::describe (Teuchos::FancyOStream& os,
108 const Teuchos::EVerbosityLevel verbLevel)
const
110 mv_->describe (os, verbLevel);
115 #endif // AMESOS2_KOKKOS_MULTIVEC_ADAPTER_DEF_HPP
Amesos2::MultiVecAdapter specialization for the Kokkos::View class.
Copy or assign views based on memory spaces.
EDistribution
Definition: Amesos2_TypeDecl.hpp:89
A templated MultiVector class adapter for Amesos2.
Definition: Amesos2_MultiVecAdapter_decl.hpp:142