53#ifndef AMESOS2_KOKKOS_MULTIVEC_ADAPTER_DEF_HPP
54#define AMESOS2_KOKKOS_MULTIVEC_ADAPTER_DEF_HPP
63 template <
typename Scalar,
typename ExecutionSpace >
65 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
::MultiVecAdapter(
const Teuchos::RCP<multivec_t>& m )
69 template <
typename Scalar,
typename ExecutionSpace >
70 Teuchos::RCP< Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
72 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >::clone()
const
74 using MV = Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace>;
75 MV Y(
"clonedY", mv_->extent(0), mv_->extent(1));
76 return Teuchos::rcp( &Y );
79 template <
typename Scalar,
typename ExecutionSpace >
84 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::runtime_error,
"getMVPointer_impl not implemented.");
87 template <
typename Scalar,
typename ExecutionSpace >
90 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
::get1dCopy(
const Teuchos::ArrayView<scalar_t>& av,
93 const Tpetra::Map<local_ordinal_t, global_ordinal_t,
94 MultiVecAdapter<Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace>>::node_t>> distribution_map,
97 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::logic_error,
"get1dCopy for kokkos not implemented.");
100 template <
typename Scalar,
typename ExecutionSpace >
101 Teuchos::ArrayRCP<Scalar>
105 TEUCHOS_TEST_FOR_EXCEPTION(
106 true, std::logic_error,
"Amesos2::MultiVecAdapter::get1dViewNonConst: "
110 template <
typename Scalar,
typename ExecutionSpace>
113 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
::put1dData(
114 const Teuchos::ArrayView<const scalar_t>& new_data,
117 const Tpetra::Map<local_ordinal_t, global_ordinal_t,
118 MultiVecAdapter<Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace>>::node_t> > source_map,
121 TEUCHOS_TEST_FOR_EXCEPTION(
122 true, std::logic_error,
"Amesos2::MultiVecAdapter::put1dData: "
126 template <
typename Scalar,
typename ExecutionSpace >
129 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
::description()
const
131 std::ostringstream oss;
132 oss <<
"Amesos2 adapter wrapping: ";
133 oss <<
mv_->description();
138 template <
typename Scalar,
typename ExecutionSpace >
141 Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
::describe (Teuchos::FancyOStream& os,
142 const Teuchos::EVerbosityLevel verbLevel)
const
144 mv_->describe (os, verbLevel);
Amesos2::MultiVecAdapter specialization for the Kokkos::View class.
Copy or assign views based on memory spaces.
void put1dData(const Teuchos::ArrayView< const scalar_t > &new_data, size_t lda, Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > > distribution_map, EDistribution) const
Export data into the global MultiVector space.
Definition Amesos2_KokkosMultiVecAdapter_def.hpp:113
Scalar * getMVPointer_impl() const
Return pointer to vector when number of vectors == 1 and single MPI process.
Definition Amesos2_KokkosMultiVecAdapter_def.hpp:82
void describe(Teuchos::FancyOStream &os, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Print a description of this adapter to the given output stream.
Definition Amesos2_KokkosMultiVecAdapter_def.hpp:141
void get1dCopy(const Teuchos::ArrayView< scalar_t > &av, size_t lda, Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > > distribution_map, EDistribution distribution) const
Copies the multivector's data into the user-provided vector.
Definition Amesos2_KokkosMultiVecAdapter_def.hpp:90
MultiVecAdapter(const MultiVecAdapter< multivec_t > &adapter)
Copy constructor.
Teuchos::RCP< multivec_t > mv_
The multivector which this adapter wraps.
Definition Amesos2_KokkosMultiVecAdapter_decl.hpp:294
std::string description() const
Get a short description of this adapter class.
Definition Amesos2_KokkosMultiVecAdapter_def.hpp:129
Teuchos::ArrayRCP< scalar_t > get1dViewNonConst(bool local=false)
Extracts a 1 dimensional view of this MultiVector's data.
Definition Amesos2_KokkosMultiVecAdapter_def.hpp:103
EDistribution
Definition Amesos2_TypeDecl.hpp:123
A templated MultiVector class adapter for Amesos2.
Definition Amesos2_MultiVecAdapter_decl.hpp:176