Tpetra parallel linear algebra
Version of the Day
|
Communication plan for data redistribution from a (possibly) multiply-owned to a uniquely-owned distribution. More...
#include <Tpetra_Export_decl.hpp>
Public Types | |
typedef ::Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > | map_type |
The specialization of Map used by this class. More... | |
Public Member Functions | |
Constructor/Destructor Methods | |
Export (const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target) | |
Construct a Export object from the source and target Map. More... | |
Export (const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const RCP< Teuchos::FancyOStream > &out) | |
Construct an Export from the source and target Maps, with an output stream for debugging output. More... | |
Export (const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const Teuchos::RCP< Teuchos::ParameterList > &plist) | |
Constructor (with list of parameters) More... | |
Export (const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const RCP< Teuchos::FancyOStream > &out, const Teuchos::RCP< Teuchos::ParameterList > &plist) | |
Constructor (with list of parameters and debugging output stream) More... | |
Export (const Export< LocalOrdinal, GlobalOrdinal, Node > &rhs) | |
Copy constructor. More... | |
Export (const Import< LocalOrdinal, GlobalOrdinal, Node > &importer) | |
"Copy" constructor from an Export object. More... | |
virtual | ~Export () |
Destructor. More... | |
void | setParameterList (const Teuchos::RCP< Teuchos::ParameterList > &plist) |
Set parameters. More... | |
Export Attribute Methods | |
size_t | getNumSameIDs () const |
Number of initial identical IDs. More... | |
size_t | getNumPermuteIDs () const |
Number of IDs to permute but not to communicate. More... | |
ArrayView< const LocalOrdinal > | getPermuteFromLIDs () const |
List of local IDs in the source Map that are permuted. More... | |
ArrayView< const LocalOrdinal > | getPermuteToLIDs () const |
List of local IDs in the target Map that are permuted. More... | |
size_t | getNumRemoteIDs () const |
Number of entries not on the calling process. More... | |
ArrayView< const LocalOrdinal > | getRemoteLIDs () const |
List of entries in the target Map to receive from other processes. More... | |
size_t | getNumExportIDs () const |
Number of entries that must be sent by the calling process to other processes. More... | |
ArrayView< const LocalOrdinal > | getExportLIDs () const |
List of entries in the source Map that will be sent to other processes. More... | |
ArrayView< const int > | getExportPIDs () const |
List of processes to which entries will be sent. More... | |
Teuchos::RCP< const map_type > | getSourceMap () const |
The source Map used to construct this Export. More... | |
Teuchos::RCP< const map_type > | getTargetMap () const |
The target Map used to construct this Export. More... | |
Distributor & | getDistributor () const |
The Distributor that this Export object uses to move data. More... | |
Export< LocalOrdinal, GlobalOrdinal, Node > & | operator= (const Export< LocalOrdinal, GlobalOrdinal, Node > &rhs) |
Assignment operator. More... | |
I/O Methods | |
virtual void | print (std::ostream &os) const |
Print the Export's data to the given output stream. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<class LocalOrdinal , class GlobalOrdinal , class Node > | |
Teuchos::RCP< const Export< LocalOrdinal, GlobalOrdinal, Node > > | createExport (const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &src, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &tgt) |
Non-member constructor for Export objects. More... | |
Communication plan for data redistribution from a (possibly) multiply-owned to a uniquely-owned distribution.
LocalOrdinal | The type of local indices. See the documentation of Map for requirements. |
GlobalOrdinal | The type of global indices. See the documentation of Map for requirements. |
Node | The Kokkos Node type. See the documentation of Map for requirements. |
Tpetra users should use this class to construct a communication plan between two data distributions (i.e., two Map objects). The plan can be called repeatedly by computational classes to perform communication according to the same pattern. Constructing the plan may be expensive, both in terms of communication and computation. However, it can be reused inexpensively.
Tpetra has two classes for data redistribution: Import and Export. Import is for redistributing data from a uniquely-owned distribution to a possibly multiply-owned distribution. Export is for redistributing data from a possibly multiply-owned distribution to a uniquely-owned distribution.
The names "Import" and "Export" have nothing to do with the direction in which data moves relative to the calling process; any process may do both receives and sends in an Import or Export. Rather, the names suggest what happens in their most common use case, the communication pattern for sparse matrix-vector multiply. Import "brings in" remote source vector data (from the domain Map to the column Map) for local computation, and Export "pushes" the result back (from the row Map to the range Map). Import and Export have other uses as well.
One use case of Export is finite element assembly. For example, one way to compute a distributed forcing term vector is to use an overlapping distribution for the basis functions' domains. An Export with the SUM combine mode combines each process' contribution to the integration into a single nonoverlapping distribution.
Epetra separated Import and Export for performance reasons. The implementation is different, depending on which direction is the uniquely-owned Map. Tpetra retains this convention.
This class is templated on the same template arguments as Map: the local ordinal type LocalOrdinal
, the global ordinal type GlobalOrdinal
, and the Kokkos Node
type.
This method accepts an optional list of parameters, either through the constructor or through the setParameterList() method. Most users do not need to worry about these parameters; the default values are fine. However, for expert users, we expose the following parameter:
bool
): Whether to execute a barrier between receives and sends, when executing the Import (i.e., when calling DistObject's doImport() (forward mode) or doExport() (reverse mode)). Definition at line 124 of file Tpetra_Export_decl.hpp.
typedef ::Tpetra::Map<LocalOrdinal, GlobalOrdinal, Node> Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::map_type |
The specialization of Map used by this class.
Definition at line 131 of file Tpetra_Export_decl.hpp.
Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::Export | ( | const Teuchos::RCP< const map_type > & | source, |
const Teuchos::RCP< const map_type > & | target | ||
) |
Construct a Export object from the source and target Map.
source | [in] The source distribution. This may be a multiply owned (overlapping) distribution. |
target | [in] The target distribution. This must be a uniquely owned (nonoverlapping) distribution. |
Definition at line 77 of file Tpetra_Export_def.hpp.
Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::Export | ( | const Teuchos::RCP< const map_type > & | source, |
const Teuchos::RCP< const map_type > & | target, | ||
const RCP< Teuchos::FancyOStream > & | out | ||
) |
Construct an Export from the source and target Maps, with an output stream for debugging output.
source | [in] The source distribution. This may be a multiply owned (overlapping) distribution. |
target | [in] The target distribution. This must be a uniquely owned (nonoverlapping) distribution. |
out | [in/out] Output stream for debugging output. |
Definition at line 121 of file Tpetra_Export_def.hpp.
Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::Export | ( | const Teuchos::RCP< const map_type > & | source, |
const Teuchos::RCP< const map_type > & | target, | ||
const Teuchos::RCP< Teuchos::ParameterList > & | plist | ||
) |
Constructor (with list of parameters)
source | [in] The source distribution. This may be a multiply owned (overlapping) distribution. |
target | [in] The target distribution. This must be a uniquely owned (nonoverlapping) distribution. |
plist | [in/out] List of parameters. Currently passed directly to the Distributor that implements communication. If you don't know what this should be, you should use the two-argument constructor, listed above. |
Definition at line 166 of file Tpetra_Export_def.hpp.
Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::Export | ( | const Teuchos::RCP< const map_type > & | source, |
const Teuchos::RCP< const map_type > & | target, | ||
const RCP< Teuchos::FancyOStream > & | out, | ||
const Teuchos::RCP< Teuchos::ParameterList > & | plist | ||
) |
Constructor (with list of parameters and debugging output stream)
source | [in] The source distribution. This may be a multiply owned (overlapping) distribution. |
target | [in] The target distribution. This must be a uniquely owned (nonoverlapping) distribution. |
out | [in/out] Output stream for debugging output. |
plist | [in/out] List of parameters. Currently passed directly to the Distributor that implements communication. If you don't know what this should be, you should use the two-argument constructor, listed above. |
Definition at line 220 of file Tpetra_Export_def.hpp.
Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::Export | ( | const Export< LocalOrdinal, GlobalOrdinal, Node > & | rhs | ) |
Copy constructor.
Definition at line 275 of file Tpetra_Export_def.hpp.
Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::Export | ( | const Import< LocalOrdinal, GlobalOrdinal, Node > & | importer | ) |
"Copy" constructor from an Export object.
This constructor creates an Export object from the "reverse" of the given Import object. This method is mainly useful for Tpetra developers, for example when building the explicit transpose of a sparse matrix.
Definition at line 298 of file Tpetra_Export_def.hpp.
|
virtual |
Destructor.
Definition at line 306 of file Tpetra_Export_def.hpp.
void Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::setParameterList | ( | const Teuchos::RCP< Teuchos::ParameterList > & | plist | ) |
Set parameters.
Please see the class documentation for a list of all accepted parameters and their default values.
Definition at line 63 of file Tpetra_Export_def.hpp.
|
virtual |
Number of initial identical IDs.
The number of IDs that are identical between the source and target Maps, up to the first different ID.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 310 of file Tpetra_Export_def.hpp.
|
virtual |
Number of IDs to permute but not to communicate.
The number of IDs that are local to the calling process, but not part of the first getNumSameIDs() entries. The Import will permute these entries locally (without distributed-memory communication).
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 315 of file Tpetra_Export_def.hpp.
|
virtual |
List of local IDs in the source Map that are permuted.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 321 of file Tpetra_Export_def.hpp.
|
virtual |
List of local IDs in the target Map that are permuted.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 327 of file Tpetra_Export_def.hpp.
|
virtual |
Number of entries not on the calling process.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 332 of file Tpetra_Export_def.hpp.
|
virtual |
List of entries in the target Map to receive from other processes.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 338 of file Tpetra_Export_def.hpp.
|
virtual |
Number of entries that must be sent by the calling process to other processes.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 343 of file Tpetra_Export_def.hpp.
|
virtual |
List of entries in the source Map that will be sent to other processes.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 349 of file Tpetra_Export_def.hpp.
|
virtual |
List of processes to which entries will be sent.
The entry with local ID getExportLIDs()[i] will be sent to process getExportPiDs()[i].
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 355 of file Tpetra_Export_def.hpp.
|
virtual |
The source Map used to construct this Export.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 361 of file Tpetra_Export_def.hpp.
|
virtual |
The target Map used to construct this Export.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 367 of file Tpetra_Export_def.hpp.
|
virtual |
The Distributor that this Export object uses to move data.
Implements Tpetra::Details::Transfer< LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 373 of file Tpetra_Export_def.hpp.
Export< LocalOrdinal, GlobalOrdinal, Node > & Tpetra::Export< LocalOrdinal, GlobalOrdinal, Node >::operator= | ( | const Export< LocalOrdinal, GlobalOrdinal, Node > & | rhs | ) |
Assignment operator.
Definition at line 380 of file Tpetra_Export_def.hpp.
|
virtual |
Print the Export's data to the given output stream.
This method assumes that the given output stream can be written on all process(es) in the Export's communicator. The resulting output is useful mainly for debugging.
Definition at line 389 of file Tpetra_Export_def.hpp.
|
related |
Non-member constructor for Export objects.
Creates a Export object from the given source and target maps.
src != null
tgt != null
src == tgt
, returns null
. (Debug mode: throws std::runtime_error if one of src
or tgt
is null
.) Definition at line 329 of file Tpetra_Export_decl.hpp.