40#ifndef TPETRA_DETAILS_DISTRIBUTOR_PLAN_HPP
41#define TPETRA_DETAILS_DISTRIBUTOR_PLAN_HPP
43#include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
44#include "Teuchos_Array.hpp"
45#include "Teuchos_Comm.hpp"
46#include "Teuchos_RCP.hpp"
47#include "TpetraCore_config.h"
74 DISTRIBUTOR_NOT_INITIALIZED,
75 DISTRIBUTOR_INITIALIZED_BY_CREATE_FROM_SENDS,
76 DISTRIBUTOR_INITIALIZED_BY_CREATE_FROM_RECVS,
77 DISTRIBUTOR_INITIALIZED_BY_CREATE_FROM_SENDS_N_RECVS,
78 DISTRIBUTOR_INITIALIZED_BY_REVERSE,
79 DISTRIBUTOR_INITIALIZED_BY_COPY,
100 static constexpr int DEFAULT_MPI_TAG = 0;
106 size_t createFromSends(
const Teuchos::ArrayView<const int>& exportProcIDs);
107 void createFromRecvs(
const Teuchos::ArrayView<const int>& remoteProcIDs);
108 void createFromSendsAndRecvs(
const Teuchos::ArrayView<const int>& exportProcIDs,
109 const Teuchos::ArrayView<const int>& remoteProcIDs);
111 void setParameterList(
const Teuchos::RCP<Teuchos::ParameterList>& plist);
113 Teuchos::RCP<DistributorPlan> getReversePlan()
const;
115 Teuchos::RCP<const Teuchos::Comm<int>> getComm()
const {
return comm_; }
117 size_t getNumReceives()
const {
return numReceives_; }
118 size_t getNumSends()
const {
return numSendsToOtherProcs_; }
119 bool hasSelfMessage()
const {
return sendMessageToSelf_; }
120 size_t getMaxSendLength()
const {
return maxSendLength_; }
121 size_t getTotalReceiveLength()
const {
return totalReceiveLength_; }
122 Teuchos::ArrayView<const int> getProcsFrom()
const {
return procsFrom_; }
123 Teuchos::ArrayView<const int> getProcsTo()
const {
return procIdsToSendTo_; }
124 Teuchos::ArrayView<const size_t> getLengthsFrom()
const {
return lengthsFrom_; }
125 Teuchos::ArrayView<const size_t> getLengthsTo()
const {
return lengthsTo_; }
126 Teuchos::ArrayView<const size_t> getStartsTo()
const {
return startsTo_; }
127 Teuchos::ArrayView<const size_t> getIndicesTo()
const {
return indicesTo_; }
131 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters()
const;
133 void createReversePlan()
const;
145 void computeReceives();
147 Teuchos::RCP<const Teuchos::Comm<int>> comm_;
149 mutable Teuchos::RCP<DistributorPlan> reversePlan_;
156 bool sendMessageToSelf_;
157 size_t numSendsToOtherProcs_;
158 Teuchos::Array<int> procIdsToSendTo_;
168 Teuchos::Array<size_t> startsTo_;
175 Teuchos::Array<size_t> lengthsTo_;
180 size_t maxSendLength_;
197 Teuchos::Array<size_t> indicesTo_;
216 size_t totalReceiveLength_;
223 Teuchos::Array<size_t> lengthsFrom_;
230 Teuchos::Array<int> procsFrom_;
237 Teuchos::Array<size_t> startsFrom_;
244 Teuchos::Array<size_t> indicesFrom_;
Implementation details of Tpetra.
std::string DistributorSendTypeEnumToString(EDistributorSendType sendType)
Convert an EDistributorSendType enum value to a string.
EDistributorSendType
The type of MPI send that Distributor should use.
EDistributorHowInitialized
Enum indicating how and whether a Distributor was initialized.
std::string DistributorHowInitializedEnumToString(EDistributorHowInitialized how)
Convert an EDistributorHowInitialized enum value to a string.
Namespace Tpetra contains the class and methods constituting the Tpetra library.