Scippy

UG

Ubiquity Generator framework

ParaCommCPP11 Class Reference

Communicator object for C++11 thread communications. More...

#include <paraCommCPP11.h>

Inheritance diagram for ParaCommCPP11:
ParaComm BbParaCommCPP11 ScipParaCommTh

Public Member Functions

 ParaCommCPP11 ()
 constructor of ParaComCPP11 More...
 
virtual ~ParaCommCPP11 ()
 destructor of this communicator More...
 
virtual void init (int argc, char **argv)
 initializer of this communicator More...
 
virtual void setLocalRank (int inRank)
 
double getStartTime ()
 get start time of this communicator (should not be used) More...
 
int getRank ()
 get rank of caller's thread More...
 
int getSize ()
 get size of this communicator, which indicates how many threads in a UG process More...
 
int getNumOfMessagesWaitingToSend (int dest=-1)
 get size of the messageQueueTable More...
 
virtual void lcInit (ParaParamSet *paraParamSet)
 initializer for LoadCoordinator More...
 
virtual void solverInit (ParaParamSet *paraParamSet)
 initializer for Solvers More...
 
virtual void solverInit (int rank, ParaParamSet *paraParamSet)
 initializer for a specific Solver More...
 
virtual void solverReInit (int rank, ParaParamSet *paraParamSet)
 reinitializer of a specific Solver More...
 
virtual void solverDel (int rank)
 delete Solver from this communicator More...
 
void abort ()
 abort. How it works sometimes depends on communicator used More...
 
virtual bool waitTerminatedMessage ()
 function to wait Terminated message (This function is not used currently) More...
 
virtual bool waitToken (int rank)
 wait token when UG runs with deterministic mode More...
 
virtual void passToken (int rank)
 pass token to from the rank to the next More...
 
virtual bool passTermToken (int rank)
 pass termination token from the rank to the next More...
 
virtual void setToken (int rank, int *inToken)
 set received token to this communicator More...
 
std::ostream * getOstream ()
 get ostream pointer More...
 
void lockRank ()
 lock rank More...
 
void unlockRank ()
 unlock rank More...
 
virtual void lockApp ()
 lock UG application to synchronize with other threads More...
 
virtual void lockApp (char const *f, int l)
 lock UG application to synchronize with other threads (for debug) More...
 
virtual void unlockApp ()
 unlock UG application to synchronize with other threads More...
 
virtual void unlockApp (char const *f, int l)
 unlock UG application to synchronize with other threads (for debug) More...
 
void unlockRank (char const *f, int l)
 unlock rank (for debugging) More...
 
ParaTimercreateParaTimer ()
 create ParaTimer object More...
 
int bcast (void *buffer, int count, const int datatypeId, int root)
 broadcast function for standard ParaData types More...
 
int send (void *bufer, int count, const int datatypeId, int dest, const int tag)
 send function for standard ParaData types More...
 
int receive (void *bufer, int count, const int datatypeId, int source, const int tag)
 receive function for standard ParaData types More...
 
void waitSpecTagFromSpecSource (const int source, const int tag, int *receivedTag)
 wait function for a specific tag from a specific source coming from More...
 
bool probe (int *source, int *tag)
 probe function which waits a new message More...
 
bool iProbe (int *source, int *tag)
 iProbe function which checks if a new message is arrived or not More...
 
int uTypeSend (void *bufer, const int datatypeId, int dest, int tag)
 User type send for created data type. More...
 
int uTypeReceive (void **bufer, const int datatypeId, int source, int tag)
 User type receive for created data type. More...
 
virtual const char * getTagString (int tag)
 get Tag string for debugging More...
 
- Public Member Functions inherited from ParaComm
 ParaComm ()
 default constructor of ParaComm More...
 
virtual ~ParaComm ()
 destructor of ParaComm More...
 
virtual void init (int argc, char **argv)=0
 initializer of this object More...
 
virtual int getRank ()=0
 get rank of this process or this thread depending on run-time environment More...
 
virtual int getSize ()=0
 get number of UG processes or UG threads depending on run-time environment More...
 
virtual int getNumOfMessagesWaitingToSend (int dest)=0
 get size of the messageQueueTable More...
 
virtual void lcInit (ParaParamSet *paraParamSet)=0
 special initializer when this object is used in LoadCoordinator More...
 
virtual void solverInit (ParaParamSet *paraParamSet)=0
 special initializer when this object is used in Solver More...
 
virtual void setLocalRank (int inRank)
 
virtual void abort ()=0
 abort function for this communicator (how to abort depends on which library used for communication) More...
 
virtual bool waitTerminatedMessage ()=0
 function to wait Terminated message (This function is not used currently) More...
 
virtual bool waitToken (int rank)
 wait token when UG runs with deterministic mode More...
 
virtual void passToken (int rank)
 pass token to from the rank to the next More...
 
virtual bool passTermToken (int rank)
 pass termination token from the rank to the next More...
 
virtual void setToken (int rank, int *token)
 set received token to this communicator More...
 
virtual void lockApp ()=0
 lock UG application to synchronize with other threads More...
 
virtual void lockApp (char const *f, int l)
 lock UG application to synchronize with other threads (for debug) More...
 
virtual void unlockApp ()=0
 unlock UG application to synchronize with other threads More...
 
virtual void unlockApp (char const *f, int l)
 unlock UG application to synchronize with other threads (for debug) More...
 
virtual ParaCalculationStatecreateParaCalculationState ()=0
 transfer object factory More...
 
virtual ParaRacingRampUpParamSetcreateParaRacingRampUpParamSet ()=0
 create ParaRacingRampUpParamSet object More...
 
virtual ParaTaskcreateParaTask ()=0
 create ParaTask object by default constructor More...
 
virtual ParaParamSetcreateParaParamSet ()=0
 create ParaParamSet object More...
 
virtual ParaSolverStatecreateParaSolverState ()=0
 create ParaSolverState object by default constructor More...
 
virtual ParaSolverTerminationStatecreateParaSolverTerminationState ()=0
 create ParaSolverTerminationState object by default constructor More...
 
virtual ParaTimercreateParaTimer ()=0
 create ParaTimer object More...
 
virtual ParaInstancecreateParaInstance ()=0
 create ParaInstance object by default constructor More...
 
virtual ParaSolutioncreateParaSolution ()=0
 create ParaSolution object by default constructor More...
 
virtual ParaDiffSubproblemcreateParaDiffSubproblem ()
 create ParaDiffSubproblem object by default constructor More...
 
virtual int bcast (void *buffer, int count, const int datatypeId, int root)=0
 Some action need to be taken for fault tolerant, when the functions return. So, they rerun status value. More...
 
virtual int send (void *bufer, int count, const int datatypeId, int dest, const int tag)=0
 send function for standard ParaData types More...
 
virtual int receive (void *bufer, int count, const int datatypeId, int source, const int tag)=0
 receive function for standard ParaData types More...
 
virtual void waitSpecTagFromSpecSource (const int source, const int tag, int *receivedTag)=0
 wait function for a specific tag from a specific source coming from More...
 
virtual bool probe (int *source, int *tag)=0
 No need to take action for fault tolerant, when the functions return. So, they do not rerun status value. More...
 
virtual bool iProbe (int *source, int *tag)=0
 iProbe function which checks if a new message is arrived or not More...
 
virtual const char * getTagString (int tag)=0
 get Tag string for debugging More...
 

Protected Member Functions

void * allocateMemAndCopy (const void *buffer, int count, const int datatypeId)
 allocate memory and copy message More...
 
void copy (void *dest, const void *src, int count, int datatypeId)
 copy message More...
 
void freeMem (void *buffer, int count, const int datatypeId)
 free memory More...
 
bool freeStandardTypes (MessageQueueElement *elem)
 free memory More...
 
virtual bool tagStringTableIsSetUpCoorectly ()
 check if tag string table (for debugging) set up correctly More...
 

Protected Attributes

int comSize
 communicator size : number of threads joined in this system More...
 
bool tagTraceFlag
 indicate if tags are traced or not More...
 
int ** token
 index 0: token index 1: token color -1: green > 0: yellow ( termination origin solver number ) -2: red ( means the solver can terminate ) More...
 
ParaSysTimer timer
 system timer More...
 
MessageQueueTableElement ** messageQueueTable
 message queue table More...
 
bool * sentMessage
 sent message flag for synchronization More...
 
std::mutex * queueLockMutex
 mutex for synchronization More...
 
std::condition_variable * sentMsg
 condition variable for synchronization More...
 
std::mutex * tokenAccessLockMutex
 mutex to access token More...
 
std::mutex rankLockMutex
 mutex to access rank More...
 
std::mutex applicationLockMutex
 mutex for applications More...
 

Static Protected Attributes

static const char * tagStringTable []
 tag name string table More...
 
static ThreadsTableElementthreadsTable [ThreadTableSize]
 threads table: index is thread rank More...
 
static thread_local int localRank = -1
 local thread rank More...
 

Detailed Description

Communicator object for C++11 thread communications.

Definition at line 694 of file paraCommCPP11.h.

Constructor & Destructor Documentation

◆ ParaCommCPP11()

constructor of ParaComCPP11

Definition at line 768 of file paraCommCPP11.h.

◆ ~ParaCommCPP11()

Member Function Documentation

◆ abort()

void abort ( )
virtual

abort. How it works sometimes depends on communicator used

Implements ParaComm.

Definition at line 899 of file paraCommCPP11.h.

Referenced by main().

◆ allocateMemAndCopy()

void * allocateMemAndCopy ( const void *  buffer,
int  count,
const int  datatypeId 
)
protected

allocate memory and copy message

Parameters
bufferpointer to buffer of the message
countthe number of data element in the message
datatypeIddata type of each element in the message

Definition at line 361 of file paraCommCPP11.cpp.

References UG::ParaBOOL, UG::ParaBYTE, UG::ParaCHAR, UG::ParaDOUBLE, UG::ParaFLOAT, UG::ParaINT, UG::ParaLONG, UG::ParaLONG_DOUBLE, UG::ParaLONG_LONG, UG::ParaSHORT, UG::ParaSIGNED_CHAR, UG::ParaUNSIGNED, UG::ParaUNSIGNED_CHAR, UG::ParaUNSIGNED_LONG, UG::ParaUNSIGNED_LONG_LONG, UG::ParaUNSIGNED_SHORT, and THROW_LOGICAL_ERROR2.

Referenced by ParaCommCPP11::send().

◆ bcast()

int bcast ( void *  buffer,
int  count,
const int  datatypeId,
int  root 
)
virtual

broadcast function for standard ParaData types

Returns
always 0 (for future extensions)
Parameters
bufferpoint to the head of sending message
countthe number of data in the message
datatypeIddata type in the message
rootroot rank for broadcasting

Implements ParaComm.

Definition at line 750 of file paraCommCPP11.cpp.

References ParaCommCPP11::comSize, ParaCommCPP11::getRank(), ParaCommCPP11::receive(), and ParaCommCPP11::send().

Referenced by main(), and ScipParaSolver::ScipParaSolver().

◆ copy()

void copy ( void *  dest,
const void *  src,
int  count,
int  datatypeId 
)
protected

copy message

Parameters
destdestination to copy the data
srcsource of the data
countthe number of data element
datatypeIddata type of each element

Definition at line 476 of file paraCommCPP11.cpp.

References UG::ParaBOOL, UG::ParaBYTE, UG::ParaCHAR, UG::ParaDOUBLE, UG::ParaFLOAT, UG::ParaINT, UG::ParaLONG, UG::ParaLONG_DOUBLE, UG::ParaLONG_LONG, UG::ParaSHORT, UG::ParaSIGNED_CHAR, UG::ParaUNSIGNED, UG::ParaUNSIGNED_CHAR, UG::ParaUNSIGNED_LONG, UG::ParaUNSIGNED_LONG_LONG, UG::ParaUNSIGNED_SHORT, and THROW_LOGICAL_ERROR2.

Referenced by ParaCommCPP11::receive().

◆ createParaTimer()

ParaTimer * createParaTimer ( )
virtual

create ParaTimer object

Returns
pointer to ParaTimer object

Implements ParaComm.

Definition at line 1033 of file paraCommCPP11.h.

Referenced by main().

◆ freeMem()

void freeMem ( void *  buffer,
int  count,
const int  datatypeId 
)
protected

◆ freeStandardTypes()

◆ getNumOfMessagesWaitingToSend()

int getNumOfMessagesWaitingToSend ( int  dest = -1)
virtual

get size of the messageQueueTable

Returns
if dest >= 0 then return the number of only messages waiting to send to dest, othrewise return the number of all messages waiting to send.

Implements ParaComm.

Definition at line 838 of file paraCommCPP11.h.

References ParaCommCPP11::comSize, MessageQueueTableElement::getSize(), and ParaCommCPP11::messageQueueTable.

◆ getOstream()

std::ostream * getOstream ( )

get ostream pointer

Returns
pointer to ostram

Definition at line 351 of file paraCommCPP11.cpp.

References ThreadsTableElement::getOstream(), ParaCommCPP11::localRank, ParaCommCPP11::rankLockMutex, and ParaCommCPP11::threadsTable.

◆ getRank()

◆ getSize()

int getSize ( )
virtual

get size of this communicator, which indicates how many threads in a UG process

Returns
the number of threads

Implements ParaComm.

Definition at line 827 of file paraCommCPP11.h.

References ParaCommCPP11::comSize.

Referenced by main(), and runSolverThread().

◆ getStartTime()

double getStartTime ( )

get start time of this communicator (should not be used)

Returns
start time

Definition at line 810 of file paraCommCPP11.h.

References ParaSysTimer::getStartTime(), and ParaCommCPP11::timer.

◆ getTagString()

const char * getTagString ( int  tag)
virtual

get Tag string for debugging

Returns
string which shows Tag
Parameters
tagtag to be converted to string

Implements ParaComm.

Reimplemented in BbParaCommCPP11, and ScipParaCommTh.

Definition at line 740 of file paraCommCPP11.cpp.

References UG::N_TH_TAGS, and ParaCommCPP11::tagStringTable.

Referenced by BbParaCommCPP11::getTagString().

◆ init()

void init ( int  argc,
char **  argv 
)
virtual

initializer of this communicator

if you add tag, you should add tagStringTale too

initialize hashtable

Parameters
argcthe number of arguments
argvpointers to the arguments

Implements ParaComm.

Definition at line 84 of file paraCommCPP11.cpp.

References ParaCommCPP11::comSize, ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, ParaSysTimer::start(), ParaCommCPP11::tagStringTableIsSetUpCoorectly(), ParaCommCPP11::threadsTable, UG::ThreadTableSize, ParaCommCPP11::timer, ParaCommCPP11::token, and ParaCommCPP11::tokenAccessLockMutex.

Referenced by main().

◆ iProbe()

bool iProbe ( int *  source,
int *  tag 
)
virtual

iProbe function which checks if a new message is arrived or not

Returns
true when a new message exists
Parameters
sourcesource rank of the message arrived
tagtag of the message arrived

Implements ParaComm.

Definition at line 860 of file paraCommCPP11.cpp.

References MessageQueueTableElement::checkElementWithTag(), MessageQueueTableElement::getHead(), ParaCommCPP11::getRank(), MessageQueueElement::getSource(), MessageQueueElement::getTag(), MessageQueueTableElement::isEmpty(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, TAG_TRACE, and UG::TagAny.

◆ lcInit()

void lcInit ( ParaParamSet paraParamSet)
virtual

initializer for LoadCoordinator

Parameters
paraParamSetUG parameter set

Implements ParaComm.

Definition at line 154 of file paraCommCPP11.cpp.

References ParaCommCPP11::localRank, paraParamSet, ParaCommCPP11::rankLockMutex, UG::TagTrace, ParaCommCPP11::tagTraceFlag, and ParaCommCPP11::threadsTable.

Referenced by main().

◆ lockApp() [1/2]

virtual void lockApp ( )
virtual

lock UG application to synchronize with other threads

Implements ParaComm.

Definition at line 973 of file paraCommCPP11.h.

References ParaCommCPP11::applicationLockMutex.

Referenced by runSolverThread().

◆ lockApp() [2/2]

virtual void lockApp ( char const *  f,
int  l 
)
virtual

lock UG application to synchronize with other threads (for debug)

Parameters
fstring to indicate what is locked
la number to show something

Reimplemented from ParaComm.

Definition at line 984 of file paraCommCPP11.h.

References ParaCommCPP11::applicationLockMutex, and ParaCommCPP11::getRank().

◆ lockRank()

void lockRank ( )

lock rank

Definition at line 957 of file paraCommCPP11.h.

References ParaCommCPP11::rankLockMutex.

◆ passTermToken()

bool passTermToken ( int  rank)
virtual

pass termination token from the rank to the next

Returns
true, when the termination token is passed from this rank, false otherwise
Parameters
rankfrom this rank, the termination token is passed

Reimplemented from ParaComm.

Definition at line 256 of file paraCommCPP11.cpp.

References ParaCommCPP11::comSize, ParaCommCPP11::getRank(), UG::ParaINT, ParaCommCPP11::send(), UG::TagToken, THROW_LOGICAL_ERROR4, ParaCommCPP11::token, and ParaCommCPP11::tokenAccessLockMutex.

◆ passToken()

void passToken ( int  rank)
virtual

pass token to from the rank to the next

Parameters
rankfrom this rank, the token is passed

Reimplemented from ParaComm.

Definition at line 243 of file paraCommCPP11.cpp.

References ParaCommCPP11::comSize, UG::ParaINT, ParaCommCPP11::send(), UG::TagToken, ParaCommCPP11::token, and ParaCommCPP11::tokenAccessLockMutex.

◆ probe()

bool probe ( int *  source,
int *  tag 
)
virtual

probe function which waits a new message

Returns
always true
Parameters
sourcesource rank of the message arrived
tagtag of the message arrived

Implements ParaComm.

Definition at line 845 of file paraCommCPP11.cpp.

References MessageQueueTableElement::getHead(), ParaCommCPP11::getRank(), MessageQueueElement::getSource(), MessageQueueElement::getTag(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().

Referenced by main(), runSolverThread(), and ParaCommCPP11::waitToken().

◆ receive()

int receive ( void *  bufer,
int  count,
const int  datatypeId,
int  source,
const int  tag 
)
virtual

receive function for standard ParaData types

Returns
always 0 (for future extensions)
Parameters
buferpoint to the head of receiving message
countthe number of data in the message
datatypeIddata type in the message
sourcesource of the message coming from
tagtag of the message

Implements ParaComm.

Definition at line 794 of file paraCommCPP11.cpp.

References ParaCommCPP11::copy(), MessageQueueTableElement::extarctElement(), ParaCommCPP11::freeMem(), MessageQueueElement::getData(), ParaCommCPP11::getRank(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().

Referenced by ParaCommCPP11::bcast(), main(), runSolverThread(), and ParaCommCPP11::waitToken().

◆ send()

int send ( void *  bufer,
int  count,
const int  datatypeId,
int  dest,
const int  tag 
)
virtual

send function for standard ParaData types

Returns
always 0 (for future extensions)
Parameters
buferpoint to the head of sending message
countthe number of data in the message
datatypeIddata type in the message
destdestination to send the message
tagtag of this message

Implements ParaComm.

Definition at line 775 of file paraCommCPP11.cpp.

References ParaCommCPP11::allocateMemAndCopy(), MessageQueueTableElement::enqueue(), ParaCommCPP11::getRank(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, and TAG_TRACE.

Referenced by ParaCommCPP11::bcast(), main(), ParaCommCPP11::passTermToken(), ParaCommCPP11::passToken(), and ParaTimeLimitMonitorTh::run().

◆ setLocalRank()

virtual void setLocalRank ( int  inRank)
virtual

Reimplemented from ParaComm.

Definition at line 798 of file paraCommCPP11.h.

References ParaCommCPP11::localRank.

◆ setToken()

void setToken ( int  rank,
int *  inToken 
)
virtual

set received token to this communicator

Parameters
rankrank to set the token
inTokentoken to be set

Reimplemented from ParaComm.

Definition at line 284 of file paraCommCPP11.cpp.

References ParaCommCPP11::token, and ParaCommCPP11::tokenAccessLockMutex.

◆ solverDel()

void solverDel ( int  rank)
virtual

delete Solver from this communicator

Parameters
rankrank of the Solver

Definition at line 193 of file paraCommCPP11.cpp.

References ParaCommCPP11::localRank, ParaCommCPP11::rankLockMutex, ParaCommCPP11::threadsTable, and THROW_LOGICAL_ERROR2.

◆ solverInit() [1/2]

void solverInit ( int  rank,
ParaParamSet paraParamSet 
)
virtual

initializer for a specific Solver

Parameters
rankrank of the Solver
paraParamSetUG parameter set

Definition at line 167 of file paraCommCPP11.cpp.

References ParaCommCPP11::localRank, paraParamSet, ParaCommCPP11::rankLockMutex, and ParaCommCPP11::threadsTable.

◆ solverInit() [2/2]

virtual void solverInit ( ParaParamSet paraParamSet)
virtual

initializer for Solvers

Parameters
paraParamSetUG parameter set

Implements ParaComm.

Definition at line 867 of file paraCommCPP11.h.

Referenced by main(), and runSolverThread().

◆ solverReInit()

void solverReInit ( int  rank,
ParaParamSet paraParamSet 
)
virtual

reinitializer of a specific Solver

Parameters
rankrank of the Solver
paraParamSetUG parameter set

Definition at line 180 of file paraCommCPP11.cpp.

References ParaCommCPP11::localRank, ParaCommCPP11::rankLockMutex, and ParaCommCPP11::threadsTable.

◆ tagStringTableIsSetUpCoorectly()

bool tagStringTableIsSetUpCoorectly ( )
protectedvirtual

check if tag string table (for debugging) set up correctly

Returns
true if tag string table is set up correctly, false otherwise

Reimplemented in BbParaCommCPP11, and ScipParaCommTh.

Definition at line 732 of file paraCommCPP11.cpp.

References UG::N_TH_TAGS, and ParaCommCPP11::tagStringTable.

Referenced by ParaCommCPP11::init(), and BbParaCommCPP11::tagStringTableIsSetUpCoorectly().

◆ unlockApp() [1/2]

virtual void unlockApp ( )
virtual

unlock UG application to synchronize with other threads

Implements ParaComm.

Definition at line 996 of file paraCommCPP11.h.

References ParaCommCPP11::applicationLockMutex.

Referenced by runSolverThread().

◆ unlockApp() [2/2]

virtual void unlockApp ( char const *  f,
int  l 
)
virtual

unlock UG application to synchronize with other threads (for debug)

Parameters
fstring to indicate what is locked
la number to show something

Reimplemented from ParaComm.

Definition at line 1007 of file paraCommCPP11.h.

References ParaCommCPP11::applicationLockMutex, and ParaCommCPP11::getRank().

◆ unlockRank() [1/2]

void unlockRank ( )

unlock rank

Definition at line 965 of file paraCommCPP11.h.

References ParaCommCPP11::rankLockMutex.

◆ unlockRank() [2/2]

void unlockRank ( char const *  f,
int  l 
)

unlock rank (for debugging)

Parameters
fstring to indicate what is locked
la number to show something

Definition at line 1020 of file paraCommCPP11.h.

References ParaCommCPP11::rankLockMutex.

◆ uTypeReceive()

int uTypeReceive ( void **  bufer,
const int  datatypeId,
int  source,
int  tag 
)

User type receive for created data type.

Returns
always 0 (for future extensions)
Parameters
buferpoint to the head of receiving message
datatypeIdcreated data type
sourcesource rank
tagtag of the message

Definition at line 917 of file paraCommCPP11.cpp.

References MessageQueueTableElement::extarctElement(), MessageQueueElement::getData(), ParaCommCPP11::getRank(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().

◆ uTypeSend()

int uTypeSend ( void *  bufer,
const int  datatypeId,
int  dest,
int  tag 
)

User type send for created data type.

Returns
always 0 (for future extensions)
Parameters
buferpoint to the head of sending message
datatypeIdcreated data type
destdestination rank
tagtag of the message

Definition at line 900 of file paraCommCPP11.cpp.

References MessageQueueTableElement::enqueue(), ParaCommCPP11::getRank(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, and TAG_TRACE.

◆ waitSpecTagFromSpecSource()

void waitSpecTagFromSpecSource ( const int  source,
const int  tag,
int *  receivedTag 
)
virtual

wait function for a specific tag from a specific source coming from

Parameters
sourcesource rank which the message should come from
tagtag which the message should wait
receivedTagtag of the message which is arrived

Implements ParaComm.

Definition at line 821 of file paraCommCPP11.cpp.

References ParaCommCPP11::getRank(), ParaCommCPP11::messageQueueTable, ParaCommCPP11::queueLockMutex, ParaCommCPP11::sentMessage, ParaCommCPP11::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().

◆ waitTerminatedMessage()

virtual bool waitTerminatedMessage ( )
virtual

function to wait Terminated message (This function is not used currently)

Returns
true when MPI communication is used, false when thread communication used

Implements ParaComm.

Definition at line 910 of file paraCommCPP11.h.

◆ waitToken()

bool waitToken ( int  rank)
virtual

wait token when UG runs with deterministic mode

Returns
true, when token is arrived to the rank
Parameters
rankrank to check if token is arrived

Reimplemented from ParaComm.

Definition at line 213 of file paraCommCPP11.cpp.

References UG::ParaINT, ParaCommCPP11::probe(), ParaCommCPP11::receive(), TAG_TRACE, UG::TagToken, ParaCommCPP11::token, and ParaCommCPP11::tokenAccessLockMutex.

Member Data Documentation

◆ applicationLockMutex

std::mutex applicationLockMutex
protected

mutex for applications

Definition at line 715 of file paraCommCPP11.h.

Referenced by ParaCommCPP11::lockApp(), and ParaCommCPP11::unlockApp().

◆ comSize

◆ localRank

◆ messageQueueTable

◆ queueLockMutex

◆ rankLockMutex

◆ sentMessage

◆ sentMsg

◆ tagStringTable

const char * tagStringTable
staticprotected
Initial value:
= {
TAG_STR(TagRacingRampUpParamSets),
}
static const int TagAckCompletion
Definition: paraTagDef.h:62
static const int TagCompletionOfCalculation
Definition: paraTagDef.h:54
static const int TagWinner
Definition: paraTagDef.h:60
static const int TagSolution
Definition: paraTagDef.h:51
static const int TagToken
Definition: paraTagDef.h:63
static const int TagTaskReceived
Definition: paraTagDef.h:48
static const int TagInterruptRequest
Definition: paraTagDef.h:57
static const int TagNotificationId
Definition: paraTagDef.h:55
static const int TagIncumbentValue
Definition: paraTagDef.h:52
static const int TagTerminated
Definition: paraTagDef.h:58
static const int TagTerminateRequest
Definition: paraTagDef.h:56
static const int TagRampUp
Definition: paraTagDef.h:50
static const int TagSolverState
Definition: paraTagDef.h:53
static const int TagHardTimeLimit
Definition: paraTagDef.h:61
static const int TagDiffSubproblem
Definition: paraTagDef.h:49
static const int TagTask
Definition: paraTagDef.h:47
#define TAG_STR(tag)
Definition: paraTagDef.h:40

tag name string table

Definition at line 705 of file paraCommCPP11.h.

Referenced by ParaCommCPP11::getTagString(), and ParaCommCPP11::tagStringTableIsSetUpCoorectly().

◆ tagTraceFlag

bool tagTraceFlag
protected

indicate if tags are traced or not

Definition at line 698 of file paraCommCPP11.h.

Referenced by ParaCommCPP11::lcInit().

◆ threadsTable

◆ timer

ParaSysTimer timer
protected

system timer

Definition at line 704 of file paraCommCPP11.h.

Referenced by ParaCommCPP11::getStartTime(), and ParaCommCPP11::init().

◆ token

int** token
protected

index 0: token index 1: token color -1: green > 0: yellow ( termination origin solver number ) -2: red ( means the solver can terminate )

Definition at line 699 of file paraCommCPP11.h.

Referenced by ParaCommCPP11::init(), ParaCommCPP11::passTermToken(), ParaCommCPP11::passToken(), ParaCommCPP11::setToken(), ParaCommCPP11::waitToken(), and ParaCommCPP11::~ParaCommCPP11().

◆ tokenAccessLockMutex

std::mutex* tokenAccessLockMutex
protected