44 void createGroups(
int i_groupSize,
int i_groupCount)
override;
47 void bcastValue(
int i_groupOne,
const type_info & i_type,
void * io_value)
override;
50 void bcastSend(
int i_groupOne,
const type_info & i_type,
size_t i_size,
void * io_valueArr)
override;
53 void bcastReceive(
int i_groupOne,
const type_info & i_type,
size_t i_size,
void * io_valueArr)
override;
62 void startSend(
int i_sendTo,
MsgTag i_msgTag,
const type_info & i_type,
size_t i_size,
void * i_valueArr)
override
74 bool tryReceive(
int i_recvFrom,
MsgTag i_msgTag,
const type_info & i_type,
size_t i_size,
void * io_valueArr)
const override
84 vector<MPI_Group> mpiGroupVec;
85 vector<MPI_Comm> mpiCommVec;
88 void cleanup(
void)
noexcept;
91 MPI_Comm commByGroupOne(
int i_groupOne);
94 void waitRequest(
int i_pollTime, MPI_Request & io_request)
const;
public interface for message passing
Definition: msg.h:138
message passing library main class for MPI-based implementation
Definition: msgMpiExec.h:23
bool tryReceive(int i_recvFrom, MsgTag i_msgTag, const type_info &i_type, size_t i_size, void *io_valueArr) const override
try to non-blocking receive value array, return true if completed.
Definition: msgMpiExec.h:74
void waitSendAll(void) override
wait for non-blocking send to be completed.
Definition: msgMpiExec.h:78
void setCleanExit(bool i_isClean=false) override
set clean exit flag for normal shutdown messaging else abort MPI.
Definition: msgMpiExec.cpp:108
void bcastReceivePacked(int i_groupOne, IRowBaseVec &io_rowVec, const IPackedAdapter &i_adapter) override
receive broadcasted vector of db rows from root.
Definition: msgMpiExec.cpp:438
void createGroups(int i_groupSize, int i_groupCount) override
create groups for parallel run of modeling task.
Definition: msgMpiExec.cpp:115
void startSendPacked(int i_sendTo, const IRowBaseVec &i_rowVec, const IPackedAdapter &i_adapter) override
pack and start non-blocking send of vector of db rows to i_sendTo process.
Definition: msgMpiExec.h:66
bool tryReceive(int i_recvFrom, IRowBaseVec &io_resultRowVec, const IPackedAdapter &i_adapter) const override
try to non-blocking receive and unpack vector of db rows, return true if completed.
Definition: msgMpiExec.h:70
void bcastValue(int i_groupOne, const type_info &i_type, void *io_value) override
broadcast value from root to all other processes.
Definition: msgMpiExec.cpp:230
void bcastSend(int i_groupOne, const type_info &i_type, size_t i_size, void *io_valueArr) override
send broadcast value array from root to all other processes.
Definition: msgMpiExec.cpp:264
int rank(void) const noexcept override
return current process MPI rank.
Definition: msgMpiExec.h:35
void bcastSendPacked(int i_groupOne, IRowBaseVec &io_rowVec, const IPackedAdapter &i_adapter) override
send broadcast vector of db rows from root to all other processes.
Definition: msgMpiExec.cpp:393
int groupRank(void) const noexcept override
return rank in modeling group.
Definition: msgMpiExec.h:38
void bcastReceive(int i_groupOne, const type_info &i_type, size_t i_size, void *io_valueArr) override
receive broadcasted value array from root process.
Definition: msgMpiExec.cpp:330
MpiExec(int &argc, char **&argv, IFinalState *i_final)
create message passing interface by MPI_Init.
Definition: msgMpiExec.cpp:22
~MpiExec(void) noexcept
cleanup message passing resources by MPI_Finalize.
Definition: msgMpiExec.cpp:69
int worldSize(void) const noexcept override
return total number of processes in MPI world communicator.
Definition: msgMpiExec.h:32
void startSend(int i_sendTo, MsgTag i_msgTag, const type_info &i_type, size_t i_size, void *i_valueArr) override
start non-blocking send of value array to i_sendTo process.
Definition: msgMpiExec.h:62
message passing base class
Definition: msgExecBase.h:22
void startSendPacked(int i_sendTo, const IRowBaseVec &i_rowVec, const IPackedAdapter &i_adapter)
pack and start non-blocking send of vector of db rows to i_sendTo process.
Definition: msgExecBase.cpp:74
void startSend(int i_sendTo, MsgTag i_msgTag, const type_info &i_type, size_t i_size, void *i_valueArr)
start non-blocking send of value array to i_sendTo process.
Definition: msgExecBase.cpp:46
int rank(void) const
return current process rank.
Definition: msgExecBase.cpp:24
int groupRank(void) const
return rank in modeling group.
Definition: msgExecBase.cpp:31
void waitSendAll(void)
wait for non-blocking send to be completed.
Definition: msgExecBase.cpp:148
bool tryReceive(int i_recvFrom, MsgTag i_msgTag, const type_info &i_type, size_t i_size, void *io_valueArr) const
try to non-blocking receive value array, return return true if completed.
Definition: msgExecBase.cpp:102
int worldSize(void) const
return total number of processes in MPI world communicator.
Definition: msgExecBase.cpp:17
OpenM++: message passing library common classes and interfaces.
OpenM++: message passing library base class.
OpenM++ message passing library: pack and unpack wrapper class for MPI-based implementation.
OpenM++ message passing library: receiver class for MPI-based implementation.
OpenM++ message passing library: sender class for MPI-based implementation.
openM++ namespace
Definition: log.h:32
MsgTag
tag to identify message content
Definition: msg.h:29
std::vector< IRowBaseUptr > IRowBaseVec
db rows: vector of unique pointers to db row
Definition: omHelper.h:239
final model run state public interface: thread safe
Definition: omHelper.h:246
public interface to pack and unpack rows of metadata db-table
Definition: msg.h:99