Tpetra parallel linear algebra
Version of the Day
|
Definition of functions for unpacking the entries of a Tpetra::CrsMatrix for communication, in the case where it is valid to go to the KokkosSparse::CrsMatrix (local sparse matrix data structure) directly. More...
#include <memory>
#include <string>
#include "TpetraCore_config.h"
#include "Kokkos_Core.hpp"
#include "Teuchos_Array.hpp"
#include "Teuchos_ArrayView.hpp"
#include "Teuchos_OrdinalTraits.hpp"
#include "Teuchos_TimeMonitor.hpp"
#include "Tpetra_Details_castAwayConstDualView.hpp"
#include "Tpetra_Details_computeOffsets.hpp"
#include "Tpetra_Details_createMirrorView.hpp"
#include "Tpetra_Details_OrdinalTraits.hpp"
#include "Tpetra_Details_PackTraits.hpp"
#include "Tpetra_CrsMatrix_decl.hpp"
#include "Tpetra_Details_getEntryOnHost.hpp"
#include "Tpetra_Details_DefaultTypes.hpp"
#include "Tpetra_Details_ExecutionSpaces.hpp"
Go to the source code of this file.
Classes | |
struct | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::UnpackCrsMatrixAndCombineFunctor< LocalMatrix, LocalMap, BufferDeviceType > |
Unpacks and combines a single row of the CrsMatrix. More... | |
class | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::NumEntriesFunctor< LO, DT, BDT > |
Kokkos::parallel_reduce functor to determine the number of entries (to unpack) in a KokkosSparse::CrsMatrix to pack. More... | |
Namespaces | |
Tpetra | |
Namespace Tpetra contains the class and methods constituting the Tpetra library. | |
Tpetra::Details | |
Nonmember function that computes a residual Computes R = B - A * X. | |
Functions | |
template<class ST , class LO , class GO > | |
KOKKOS_FUNCTION int | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::unpackRow (const typename PackTraits< GO >::output_array_type &gids_out, const typename PackTraits< int >::output_array_type &pids_out, const typename PackTraits< ST >::output_array_type &vals_out, const char imports[], const size_t offset, const size_t, const size_t num_ent, const size_t bytes_per_value) |
Unpack a single row of a CrsMatrix. More... | |
template<class LO , class DT , class BDT > | |
size_t | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::compute_maximum_num_entries (const Kokkos::View< const size_t *, BDT > &num_packets_per_lid, const Kokkos::View< const size_t *, DT > &offsets, const Kokkos::View< const char *, BDT > &imports) |
Maximum number of entries in any row of the packed matrix. More... | |
template<class LO , class DT , class BDT > | |
size_t | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::compute_total_num_entries (const Kokkos::View< const size_t *, BDT > &num_packets_per_lid, const Kokkos::View< const size_t *, DT > &offsets, const Kokkos::View< const char *, BDT > &imports) |
Total number of entries in any row of the packed matrix. More... | |
template<class View1 , class View2 > | |
bool | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::compute_batch_info (const View1 &batches_per_lid, View2 &batch_info) |
Compute the index and batch number associated with each batch. More... | |
template<class LocalMatrix , class LocalMap , class BufferDeviceType > | |
void | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::unpackAndCombineIntoCrsMatrix (const LocalMatrix &local_matrix, const LocalMap &local_map, const Kokkos::View< const char *, BufferDeviceType > &imports, const Kokkos::View< const size_t *, BufferDeviceType > &num_packets_per_lid, const typename PackTraits< typename LocalMap::local_ordinal_type >::input_array_type import_lids, const Tpetra::CombineMode combine_mode) |
Perform the unpack operation for the matrix. More... | |
template<class LO , class DT , class BDT > | |
int | Tpetra::Details::UnpackAndCombineCrsMatrixImpl::setupRowPointersForRemotes (const typename PackTraits< size_t >::output_array_type &tgt_rowptr, const typename PackTraits< LO >::input_array_type &import_lids, const Kokkos::View< const char *, BDT > &imports, const Kokkos::View< const size_t *, BDT > &num_packets_per_lid, const typename PackTraits< size_t >::input_array_type &offsets) |
Setup row pointers for remotes. More... | |
template<typename ST , typename LO , typename GO , typename Node > | |
void | Tpetra::Details::unpackCrsMatrixAndCombine (const CrsMatrix< ST, LO, GO, Node > &sourceMatrix, const Teuchos::ArrayView< const char > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const Teuchos::ArrayView< const LO > &importLIDs, size_t, CombineMode combineMode) |
Unpack the imported column indices and values, and combine into matrix. More... | |
template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , typename Node > | |
size_t | Tpetra::Details::unpackAndCombineWithOwningPIDsCount (const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &sourceMatrix, const Teuchos::ArrayView< const LocalOrdinal > &importLIDs, const Teuchos::ArrayView< const char > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, size_t constantNumPackets, CombineMode combineMode, size_t numSameIDs, const Teuchos::ArrayView< const LocalOrdinal > &permuteToLIDs, const Teuchos::ArrayView< const LocalOrdinal > &permuteFromLIDs) |
Special version of Tpetra::Details::unpackCrsMatrixAndCombine that also unpacks owning process ranks. More... | |
template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , typename Node > | |
void | Tpetra::Details::unpackAndCombineIntoCrsArrays (const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &sourceMatrix, const Kokkos::View< LocalOrdinal const *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void > import_lids_d, const Kokkos::View< const char *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void > imports_d, const Kokkos::View< const size_t *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void > num_packets_per_lid_d, const size_t numSameIDs, const Kokkos::View< LocalOrdinal const *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void > permute_to_lids_d, const Kokkos::View< LocalOrdinal const *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void > permute_from_lids_d, size_t TargetNumRows, const int MyTargetPID, Kokkos::View< size_t *, typename Node::device_type > &crs_rowptr_d, Kokkos::View< GlobalOrdinal *, typename Node::device_type > &crs_colind_d, Kokkos::View< typename CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::impl_scalar_type *, typename Node::device_type > &crs_vals_d, const Teuchos::ArrayView< const int > &SourcePids, Kokkos::View< int *, typename Node::device_type > &TargetPids) |
unpackAndCombineIntoCrsArrays More... | |
template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , typename Node > | |
void | Tpetra::Details::unpackAndCombineIntoCrsArrays (const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &sourceMatrix, const Kokkos::View< LocalOrdinal const *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void >, const Kokkos::View< const char *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void >, const Kokkos::View< const size_t *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void >, const size_t numSameIDs, const Kokkos::View< LocalOrdinal const *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void >, const Kokkos::View< LocalOrdinal const *, Kokkos::Device< typename Node::device_type::execution_space, Tpetra::Details::DefaultTypes::comm_buffer_memory_space< typename Node::device_type >>, void, void >, size_t TargetNumRows, const int MyTargetPID, Teuchos::ArrayRCP< size_t > &CRS_rowptr, Teuchos::ArrayRCP< GlobalOrdinal > &CRS_colind, Teuchos::ArrayRCP< Scalar > &CRS_vals, const Teuchos::ArrayView< const int > &SourcePids, Teuchos::Array< int > &TargetPids) |
unpackAndCombineIntoCrsArrays More... | |
Definition of functions for unpacking the entries of a Tpetra::CrsMatrix for communication, in the case where it is valid to go to the KokkosSparse::CrsMatrix (local sparse matrix data structure) directly.
Data (bytes) describing the row of the CRS matrix are "packed" (concatenated) in to a (view of) char* object in the following order:
The functions in this file are companions to Tpetra_Details_packCrsMatrix.hpp, i.e., Tpetra_Details_packCrsMatrix.hpp implements the packing order described above to ensure proper unpacking.
Definition in file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.