Tpetra parallel linear algebra
Version of the Day
|
Definition of functions for unpacking the entries of a Tpetra::CrsGraph for communication, in the case where it is valid to go to the KokkosSparse::CrsGraph (local sparse graph data structure) directly. More...
#include "TpetraCore_config.h"
#include "Teuchos_Array.hpp"
#include "Teuchos_ArrayView.hpp"
#include "Tpetra_Details_castAwayConstDualView.hpp"
#include "Tpetra_Details_computeOffsets.hpp"
#include "Tpetra_Details_createMirrorView.hpp"
#include "Tpetra_Details_OrdinalTraits.hpp"
#include "Tpetra_Details_Behavior.hpp"
#include "Tpetra_CrsGraph_decl.hpp"
#include "Tpetra_Details_getEntryOnHost.hpp"
#include "Tpetra_Details_crsUtils.hpp"
#include "Kokkos_Core.hpp"
#include <memory>
#include <string>
Go to the source code of this file.
Classes | |
class | Tpetra::Details::UnpackAndCombineCrsGraphImpl::UnpackAndCombineFunctor< LocalOrdinal, Packet, RowView, IndicesView, Device, BufferDevice > |
Unpacks and combines a single row of the CrsGraph. More... | |
Namespaces | |
Tpetra | |
Namespace Tpetra contains the class and methods constituting the Tpetra library. | |
Tpetra::Details | |
Namespace for Tpetra implementation details. | |
Functions | |
template<class Packet , class GO , class Device , class BufferDevice > | |
KOKKOS_FUNCTION int | Tpetra::Details::UnpackAndCombineCrsGraphImpl::unpackRow (typename Kokkos::View< GO *, Device, Kokkos::MemoryUnmanaged > &gids_out, typename Kokkos::View< int *, Device, Kokkos::MemoryUnmanaged > &pids_out, const Kokkos::View< const Packet *, BufferDevice > &imports, const size_t offset, const size_t num_ent) |
Unpack a single row of a CrsGraph. More... | |
template<class LocalOrdinal , class Packet , class RowView , class IndicesView , class Device , class BufferDevice > | |
void | Tpetra::Details::UnpackAndCombineCrsGraphImpl::unpackAndCombine (RowView &row_ptrs_beg, RowView &row_ptrs_end, IndicesView &indices, const Kokkos::View< const Packet *, BufferDevice, Kokkos::MemoryUnmanaged > &imports, const Kokkos::View< const size_t *, BufferDevice, Kokkos::MemoryUnmanaged > &num_packets_per_lid, const Kokkos::View< const LocalOrdinal *, Device, Kokkos::MemoryUnmanaged > &import_lids, const bool unpack_pids) |
Perform the unpack operation for the graph. More... | |
template<class Packet , class LO , class Device , class BufferDevice > | |
void | Tpetra::Details::UnpackAndCombineCrsGraphImpl::setupRowPointersForRemotes (const Kokkos::View< size_t *, Device > &tgt_rowptr, const Kokkos::View< const LO *, Device > &import_lids, const Kokkos::View< const Packet *, BufferDevice > &, const Kokkos::View< const size_t *, BufferDevice > &num_packets_per_lid) |
Setup row pointers for remotes. More... | |
template<class LO , class GO , class Node > | |
void | Tpetra::Details::unpackCrsGraphAndCombine (CrsGraph< LO, GO, Node > &graph, const Teuchos::ArrayView< const typename CrsGraph< LO, GO, Node >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const Teuchos::ArrayView< const LO > &importLIDs, size_t, Distributor &, CombineMode) |
Unpack the imported column indices and combine into graph. More... | |
template<class LocalOrdinal , class GlobalOrdinal , class Node > | |
size_t | Tpetra::Details::unpackAndCombineWithOwningPIDsCount (const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > &sourceGraph, const Teuchos::ArrayView< const LocalOrdinal > &importLIDs, const Teuchos::ArrayView< const typename CrsGraph< LocalOrdinal, GlobalOrdinal, Node >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, size_t, Distributor &, CombineMode, size_t numSameIDs, const Teuchos::ArrayView< const LocalOrdinal > &permuteToLIDs, const Teuchos::ArrayView< const LocalOrdinal > &permuteFromLIDs) |
Special version of Tpetra::Details::unpackCrsGraphAndCombine that also unpacks owning process ranks. More... | |
template<class LocalOrdinal , class GlobalOrdinal , class Node > | |
void | Tpetra::Details::unpackAndCombineIntoCrsArrays (const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > &sourceGraph, const Teuchos::ArrayView< const LocalOrdinal > &importLIDs, const Teuchos::ArrayView< const typename CrsGraph< LocalOrdinal, GlobalOrdinal, Node >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const size_t, Distributor &, const CombineMode, const size_t numSameIDs, const Teuchos::ArrayView< const LocalOrdinal > &permuteToLIDs, const Teuchos::ArrayView< const LocalOrdinal > &permuteFromLIDs, size_t TargetNumRows, size_t TargetNumNonzeros, const int MyTargetPID, const Teuchos::ArrayView< size_t > &CRS_rowptr, const Teuchos::ArrayView< GlobalOrdinal > &CRS_colind, const Teuchos::ArrayView< const int > &SourcePids, Teuchos::Array< int > &TargetPids) |
unpackAndCombineIntoCrsArrays More... | |
Definition of functions for unpacking the entries of a Tpetra::CrsGraph for communication, in the case where it is valid to go to the KokkosSparse::CrsGraph (local sparse graph data structure) directly.
Data (bytes) describing the row of the CRS graph are "packed" (concatenated) in to a (view of) Packet* object in the following order:
The functions in this file are companions to Tpetra_Details_packCrsGraph.hpp, i.e., Tpetra_Details_packCrsGraph.hpp implements the packing order described above to ensure proper unpacking.
Definition in file Tpetra_Details_unpackCrsGraphAndCombine_def.hpp.