Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp File Reference

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 "TpetraCore_config.h"
#include "Teuchos_Array.hpp"
#include "Teuchos_ArrayView.hpp"
#include "Teuchos_OrdinalTraits.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 "Kokkos_Core.hpp"
#include <memory>
#include <string>

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

namespace  Tpetra
 Namespace Tpetra contains the class and methods constituting the Tpetra library.
 
namespace  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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
template<typename Scalar , typename LocalOrdinal , typename GlobalOrdinal , typename Node >
void Tpetra::Details::unpackAndCombineIntoCrsArrays (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, const size_t constantNumPackets, const CombineMode 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< typename CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::impl_scalar_type > &CRS_vals, const Teuchos::ArrayView< const int > &SourcePids, Teuchos::Array< int > &TargetPids)
 unpackAndCombineIntoCrsArrays
 

Detailed Description

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.

Warning
This file, and its contents, are implementation details of Tpetra. The file itself or its contents may disappear or change at any time.

Data (bytes) describing the row of the CRS matrix are "packed" (concatenated) in to a (view of) char* object in the following order:

  1. number of entries (LocalOrdinal)
  2. global column indices (GlobalOrdinal)
  3. proces IDs (optional, int)
  4. row values (Scalar)

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.

Function Documentation

◆ unpackRow()

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.

Template Parameters
STThe type of the numerical entries of the matrix. (You can use real-valued or complex-valued types here, unlike in Epetra, where the scalar type is always double.)
LOThe type of local indices. See the documentation of Map for requirements.
GOThe type of global indices. See the documentation of Map for requirements.

Definition at line 99 of file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.

◆ compute_maximum_num_entries()

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.

Template Parameters
LOThe type of local indices.
DTThe Kokkos device type.
The"buffer device type."

This procedure is a higher-level interface to NumEntriesFunctor.

Definition at line 503 of file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.

◆ compute_total_num_entries()

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.

Template Parameters
LOThe type of local indices.
DTThe Kokkos device type.
BDTThe "buffer device type."

This procedure is a high level interface to NumEntriesFunctor

Definition at line 532 of file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.

◆ compute_batch_info()

template<class View1 , class View2 >
bool Tpetra::Details::UnpackAndCombineCrsMatrixImpl::compute_batch_info ( const View1 &  batches_per_lid,
View2 &  batch_info 
)
inline

Compute the index and batch number associated with each batch.

batch_info(i, 0) is the local index of the ith batch batch_info(i, 1) is the local batch number of the ith batch

Definition at line 578 of file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.

◆ unpackAndCombineIntoCrsMatrix()

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.

Template Parameters
LocalMatrixthe specialization of the KokkosSparse::CrsMatrix local matrix
LocalMapthe type of the local column map

This is a higher level interface to the UnpackCrsMatrixAndCombineFunctor

Definition at line 606 of file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.

◆ setupRowPointersForRemotes()

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.

Definition at line 805 of file Tpetra_Details_unpackCrsMatrixAndCombine_def.hpp.