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().