10#ifndef TPETRA_DETAILS_UNPACKCRSMATRIXANDCOMBINE_DECL_HPP
11#define TPETRA_DETAILS_UNPACKCRSMATRIXANDCOMBINE_DECL_HPP
13#include "TpetraCore_config.h"
15#include "Kokkos_DualView.hpp"
18#include "Tpetra_Details_DefaultTypes.hpp"
41#ifndef DOXYGEN_SHOULD_SKIP_THIS
97template <
typename ST,
typename LO,
typename GO,
typename NT>
99 const Teuchos::ArrayView<const char>& imports,
101 const Teuchos::ArrayView<const LO>&
importLIDs,
105template <
typename ST,
typename LO,
typename GO,
typename NT>
106void unpackCrsMatrixAndCombineNew(
108 Kokkos::DualView<
char*,
111 Kokkos::DualView<
size_t*,
114 const Kokkos::DualView<
const LO*,
174template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
178 const Teuchos::ArrayView<const LocalOrdinal>&
importLIDs,
179 const Teuchos::ArrayView<const char>& imports,
202template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
206 Kokkos::Device<
typename Node::device_type::execution_space,
207 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
213 const Kokkos::View<
const char*,
214 Kokkos::Device<
typename Node::device_type::execution_space,
215 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
221 const Kokkos::View<
const size_t*,
222 Kokkos::Device<
typename Node::device_type::execution_space,
223 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
229 const size_t numSameIDs,
231 Kokkos::Device<
typename Node::device_type::execution_space,
232 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
239 Kokkos::Device<
typename Node::device_type::execution_space,
240 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
250 Teuchos::ArrayRCP<Scalar>&
CRS_vals,
251 const Teuchos::ArrayView<const int>&
SourcePids,
254template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
258 Kokkos::Device<
typename Node::device_type::execution_space,
259 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
265 const Kokkos::View<
const char*,
266 Kokkos::Device<
typename Node::device_type::execution_space,
267 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
273 const Kokkos::View<
const size_t*,
274 Kokkos::Device<
typename Node::device_type::execution_space,
275 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
281 const size_t numSameIDs,
283 Kokkos::Device<
typename Node::device_type::execution_space,
284 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
291 Kokkos::Device<
typename Node::device_type::execution_space,
292 Tpetra::Details::DefaultTypes::comm_buffer_memory_space<typename Node::device_type>>
300 Kokkos::View<size_t*, typename Node::device_type>& ,
301 Kokkos::View<GlobalOrdinal*, typename Node::device_type>& ,
303 const Teuchos::ArrayView<const int>&
SourcePids,
304 Kokkos::View<int*, typename Node::device_type>& );
Declaration of Tpetra::CombineMode enum, and a function for setting a Tpetra::CombineMode parameter i...
Forward declaration of Tpetra::CrsMatrix.
Declaration of the Tpetra::DistObject class.
Struct that holds views of the contents of a CrsMatrix.
typename row_matrix_type::impl_scalar_type impl_scalar_type
The type used internally in place of Scalar.
Kokkos::Device< typename device_type::execution_space, buffer_memory_space > buffer_device_type
Kokkos::Device specialization for communication buffers.
Implementation details of Tpetra.
void unpackAndCombineIntoCrsArrays(const CrsGraph< LO, GO, NT > &sourceGraph, const Teuchos::ArrayView< const LO > &importLIDs, const Teuchos::ArrayView< const typename CrsGraph< LO, GO, NT >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const size_t constantNumPackets, const CombineMode combineMode, const size_t numSameIDs, const Teuchos::ArrayView< const LO > &permuteToLIDs, const Teuchos::ArrayView< const LO > &permuteFromLIDs, size_t TargetNumRows, size_t TargetNumNonzeros, const int MyTargetPID, const Teuchos::ArrayView< size_t > &CRS_rowptr, const Teuchos::ArrayView< GO > &CRS_colind, const Teuchos::ArrayView< const int > &SourcePids, Teuchos::Array< int > &TargetPids)
unpackAndCombineIntoCrsArrays
size_t unpackAndCombineWithOwningPIDsCount(const CrsGraph< LO, GO, NT > &sourceGraph, const Teuchos::ArrayView< const LO > &importLIDs, const Teuchos::ArrayView< const typename CrsGraph< LO, GO, NT >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, size_t constantNumPackets, CombineMode combineMode, size_t numSameIDs, const Teuchos::ArrayView< const LO > &permuteToLIDs, const Teuchos::ArrayView< const LO > &permuteFromLIDs)
Special version of Tpetra::Details::unpackCrsGraphAndCombine that also unpacks owning process ranks.
void unpackCrsMatrixAndCombine(const CrsMatrix< ST, LO, GO, NT > &sourceMatrix, const Teuchos::ArrayView< const char > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const Teuchos::ArrayView< const LO > &importLIDs, size_t constantNumPackets, CombineMode combineMode)
Unpack the imported column indices and values, and combine into matrix.
Namespace Tpetra contains the class and methods constituting the Tpetra library.
CombineMode
Rule for combining data in an Import or Export.