Communicator object for pthreads thread communications. More...
#include <paraCommPth.h>
Public Member Functions | |
| ParaCommPth () | |
| constructor of ParaCommPth More... | |
| virtual | ~ParaCommPth () |
| destructor of this communicator More... | |
| virtual void | init (int argc, char **argv) |
| initializer of this communicator More... | |
| 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... | |
| void | lcInit (ParaParamSet *paraParamSet) |
| initializer for LoadCoordinator More... | |
| void | solverInit (ParaParamSet *paraParamSet) |
| initializer for Solvers More... | |
| void | solverInit (int rank, ParaParamSet *paraParamSet) |
| initializer for a specific Solver More... | |
| void | solverReInit (int rank, ParaParamSet *paraParamSet) |
| reinitializer of a specific Solver More... | |
| void | solverDel (int rank) |
| delete Solver from this communicator More... | |
| void | abort () |
| abort. How it works sometimes depends on communicator used More... | |
| bool | waitTerminatedMessage () |
| function to wait Terminated message (This function is not used currently) More... | |
| bool | waitToken (int rank) |
| wait token when UG runs with deterministic mode More... | |
| void | passToken (int rank) |
| pass token to from the rank to the next More... | |
| bool | passTermToken (int rank) |
| pass termination token from the rank to the next More... | |
| void | setToken (int rank, int *inToken) |
| set received token to this communicator More... | |
| void | waitUntilRegistered () |
| wait until thread id is registered to thread table More... | |
| void | registedAllSolvers () |
| notify that all solvers are registered More... | |
| std::ostream * | getOstream () |
| get ostream pointer More... | |
| void | lockApp () |
| lock UG application to synchronize with other threads More... | |
| void | unlockApp () |
| unlock UG application to synchronize with other threads More... | |
| void | lockRank () |
| lock rank More... | |
| void | unlockRank () |
| unlock rank More... | |
| void | lockApp (char const *f, int l) |
| lock UG application to synchronize with other threads (for debugging) More... | |
| void | lockRank (char const *f, int l) |
| lock rank (for debugging) More... | |
| void | unlockRank (char const *f, int l) |
| unlock rank (for debugging) More... | |
| ParaTimer * | createParaTimer () |
| 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 ParaCalculationState * | createParaCalculationState ()=0 |
| transfer object factory More... | |
| virtual ParaRacingRampUpParamSet * | createParaRacingRampUpParamSet ()=0 |
| create ParaRacingRampUpParamSet object More... | |
| virtual ParaTask * | createParaTask ()=0 |
| create ParaTask object by default constructor More... | |
| virtual ParaParamSet * | createParaParamSet ()=0 |
| create ParaParamSet object More... | |
| virtual ParaSolverState * | createParaSolverState ()=0 |
| create ParaSolverState object by default constructor More... | |
| virtual ParaSolverTerminationState * | createParaSolverTerminationState ()=0 |
| create ParaSolverTerminationState object by default constructor More... | |
| virtual ParaTimer * | createParaTimer ()=0 |
| create ParaTimer object More... | |
| virtual ParaInstance * | createParaInstance ()=0 |
| create ParaInstance object by default constructor More... | |
| virtual ParaSolution * | createParaSolution ()=0 |
| create ParaSolution object by default constructor More... | |
| virtual ParaDiffSubproblem * | createParaDiffSubproblem () |
| 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 | |
| unsigned int | hashCode (pthread_t tid) |
| get hash code from thread id More... | |
| 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... | |
| Lock * | queueLock |
| Lock for synchronization. More... | |
| ConditionVariable * | sentMsg |
| Condition variable for synchronization. More... | |
| Lock * | tokenAccessLock |
| lock to access token More... | |
| Lock | applicationLock |
| lock for application More... | |
| Lock | rankLock |
| lock to access rank More... | |
Static Protected Attributes | |
| static const char * | tagStringTable [] |
| tag name string table More... | |
| static ThreadsTableElement * | threadsTable [HashTableSize] |
| threads table: index is thread rank More... | |
| static __thread int | localRank = -1 |
| local thread rank More... | |
Communicator object for pthreads thread communications.
Definition at line 705 of file paraCommPth.h.
| ParaCommPth | ( | ) |
constructor of ParaCommPth
Definition at line 786 of file paraCommPth.h.
|
virtual |
destructor of this communicator
Definition at line 442 of file paraCommPth.cpp.
References ABORT_LOGICAL_ERROR2, ParaCommPth::comSize, MessageQueueTableElement::extarctElement(), ParaCommPth::freeStandardTypes(), MessageQueueElement::getData(), MessageQueueElement::getDataTypeId(), ThreadsTableElement::getNext(), UG::HashTableSize, LOCK_RAII, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, rankGenLock, ParaCommPth::sentMessage, ParaCommPth::sentMsg, ParaCommPth::threadsTable, ParaCommPth::token, and ParaCommPth::tokenAccessLock.
|
virtual |
abort. How it works sometimes depends on communicator used
Implements ParaComm.
Definition at line 909 of file paraCommPth.h.
|
protected |
allocate memory and copy message
| buffer | pointer to buffer of the message |
| count | the number of data element in the message |
| datatypeId | data type of each element in the message |
Definition at line 556 of file paraCommPth.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 ParaCommPth::send().
|
virtual |
broadcast function for standard ParaData types
| buffer | point to the head of sending message |
| count | the number of data in the message |
| datatypeId | data type in the message |
| root | root rank for broadcasting |
Implements ParaComm.
Definition at line 944 of file paraCommPth.cpp.
References ParaCommPth::comSize, ParaCommPth::getRank(), ParaCommPth::receive(), and ParaCommPth::send().
|
protected |
copy message
| dest | destination to copy the data |
| src | source of the data |
| count | the number of data element |
| datatypeId | data type of each element |
Definition at line 671 of file paraCommPth.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 ParaCommPth::receive().
|
virtual |
create ParaTimer object
Implements ParaComm.
Definition at line 1054 of file paraCommPth.h.
|
protected |
free memory
| buffer | pointer to buffer of the message |
| count | the number of data element |
| datatypeId | data type of each element |
Definition at line 767 of file paraCommPth.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 ParaCommPth::freeStandardTypes(), and ParaCommPth::receive().
|
protected |
free memory
| elem | pointer to a message queue element |
Definition at line 865 of file paraCommPth.cpp.
References ParaCommPth::freeMem(), MessageQueueElement::getCount(), MessageQueueElement::getData(), MessageQueueElement::getDataTypeId(), UG::ParaCalculationStateType, UG::ParaInstanceType, UG::ParaParamSetType, UG::ParaRacingRampUpParamType, UG::ParaSolutionType, UG::ParaSolverStateType, UG::ParaSolverTerminationStateType, UG::ParaTaskType, and UG::UG_USER_TYPE_FIRST.
Referenced by ParaCommPth::~ParaCommPth().
|
virtual |
get size of the messageQueueTable
Implements ParaComm.
Definition at line 848 of file paraCommPth.h.
References ParaCommPth::comSize, MessageQueueTableElement::getSize(), and ParaCommPth::messageQueueTable.
| std::ostream * getOstream | ( | ) |
get ostream pointer
Definition at line 536 of file paraCommPth.cpp.
References ThreadsTableElement::getNext(), ThreadsTableElement::getOstream(), HashEntry, ParaCommPth::localRank, LOCK_RAII, rankGenLock, and ParaCommPth::threadsTable.
|
virtual |
get rank of caller's thread
Implements ParaComm.
Definition at line 509 of file paraCommPth.cpp.
References ThreadsTableElement::getNext(), ThreadsTableElement::getRank(), HashEntry, ParaCommPth::localRank, LOCK_RAII, rankGenLock, and ParaCommPth::threadsTable.
Referenced by ParaCommPth::bcast(), ParaCommPth::iProbe(), ParaCommPth::passTermToken(), ParaCommPth::probe(), ParaCommPth::receive(), ParaCommPth::send(), ParaCommPth::uTypeReceive(), ParaCommPth::uTypeSend(), and ParaCommPth::waitSpecTagFromSpecSource().
|
virtual |
get size of this communicator, which indicates how many threads in a UG process
Implements ParaComm.
Definition at line 837 of file paraCommPth.h.
References ParaCommPth::comSize.
| double getStartTime | ( | ) |
get start time of this communicator (should not be used)
Definition at line 818 of file paraCommPth.h.
References ParaSysTimer::getStartTime(), and ParaCommPth::timer.
|
virtual |
get Tag string for debugging
| tag | tag to be converted to string |
Implements ParaComm.
Reimplemented in BbParaCommPth.
Definition at line 935 of file paraCommPth.cpp.
References UG::N_TH_TAGS, and ParaCommPth::tagStringTable.
Referenced by BbParaCommPth::getTagString().
|
protected |
get hash code from thread id
| tid | thread id |
Definition at line 491 of file paraCommPth.cpp.
|
virtual |
initializer of this communicator
if you add tag, you should add tagStringTale too
initialize hashtable
| argc | the number of arguments |
| argv | pointers to the arguments |
Implements ParaComm.
Definition at line 85 of file paraCommPth.cpp.
References ParaCommPth::comSize, UG::HashTableSize, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, ParaCommPth::sentMessage, ParaCommPth::sentMsg, ConditionVariable::setLock(), ParaSysTimer::start(), ParaCommPth::tagStringTableIsSetUpCoorectly(), ParaCommPth::threadsTable, ParaCommPth::timer, ParaCommPth::token, and ParaCommPth::tokenAccessLock.
|
virtual |
iProbe function which checks if a new message is arrived or not
| source | source rank of the message arrived |
| tag | tag of the message arrived |
Implements ParaComm.
Definition at line 1053 of file paraCommPth.cpp.
References MessageQueueTableElement::checkElementWithTag(), MessageQueueTableElement::getHead(), ParaCommPth::getRank(), MessageQueueElement::getSource(), MessageQueueElement::getTag(), MessageQueueTableElement::isEmpty(), LOCKED, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, TAG_TRACE, and UG::TagAny.
|
virtual |
initializer for LoadCoordinator
| paraParamSet | UG parameter set |
Implements ParaComm.
Definition at line 149 of file paraCommPth.cpp.
References HashEntry, ParaCommPth::localRank, LOCKED, paraParamSet, rankGenLock, UG::TagTrace, ParaCommPth::tagTraceFlag, and ParaCommPth::threadsTable.
|
virtual |
lock UG application to synchronize with other threads
Implements ParaComm.
Definition at line 979 of file paraCommPth.h.
References ParaCommPth::applicationLock, and Lock::lock().
|
virtual |
lock UG application to synchronize with other threads (for debugging)
| f | string to indicate what is locked |
| l | a number to show something |
Reimplemented from ParaComm.
Definition at line 1016 of file paraCommPth.h.
References ParaCommPth::applicationLock, and Lock::lock().
| void lockRank | ( | ) |
lock rank
Definition at line 997 of file paraCommPth.h.
References Lock::lock(), and ParaCommPth::rankLock.
| void lockRank | ( | char const * | f, |
| int | l | ||
| ) |
lock rank (for debugging)
| f | string to indicate what is locked |
| l | a number to show something |
Definition at line 1028 of file paraCommPth.h.
References Lock::lock(), and ParaCommPth::rankLock.
|
virtual |
pass termination token from the rank to the next
| rank | from this rank, the termination token is passed |
Reimplemented from ParaComm.
Definition at line 402 of file paraCommPth.cpp.
References ParaCommPth::comSize, ParaCommPth::getRank(), LOCK_RAII, UG::ParaINT, ParaCommPth::send(), UG::TagToken, THROW_LOGICAL_ERROR4, ParaCommPth::token, and ParaCommPth::tokenAccessLock.
|
virtual |
pass token to from the rank to the next
| rank | from this rank, the token is passed |
Reimplemented from ParaComm.
Definition at line 389 of file paraCommPth.cpp.
References ParaCommPth::comSize, LOCK_RAII, UG::ParaINT, ParaCommPth::send(), UG::TagToken, ParaCommPth::token, and ParaCommPth::tokenAccessLock.
|
virtual |
probe function which waits a new message
| source | source rank of the message arrived |
| tag | tag of the message arrived |
Implements ParaComm.
Definition at line 1038 of file paraCommPth.cpp.
References MessageQueueTableElement::getHead(), ParaCommPth::getRank(), MessageQueueElement::getSource(), MessageQueueElement::getTag(), ParaCommPth::messageQueueTable, ParaCommPth::sentMessage, ParaCommPth::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().
Referenced by ParaCommPth::waitToken().
|
virtual |
receive function for standard ParaData types
| bufer | point to the head of receiving message |
| count | the number of data in the message |
| datatypeId | data type in the message |
| source | source of the message coming from |
| tag | tag of the message |
Implements ParaComm.
Definition at line 988 of file paraCommPth.cpp.
References ParaCommPth::copy(), MessageQueueTableElement::extarctElement(), ParaCommPth::freeMem(), MessageQueueElement::getData(), ParaCommPth::getRank(), LOCKED, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, ParaCommPth::sentMessage, ParaCommPth::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().
Referenced by ParaCommPth::bcast(), and ParaCommPth::waitToken().
| void registedAllSolvers | ( | ) |
notify that all solvers are registered
Definition at line 352 of file paraCommPth.cpp.
|
virtual |
send function for standard ParaData types
| bufer | point to the head of sending message |
| count | the number of data in the message |
| datatypeId | data type in the message |
| dest | destination to send the message |
| tag | tag of this message |
Implements ParaComm.
Definition at line 969 of file paraCommPth.cpp.
References ParaCommPth::allocateMemAndCopy(), MessageQueueTableElement::enqueue(), ParaCommPth::getRank(), LOCKED, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, ParaCommPth::sentMessage, ParaCommPth::sentMsg, and TAG_TRACE.
Referenced by ParaCommPth::bcast(), ParaCommPth::passTermToken(), and ParaCommPth::passToken().
|
virtual |
set received token to this communicator
| rank | rank to set the token |
| inToken | token to be set |
Reimplemented from ParaComm.
Definition at line 430 of file paraCommPth.cpp.
References LOCK_RAII, ParaCommPth::token, and ParaCommPth::tokenAccessLock.
| void solverDel | ( | int | rank | ) |
delete Solver from this communicator
| rank | rank of the Solver |
Definition at line 261 of file paraCommPth.cpp.
References ThreadsTableElement::getNext(), HashEntry, ParaCommPth::localRank, LOCKED, rankGenLock, ParaCommPth::threadsTable, THROW_LOGICAL_ERROR2, and THROW_LOGICAL_ERROR4.
| void solverInit | ( | int | rank, |
| ParaParamSet * | paraParamSet | ||
| ) |
initializer for a specific Solver
| rank | rank of the Solver |
| paraParamSet | UG parameter set |
Definition at line 172 of file paraCommPth.cpp.
References ThreadsTableElement::getNext(), HashEntry, ParaCommPth::localRank, LOCKED, paraParamSet, rankGenLock, ParaCommPth::threadsTable, and THROW_LOGICAL_ERROR4.
|
virtual |
initializer for Solvers
| paraParamSet | UG parameter set |
Implements ParaComm.
Definition at line 877 of file paraCommPth.h.
| void solverReInit | ( | int | rank, |
| ParaParamSet * | paraParamSet | ||
| ) |
reinitializer of a specific Solver
| rank | rank of the Solver |
| paraParamSet | UG parameter set |
Definition at line 212 of file paraCommPth.cpp.
References ThreadsTableElement::getNext(), HashEntry, ParaCommPth::localRank, LOCKED, paraParamSet, rankGenLock, ThreadsTableElement::setRank(), ParaCommPth::threadsTable, THROW_LOGICAL_ERROR1, and THROW_LOGICAL_ERROR4.
|
protectedvirtual |
check if tag string table (for debugging) set up correctly
Reimplemented in BbParaCommPth.
Definition at line 927 of file paraCommPth.cpp.
References UG::N_TH_TAGS, and ParaCommPth::tagStringTable.
Referenced by ParaCommPth::init(), and BbParaCommPth::tagStringTableIsSetUpCoorectly().
|
virtual |
unlock UG application to synchronize with other threads
Implements ParaComm.
Definition at line 988 of file paraCommPth.h.
References ParaCommPth::applicationLock, and Lock::unlock().
| void unlockRank | ( | ) |
unlock rank
Definition at line 1006 of file paraCommPth.h.
References ParaCommPth::rankLock, and Lock::unlock().
| void unlockRank | ( | char const * | f, |
| int | l | ||
| ) |
unlock rank (for debugging)
| f | string to indicate what is locked |
| l | a number to show something |
Definition at line 1041 of file paraCommPth.h.
References ParaCommPth::rankLock, and Lock::unlock().
| int uTypeReceive | ( | void ** | bufer, |
| const int | datatypeId, | ||
| int | source, | ||
| int | tag | ||
| ) |
User type receive for created data type.
| bufer | point to the head of receiving message |
| datatypeId | created data type |
| source | source rank |
| tag | tag of the message |
Definition at line 1106 of file paraCommPth.cpp.
References MessageQueueTableElement::extarctElement(), MessageQueueElement::getData(), ParaCommPth::getRank(), LOCKED, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, ParaCommPth::sentMessage, ParaCommPth::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().
| int uTypeSend | ( | void * | bufer, |
| const int | datatypeId, | ||
| int | dest, | ||
| int | tag | ||
| ) |
User type send for created data type.
| bufer | point to the head of sending message |
| datatypeId | created data type |
| dest | destination rank |
| tag | tag of the message |
Definition at line 1089 of file paraCommPth.cpp.
References MessageQueueTableElement::enqueue(), ParaCommPth::getRank(), LOCKED, ParaCommPth::messageQueueTable, ParaCommPth::queueLock, ParaCommPth::sentMessage, ParaCommPth::sentMsg, and TAG_TRACE.
|
virtual |
wait function for a specific tag from a specific source coming from
| source | source rank which the message should come from |
| tag | tag which the message should wait |
| receivedTag | tag of the message which is arrived |
Implements ParaComm.
Definition at line 1015 of file paraCommPth.cpp.
References ParaCommPth::getRank(), ParaCommPth::messageQueueTable, ParaCommPth::sentMessage, ParaCommPth::sentMsg, TAG_TRACE, and MessageQueueTableElement::waitMessage().
|
virtual |
function to wait Terminated message (This function is not used currently)
Implements ParaComm.
Definition at line 920 of file paraCommPth.h.
|
virtual |
wait token when UG runs with deterministic mode
| rank | rank to check if token is arrived |
Reimplemented from ParaComm.
Definition at line 359 of file paraCommPth.cpp.
References LOCK_RAII, UG::ParaINT, ParaCommPth::probe(), ParaCommPth::receive(), TAG_TRACE, UG::TagToken, ParaCommPth::token, and ParaCommPth::tokenAccessLock.
| void waitUntilRegistered | ( | ) |
wait until thread id is registered to thread table
Definition at line 315 of file paraCommPth.cpp.
References ThreadsTableElement::getNext(), HashEntry, ParaCommPth::localRank, LOCKED, rankGenLock, and ParaCommPth::threadsTable.
|
protected |
lock for application
Definition at line 727 of file paraCommPth.h.
Referenced by ParaCommPth::lockApp(), and ParaCommPth::unlockApp().
|
protected |
communicator size : number of threads joined in this system
Definition at line 708 of file paraCommPth.h.
Referenced by ParaCommPth::bcast(), ParaCommPth::getNumOfMessagesWaitingToSend(), ParaCommPth::getSize(), ParaCommPth::init(), ParaCommPth::passTermToken(), ParaCommPth::passToken(), and ParaCommPth::~ParaCommPth().
|
staticprotected |
local thread rank
Definition at line 719 of file paraCommPth.h.
Referenced by ParaCommPth::getOstream(), ParaCommPth::getRank(), ParaCommPth::lcInit(), ParaCommPth::solverDel(), ParaCommPth::solverInit(), ParaCommPth::solverReInit(), and ParaCommPth::waitUntilRegistered().
|
protected |
message queue table
Definition at line 721 of file paraCommPth.h.
Referenced by ParaCommPth::getNumOfMessagesWaitingToSend(), ParaCommPth::init(), ParaCommPth::iProbe(), ParaCommPth::probe(), ParaCommPth::receive(), ParaCommPth::send(), ParaCommPth::uTypeReceive(), ParaCommPth::uTypeSend(), ParaCommPth::waitSpecTagFromSpecSource(), and ParaCommPth::~ParaCommPth().
|
protected |
Lock for synchronization.
Definition at line 723 of file paraCommPth.h.
Referenced by ParaCommPth::init(), ParaCommPth::iProbe(), ParaCommPth::receive(), ParaCommPth::send(), ParaCommPth::uTypeReceive(), ParaCommPth::uTypeSend(), and ParaCommPth::~ParaCommPth().
|
protected |
lock to access rank
Definition at line 728 of file paraCommPth.h.
Referenced by ParaCommPth::lockRank(), and ParaCommPth::unlockRank().
|
protected |
sent message flag for synchronization
Definition at line 722 of file paraCommPth.h.
Referenced by ParaCommPth::init(), ParaCommPth::probe(), ParaCommPth::receive(), ParaCommPth::send(), ParaCommPth::uTypeReceive(), ParaCommPth::uTypeSend(), ParaCommPth::waitSpecTagFromSpecSource(), and ParaCommPth::~ParaCommPth().
|
protected |
Condition variable for synchronization.
Definition at line 724 of file paraCommPth.h.
Referenced by ParaCommPth::init(), ParaCommPth::probe(), ParaCommPth::receive(), ParaCommPth::send(), ParaCommPth::uTypeReceive(), ParaCommPth::uTypeSend(), ParaCommPth::waitSpecTagFromSpecSource(), and ParaCommPth::~ParaCommPth().
|
staticprotected |
tag name string table
Definition at line 716 of file paraCommPth.h.
Referenced by ParaCommPth::getTagString(), and ParaCommPth::tagStringTableIsSetUpCoorectly().
|
protected |
indicate if tags are traced or not
Definition at line 709 of file paraCommPth.h.
Referenced by ParaCommPth::lcInit().
|
staticprotected |
threads table: index is thread rank
Definition at line 717 of file paraCommPth.h.
Referenced by ParaCommPth::getOstream(), ParaCommPth::getRank(), ParaCommPth::init(), ParaCommPth::lcInit(), ParaCommPth::solverDel(), ParaCommPth::solverInit(), ParaCommPth::solverReInit(), ParaCommPth::waitUntilRegistered(), and ParaCommPth::~ParaCommPth().
|
protected |
system timer
Definition at line 715 of file paraCommPth.h.
Referenced by ParaCommPth::getStartTime(), and ParaCommPth::init().
|
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 710 of file paraCommPth.h.
Referenced by ParaCommPth::init(), ParaCommPth::passTermToken(), ParaCommPth::passToken(), ParaCommPth::setToken(), ParaCommPth::waitToken(), and ParaCommPth::~ParaCommPth().
|
protected |
lock to access token
Definition at line 726 of file paraCommPth.h.
Referenced by ParaCommPth::init(), ParaCommPth::passTermToken(), ParaCommPth::passToken(), ParaCommPth::setToken(), ParaCommPth::waitToken(), and ParaCommPth::~ParaCommPth().