OpenM++ runtime library (libopenm)
openm::MsgEmptyExec Class Reference

message passing main class. More...

#include <msgEmpty.h>

Inheritance diagram for openm::MsgEmptyExec:
Collaboration diagram for openm::MsgEmptyExec:

Public Member Functions

 MsgEmptyExec (int &, char **&, IFinalState *i_final)
 create new message passing interface (empty constructor)
 
 ~MsgEmptyExec (void) noexcept
 cleanup message passing resources (empty destructor).
 
int worldSize (void) const override
 return total number of processes in world communicator: always = 1. More...
 
int rank (void) const override
 return current process rank: always = 0. More...
 
int groupRank (void) const noexcept override
 return rank in modeling group: always = 0. More...
 
void setCleanExit (bool) override
 set clean exit flag for normal shutdown of message passing interface. More...
 
void createGroups (int, int) override
 create groups for parallel run of modeling task (does nothing). More...
 
void bcastValue (int, const type_info &, void *) override
 broadcast value from root to all other processes (does nothing). More...
 
void bcastSend (int, const type_info &, size_t, void *) override
 send broadcast value array from root to all other processes (does nothing). More...
 
void bcastReceive (int, const type_info &, size_t, void *) override
 receive broadcasted value array from root process (does nothing). More...
 
void bcastSendPacked (int, IRowBaseVec &, const IPackedAdapter &) override
 send broadcast vector of db rows from root to all other processes (does nothing). More...
 
void bcastReceivePacked (int, IRowBaseVec &, const IPackedAdapter &) override
 receive broadcasted vector of db rows from root (does nothing). More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void waitSendAll (void) override
 wait for non-blocking send to be completed. More...
 
- Public Member Functions inherited from openm::IMsgExec
virtual ~IMsgExec (void) noexcept=0
 cleanup message passing resources.
 
bool isRoot (void) const
 if root process then true (root process rank == 0)
 
virtual int worldSize (void) const =0
 return total number of processes in world communicator. More...
 
virtual int rank (void) const =0
 return current process rank. More...
 
virtual int groupRank (void) const =0
 return rank in modeling group. More...
 
virtual void setCleanExit (bool i_isClean=false)=0
 set clean exit flag for normal shutdown of message passing interface. More...
 
virtual void createGroups (int i_groupSize, int i_groupCount)=0
 create groups for parallel run of modeling task. More...
 
virtual void bcastValue (int i_groupOne, const type_info &i_type, void *io_value)=0
 broadcast value from root to all other processes. More...
 
void bcastInt (int i_groupOne, void *io_value)
 broadcast integer value from root to all other processes. More...
 
virtual void bcastSend (int i_groupOne, const type_info &i_type, size_t i_size, void *io_valueArr)=0
 send broadcast value array from root to all other processes. More...
 
virtual void bcastReceive (int i_groupOne, const type_info &i_type, size_t i_size, void *io_valueArr)=0
 receive broadcasted value array from root process. More...
 
virtual void bcastSendPacked (int i_groupOne, IRowBaseVec &io_rowVec, const IPackedAdapter &i_adapter)=0
 send broadcast vector of db rows from root to all other processes. More...
 
virtual void bcastReceivePacked (int i_groupOne, IRowBaseVec &io_rowVec, const IPackedAdapter &i_adapter)=0
 receive broadcasted vector of db rows from root. More...
 
virtual void startSend (int i_sendTo, MsgTag i_msgTag, const type_info &i_type, size_t i_size, void *i_valueArr)=0
 start non-blocking send of value array to i_sendTo process. More...
 
virtual void startSendPacked (int i_sendTo, const IRowBaseVec &i_rowVec, const IPackedAdapter &i_adapter)=0
 pack and start non-blocking send of vector of db rows to i_sendTo process. More...
 
virtual bool tryReceive (int i_recvFrom, MsgTag i_msgTag, const type_info &i_type, size_t i_size, void *io_valueArr) const =0
 try to non-blocking receive value array, return true if completed. More...
 
virtual bool tryReceive (int i_recvFrom, IRowBaseVec &io_resultRowVec, const IPackedAdapter &i_adapter) const =0
 try to non-blocking receive and unpack vector of db rows, return true if completed. More...
 
virtual void waitSendAll (void)=0
 wait for non-blocking send to be completed More...
 
- Public Member Functions inherited from openm::MsgExecBase
virtual ~MsgExecBase (void) noexcept
 cleanup message passing resources.
 
int worldSize (void) const
 return total number of processes in MPI world communicator.
 
int rank (void) const
 return current process rank.
 
int groupRank (void) const
 return rank in modeling group.
 
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. More...
 
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. More...
 
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. More...
 
bool tryReceive (int i_recvFrom, IRowBaseVec &io_resultRowVec, const IPackedAdapter &i_adapter) const
 try to non-blocking receive and unpack vector of db rows, return return true if completed. More...
 
void waitSendAll (void)
 wait for non-blocking send to be completed.
 

Additional Inherited Members

- Static Public Member Functions inherited from openm::IMsgExec
static IMsgExeccreate (int argc, char **argv, IFinalState *i_final)
 create new message passing interface. More...
 
- Static Public Attributes inherited from openm::IMsgExec
static const int rootRank = 0
 root process rank, always zero
 
- Protected Member Functions inherited from openm::MsgExecBase
 MsgExecBase (IFinalState *i_final)
 
- Protected Attributes inherited from openm::MsgExecBase
int worldCommSize
 
int worldRank
 
int group_rank
 
IFinalStatetheFinal = nullptr
 
list< unique_ptr< IMsgSend > > sendLst
 

Detailed Description

message passing main class.


empty implementation of message passing library does nothing
it does NOT pass any data between sub-value processes but not required MPI to be installed
it can be used for:
model debug and development to quickly test model code with single sub-value
or if each sub-value process directly connected to database

Member Function Documentation

◆ bcastReceive()

void openm::MsgEmptyExec::bcastReceive ( int  ,
const type_info &  ,
size_t  ,
void *   
)
inlineoverridevirtual

receive broadcasted value array from root process (does nothing).

Implements openm::IMsgExec.

◆ bcastReceivePacked()

void openm::MsgEmptyExec::bcastReceivePacked ( int  ,
IRowBaseVec ,
const IPackedAdapter  
)
inlineoverridevirtual

receive broadcasted vector of db rows from root (does nothing).

Implements openm::IMsgExec.

◆ bcastSend()

void openm::MsgEmptyExec::bcastSend ( int  ,
const type_info &  ,
size_t  ,
void *   
)
inlineoverridevirtual

send broadcast value array from root to all other processes (does nothing).

Implements openm::IMsgExec.

◆ bcastSendPacked()

void openm::MsgEmptyExec::bcastSendPacked ( int  ,
IRowBaseVec ,
const IPackedAdapter  
)
inlineoverridevirtual

send broadcast vector of db rows from root to all other processes (does nothing).

Implements openm::IMsgExec.

◆ bcastValue()

void openm::MsgEmptyExec::bcastValue ( int  ,
const type_info &  ,
void *   
)
inlineoverridevirtual

broadcast value from root to all other processes (does nothing).

Implements openm::IMsgExec.

◆ createGroups()

void openm::MsgEmptyExec::createGroups ( int  ,
int   
)
inlineoverridevirtual

create groups for parallel run of modeling task (does nothing).

Implements openm::IMsgExec.

◆ groupRank()

int openm::MsgEmptyExec::groupRank ( void  ) const
inlineoverridevirtualnoexcept

return rank in modeling group: always = 0.

Implements openm::IMsgExec.

◆ rank()

int openm::MsgEmptyExec::rank ( void  ) const
inlineoverridevirtual

return current process rank: always = 0.

Implements openm::IMsgExec.

◆ setCleanExit()

void openm::MsgEmptyExec::setCleanExit ( bool  )
inlineoverridevirtual

set clean exit flag for normal shutdown of message passing interface.

Implements openm::IMsgExec.

◆ startSend()

void openm::MsgEmptyExec::startSend ( int  i_sendTo,
MsgTag  i_msgTag,
const type_info &  i_type,
size_t  i_size,
void *  i_valueArr 
)
inlineoverridevirtual

start non-blocking send of value array to i_sendTo process.

Implements openm::IMsgExec.

◆ startSendPacked()

void openm::MsgEmptyExec::startSendPacked ( int  i_sendTo,
const IRowBaseVec i_rowVec,
const IPackedAdapter i_adapter 
)
inlineoverridevirtual

pack and start non-blocking send of vector of db rows to i_sendTo process.

Implements openm::IMsgExec.

◆ tryReceive() [1/2]

bool openm::MsgEmptyExec::tryReceive ( int  i_recvFrom,
IRowBaseVec io_resultRowVec,
const IPackedAdapter i_adapter 
) const
inlineoverridevirtual

try to non-blocking receive and unpack vector of db rows, return true if completed.

Implements openm::IMsgExec.

◆ tryReceive() [2/2]

bool openm::MsgEmptyExec::tryReceive ( int  i_recvFrom,
MsgTag  i_msgTag,
const type_info &  i_type,
size_t  i_size,
void *  io_valueArr 
) const
inlineoverridevirtual

try to non-blocking receive value array, return true if completed.

Implements openm::IMsgExec.

◆ waitSendAll()

void openm::MsgEmptyExec::waitSendAll ( void  )
inlineoverridevirtual

wait for non-blocking send to be completed.

Implements openm::IMsgExec.

◆ worldSize()

int openm::MsgEmptyExec::worldSize ( void  ) const
inlineoverridevirtual

return total number of processes in world communicator: always = 1.

Implements openm::IMsgExec.


The documentation for this class was generated from the following file: