39 class MultiVecAdapter<Kokkos::View<Scalar**, Kokkos::LayoutLeft, ExecutionSpace> >
43 typedef Tpetra::Map<>::node_type node_t;
44 typedef Kokkos::View<Scalar**,Kokkos::LayoutLeft, ExecutionSpace> multivec_t;
45 typedef int local_ordinal_t;
46 typedef Tpetra::Map<>::global_ordinal_type global_ordinal_t;
47 typedef size_t global_size_t;
48 typedef Scalar scalar_t;
49 typedef scalar_t host_value_t;
51 typedef Kokkos::View<scalar_t**, Kokkos::LayoutLeft, ExecutionSpace> kokkos_view_t;
53 friend Teuchos::RCP<MultiVecAdapter<multivec_t> > createMultiVecAdapter<> (Teuchos::RCP<multivec_t>);
54 friend Teuchos::RCP<const MultiVecAdapter<multivec_t> > createConstMultiVecAdapter<> (Teuchos::RCP<const multivec_t>);
56 static const char* name;
82 if(getComm()->getSize() == 1){
88 bool isGloballyIndexed()
const;
90 Teuchos::RCP<
const Tpetra::Map<
100 Teuchos::RCP<const Teuchos::Comm<int> >
getComm()
const
102 return Teuchos::rcp(
new Teuchos::SerialComm<int>());
108 return mv_->extent(0);
115 return mv_->extent(1);
122 return mv_->extent(0);
129 return mv_->extent(1);
136 return mv_->getStride();
143 return mv_->isConstantStride();
147 Scalar * getMVPointer_impl()
const;
150 Teuchos::RCP<multivec_t> clone()
const;
181 get1dCopy (
const Teuchos::ArrayView<scalar_t>& av,
184 const Tpetra::Map<local_ordinal_t,
186 node_t> > distribution_map,
189 template<
typename KV>
191 get1dCopy_kokkos_view (
192 bool bInitialize, KV& kokkos_view,
193 [[maybe_unused]]
size_t lda,
194 [[maybe_unused]] Teuchos::Ptr<
195 const Tpetra::Map<local_ordinal_t,
202 deep_copy_or_assign_view(bInitialize, kokkos_view, *mv_, bAssigned);
219 Teuchos::ArrayRCP<scalar_t> get1dViewNonConst (
bool local =
false);
231 put1dData (
const Teuchos::ArrayView<const scalar_t>& new_data,
234 const Tpetra::Map<local_ordinal_t,
236 node_t> > distribution_map,
237 EDistribution)
const;
239 template<
typename KV>
241 put1dData_kokkos_view (
243 [[maybe_unused]]
size_t lda,
244 [[maybe_unused]] Teuchos::Ptr<
245 const Tpetra::Map<local_ordinal_t,
251 deep_copy_or_assign_view(*mv_, kokkos_new_data);
254 template<
typename KV,
typename host_ordinal_type_array>
256 gather (KV& kokkos_new_view,
257 host_ordinal_type_array &perm_g2l,
258 host_ordinal_type_array &recvCountRows,
259 host_ordinal_type_array &recvDisplRows,
260 EDistribution distribution )
const;
262 template<
typename KV,
typename host_ordinal_type_array>
264 scatter (KV& kokkos_old_view,
265 host_ordinal_type_array &perm_g2l,
266 host_ordinal_type_array &recvCountRows,
267 host_ordinal_type_array &recvDisplRows,
268 EDistribution distribution )
const;
271 std::string description ()
const;
275 describe (Teuchos::FancyOStream& os,
276 const Teuchos::EVerbosityLevel verbLevel =
277 Teuchos::Describable::verbLevel_default)
const;
282 Teuchos::RCP<multivec_t>
mv_;
285 typedef Tpetra::Export<local_ordinal_t, global_ordinal_t, node_t>
export_type;
288 typedef Tpetra::Import<local_ordinal_t, global_ordinal_t, node_t>
import_type;