arch/mpi/machine.c File Reference

MPI based machine layer. More...

Go to the source code of this file.

Data Structures

struct  msg_list
struct  ProcState
static int checksum_flag = 0
int _Cmi_numpes
int _Cmi_mynode
int _Cmi_mynodesize
int _Cmi_numnodes
int _Cmi_numpes
static int Cmi_nodestart
int networkProgressPeriod
int idleblock = 0
static void ** recdQueue_blk
static unsigned int recdQueue_blk_len
static unsigned int recdQueue_first
static unsigned int recdQueue_len
int MsgQueueLen = 0
static int request_max
static SMSG_LISTsent_msgs = 0
static SMSG_LISTend_sent = 0
static int Cmi_dim
static int no_outstanding_sends = 0
int inside_comm = 0
static CmiNodeLock timerLock = 0
static double starttimer = 0
static int _is_global = 0
static ProcStateprocState
static PCQueue sendMsgBuf
static CmiNodeLock sendMsgBufLock = NULL
static int Cmi_charmrun_fd = 0
static struct CmiStateStruct Cmi_state
int _Cmi_mype
int _Cmi_myrank
static int inexit = 0
static CmiNodeLock exitLock = 0
typedef msg_list SMSG_LIST
 CpvStaticDeclare (double, projTraceStart)
 CpvDeclare (unsigned long long, Cmi_posted_recv_total)
 CpvDeclare (unsigned long long, Cmi_unposted_recv_total)
 CpvDeclare (MPI_Request *, CmiPostedRecvRequests)
 CpvDeclare (char *, CmiPostedRecvBuffers)
 CpvDeclare (void *, CmiLocalQueue)
 CpvDeclare (unsigned, networkProgressCount)
static void recdQueueInit (void)
static void recdQueueAddToBack (void *element)
static void * recdQueueRemoveFromFront (void)
static void ConverseRunPE (int everReturn)
static void CommunicationServer (int sleepTime)
 CommunicationServer calls MPI to send messages in the queues and probe message from network.
static void CommunicationServerThread (int sleepTime)
void CmiAbort (const char *message)
 Serial version of common Charm++ routines:.
static void PerrorExit (const char *msg)
void SendSpanningChildren (int size, char *msg)
void SendHypercube (int size, char *msg)
unsigned char computeCheckSum (unsigned char *data, int len)
int CmiTimerIsSynchronized ()
void CmiTimerInit ()
double CmiTimer (void)
double CmiWallTimer (void)
double CmiCpuTimer (void)
int CmiBarrier ()
int CmiBarrierZero ()
 CsvDeclare (CmiNodeState, NodeState)
void CmiMemLock ()
void CmiMemUnlock ()
void CmiYield (void)
static void CmiStartThreads (char **argv)
static void CmiPushPE (int pe, void *msg)
static void CmiPushNode (void *msg)
int CmiMyPe (void)
int CmiMyRank (void)
int CmiNodeFirst (int node)
int CmiNodeSize (int node)
int CmiNodeOf (int pe)
int CmiRankOf (int pe)
static size_t CmiAllAsyncMsgsSent (void)
int CmiAsyncMsgSent (CmiCommHandle c)
void CmiReleaseCommHandle (CmiCommHandle c)
void MPID_Progress_test ()
void CmiReleaseSentMessages (void)
int PumpMsgs (void)
static void PumpMsgsBlocking (void)
static int MsgQueueEmpty ()
static int SendMsgBuf ()
static int RecvQueueEmpty ()


Detailed Description

MPI based machine layer.

Definition in file machine.c.


Typedef Documentation

typedef struct msg_list SMSG_LIST


Function Documentation

CpvStaticDeclare ( double  ,
projTraceStart   
)

CpvDeclare ( unsigned long  long,
Cmi_posted_recv_total   
)

CpvDeclare ( unsigned long  long,
Cmi_unposted_recv_total   
)

CpvDeclare ( MPI_Request ,
CmiPostedRecvRequests   
)

CpvDeclare ( char *  ,
CmiPostedRecvBuffers   
)

CpvDeclare ( void *  ,
CmiLocalQueue   
)

CpvDeclare ( unsigned  ,
networkProgressCount   
)

static void recdQueueInit ( void   )  [static]

Referenced by CommunicationServer(), and ConverseInit().

static void recdQueueAddToBack ( void *  element  )  [static]

Referenced by CommunicationServer(), and PumpMsgs().

static void* recdQueueRemoveFromFront ( void   )  [static]

Referenced by CmiGetNonLocal(), and CommunicationServer().

static void ConverseRunPE ( int  everReturn  )  [static]

static void CommunicationServer ( int  sleepTime  )  [static]

CommunicationServer calls MPI to send messages in the queues and probe message from network.

Definition at line 798 of file machine.c.

References _Cmi_mynode, _Cmi_mynodesize, _Cmi_numnodes, _Cmi_numpes, _immediateReady, _immRunning, AllocBlock(), CcdCallOnConditionKeep(), CdsFifo_Enqueue(), checksum_flag, Cmi_argv, Cmi_dim, Cmi_nodestart, Cmi_startfn, Cmi_usrsched, CmiAbort(), CmiAllAsyncMsgsSent(), CmiAlloc(), CmiAsyncBroadcastAllFn(), CmiAsyncBroadcastFn(), CmiAsyncNodeBroadcastAllFn(), CmiAsyncNodeBroadcastFn(), CmiAsyncNodeSendFn(), CmiAsyncSendFn(), CmiCopyArgs(), CmiCopyMsg(), CmiCreateLock(), CmiError(), CmiFree(), CmiFreeBroadcastAllFn(), CmiFreeBroadcastFn(), CmiFreeNodeBroadcastAllFn(), CmiFreeNodeBroadcastFn(), CmiFreeNodeSendFn(), CmiFreeSendFn(), CmiGetArgc(), CmiGetArgFlag(), CmiGetArgInt(), CmiGetNonLocal(), CmiGetNonLocalNodeQ(), CmiGetState(), CmiHandleImmediate(), CmiIdleLock_checkMessage(), CmiIdleLock_sleep(), CmiLock(), CmiMachineProgressImpl(), CmiMyPe(), CmiMyRank(), CmiNodeAllBarrier(), CmiNodeOf(), CmiNodeStateInit(), CmiNotifyBeginIdle(), CmiNotifyGetState(), CmiNotifyIdle(), CmiNotifyStillIdle(), CmiPrintf(), CmiPrintStackTrace(), CmiPushImmediateMsg(), CmiPushPE(), CmiRankOf(), CmiReleaseSentMessages(), CmiSendSelf(), CmiStartThreads(), CmiSyncBroadcastAllFn(), CmiSyncBroadcastFn(), CmiSyncNodeBroadcastAllFn(), CmiSyncNodeBroadcastFn(), CmiSyncNodeSendFn(), CmiSyncSendFn(), CmiSyncSendFn1(), CmiUnlock(), CmiYield(), CommunicationServerThread(), ConverseCommonExit(), ConverseCommonInit(), ConverseExit(), ConverseInit(), ConverseRunPE(), CQdCreate(), CsdScheduler(), CthInit(), debugLog, msg_list::destpe, end_sent, exitLock, CmiStateStruct::idle, idleblock, inexit, inside_comm, CmiStateStruct::localqueue, malloc(), MPI_Abort(), MPI_ANY_SOURCE, MPI_Barrier(), MPI_BYTE, MPI_Comm_rank(), MPI_Comm_size(), MPI_COMM_WORLD, MPI_Finalize(), MPI_Get_version(), MPI_Init(), MPI_Irecv(), MPI_Isend(), MPI_SUCCESS, msg_list::msg, MsgQueueEmpty(), MsgQueueLen, n, networkProgressPeriod, msg_list::next, no_outstanding_sends, p, PCQueueCreate(), PCQueueEmpty(), PCQueueLength(), PCQueuePop(), CmiStateStruct::pe, printf(), procState, PumpMsgs(), PumpMsgsBlocking(), CmiStateStruct::rank, recdQueue_blk, recdQueue_blk_len, recdQueue_first, recdQueue_len, recdQueueAddToBack(), recdQueueInit(), recdQueueRemoveFromFront(), CmiStateStruct::recv, ProcState::recvLock, RecvQueueEmpty(), registerMachineUserEventsFunction(), msg_list::req, request_max, s, SendHypercube(), sendMsgBuf, SendMsgBuf(), sendMsgBufLock, SendSpanningChildren(), sent_msgs, msg_list::size, size, sleep(), SpillBlock(), and traceRegisterUserEvent().

Referenced by call_startfn(), CmiNotifyStillIdle(), CommunicationPeriodic(), CommunicationServer(), and KillOnAllSigs().

static void CommunicationServerThread ( int  sleepTime  )  [static]

Referenced by call_startfn(), and CommunicationServer().

void CmiAbort ( const char *  message  ) 

Serial version of common Charm++ routines:.

Currently only used for FEM_ALONE mode.

Orion Sky Lawlor, olawlor@acm.org, 2003/8/15

Definition at line 8 of file charm_standalone.C.

static void PerrorExit ( const char *  msg  )  [static]

Definition at line 219 of file machine.c.

void SendSpanningChildren ( int  size,
char *  msg 
)

void SendHypercube ( int  size,
char *  msg 
)

Referenced by AssembleDatagram(), CommunicationServer(), handoverMessage(), handoverSysvshmMessage(), IntegrateMessageDatagram(), KillOnAllSigs(), processBufferedBcast(), processMessage(), PumpMsgs(), and PumpMsgsBlocking().

int CmiBarrier ( void   ) 

Definition at line 338 of file machine.c.

References CmiAbort(), CmiMyRank(), MPI_Barrier(), MPI_COMM_WORLD, and MPI_SUCCESS.

int CmiBarrierZero ( void   ) 

Definition at line 353 of file machine.c.

References CmiMyRank(), CmiNodeAllBarrier(), CmiPrintf(), MPI_ANY_SOURCE, MPI_BYTE, MPI_COMM_WORLD, MPI_Recv(), MPI_Send(), MPI_SUCCESS, msg_list::msg, and printf().

CsvDeclare ( CmiNodeState  ,
NodeState   
)

void CmiMemLock ( void   ) 

Definition at line 420 of file machine.c.

void CmiMemUnlock ( void   ) 

Definition at line 421 of file machine.c.

static void CmiStartThreads ( char **  argv  )  [static]

Definition at line 428 of file machine.c.

References _Cmi_mype, _Cmi_myrank, Cmi_nodestart, Cmi_state, and CmiStateInit().

static void CmiPushPE ( int  pe,
void *  msg 
) [static]

Definition at line 437 of file machine.c.

References CmiIdleLock_addMessage(), CmiLock(), CmiPushImmediateMsg(), CmiUnlock(), CmiStateStruct::idle, CmiStateStruct::pe, procState, and CmiStateStruct::recv.

static void CmiPushNode ( void *  msg  )  [static]

Definition at line 468 of file machine.c.

References CmiIdleLock_addMessage(), CmiLock(), CmiPushImmediateMsg(), CmiUnlock(), and CmiStateStruct::idle.

Referenced by AssembleDatagram(), handoverMessage(), IntegrateMessageDatagram(), KillOnAllSigs(), processMessage(), PumpMsgs(), and PumpMsgsBlocking().

int CmiMyPe ( void   ) 

Definition at line 489 of file machine.c.

References CmiGetState(), and CmiStateStruct::pe.

int CmiMyRank ( void   ) 

Definition at line 496 of file machine.c.

References CmiGetState(), and CmiStateStruct::rank.

Referenced by _initCharm(), _speedHdlr(), CldAskLoadHandler(), CldBalance(), CldGraphModuleInit(), CmiBarrier(), CmiBarrierZero(), CmiInitCPUAffinity(), CmiOutOfMemoryInit(), CmiProcessPriority(), CmiTimerInit(), CommunicationServer(), ConverseCommonInit(), Cpthread_once(), Cpthread_start_main(), CsdInit(), CWebPerformanceRegisterFunction(), getInfiCmiChunkThread(), infi_CmiFree(), infi_CmiFreeDirect(), init_ranges(), initQd(), isomalloc_push(), and KillOnAllSigs().

int CmiNodeFirst ( int  node  ) 

Definition at line 503 of file machine.c.

References _Cmi_mynodesize.

Referenced by _sendTriggers(), _speedHdlr(), CmiNodeReduce(), CmiNodeReduceStruct(), and KillOnAllSigs().

int CmiNodeSize ( int  node  ) 

Definition at line 504 of file machine.c.

References _Cmi_mynodesize.

Referenced by _speedHdlr(), ccs_getinfo(), and KillOnAllSigs().

int CmiNodeOf ( int  pe  ) 

Definition at line 508 of file machine.c.

References _Cmi_mynodesize, and CmiStateStruct::pe.

Referenced by CkGetSrcNode(), CldNodeEnqueue(), CldStillIdle(), CommunicationServer(), KillOnAllSigs(), LV3D0_ClientManager_toMaster::progress(), and CkNodeReductionMgr::ReductionStarting().

int CmiRankOf ( int  pe  ) 

Definition at line 509 of file machine.c.

References _Cmi_mynodesize, and CmiStateStruct::pe.

Referenced by CldStillIdle(), CmiNodeReduce(), CmiNodeReduceStruct(), CommunicationServer(), KillOnAllSigs(), and traceCommonInit().

static size_t CmiAllAsyncMsgsSent ( void   )  [static]

Definition at line 512 of file machine.c.

References CmiAbort(), MPI_SUCCESS, MPI_Test(), msg_list::next, msg_list::req, and sent_msgs.

int CmiAsyncMsgSent ( CmiCommHandle  c  ) 

Definition at line 530 of file machine.c.

References CmiAbort(), MPI_SUCCESS, MPI_Test(), msg_list::next, msg_list::req, and sent_msgs.

void CmiReleaseCommHandle ( CmiCommHandle  c  ) 

Definition at line 548 of file machine.c.

void MPID_Progress_test (  ) 

Referenced by CmiReleaseSentMessages(), and PumpMsgs().

void CmiReleaseSentMessages ( void   ) 

Definition at line 557 of file machine.c.

References CmiAbort(), CmiFree(), CmiMyPe(), CmiWallTimer(), cur_unsent, msg_list::destpe, msg_list::done, msg_list::e, elan_base, end_sent, MPI_SUCCESS, MPI_Test(), MPID_Progress_test(), msg_list::msg, MsgQueueBytes, MsgQueueLen, msg_list::next, outstandingMsgs, processGetEnv(), release_pmsg_list(), msg_list::req, msg_list::sent, sent_msgs, msg_list::size, msg_list::status, and traceUserBracketEvent().

Referenced by CmiAllAsyncMsgsSent(), CmiGetNonLocal(), CmiNotifyIdle(), CmiNotifyStillIdle(), CmiPing(), CommunicationServer(), ConverseExit(), elan_barrier(), elan_machine_allreduce(), elan_machine_broadcast(), elan_machine_reduce(), and ElanSendFn().

int PumpMsgs ( void   ) 

Definition at line 596 of file machine.c.

References CmiAbort(), CmiAlloc(), CmiFree(), CmiHandleImmediate(), CmiPrintf(), CmiPushNode(), CmiPushPE(), MPI_ANY_SOURCE, MPI_BYTE, MPI_COMM_WORLD, MPI_Get_count(), MPI_Iprobe(), MPI_Irecv(), MPI_Recv(), MPI_Status::MPI_SOURCE, MPI_SUCCESS, MPI_Status::MPI_TAG, MPI_Testany(), MPID_Progress_test(), SendHypercube(), and SendSpanningChildren().

static void PumpMsgsBlocking ( void   )  [static]

Definition at line 707 of file machine.c.

References CdsFifo_Empty(), CmiAbort(), CmiAlloc(), CmiGetState(), CmiMyPe(), CmiPrintf(), CmiPushNode(), CmiPushPE(), CqsEmpty(), MPI_ANY_SOURCE, MPI_BYTE, MPI_COMM_WORLD, MPI_Get_count(), MPI_Recv(), MPI_SUCCESS, PCQueueEmpty(), CmiStateStruct::recv, SendHypercube(), SendSpanningChildren(), and sent_msgs.

Referenced by CommunicationServer().

static int MsgQueueEmpty (  )  [static]

Definition at line 770 of file machine.c.

References _Cmi_mynodesize, PCQueueEmpty(), procState, and sendMsgBuf.

Referenced by CommunicationServer().

static int SendMsgBuf (  )  [static]

Referenced by CommunicationServer().

static int RecvQueueEmpty (  )  [static]

Definition at line 785 of file machine.c.

References _Cmi_mynodesize, and PCQueueEmpty().

Referenced by CommunicationServer().


Variable Documentation

int checksum_flag = 0 [static]

Definition at line 87 of file machine.c.

Referenced by CommunicationServer().

int _Cmi_numpes

Definition at line 154 of file machine.c.

int _Cmi_mynode

Definition at line 155 of file machine.c.

int _Cmi_mynodesize

Definition at line 156 of file machine.c.

int _Cmi_numnodes

Definition at line 157 of file machine.c.

int _Cmi_numpes

Definition at line 158 of file machine.c.

int Cmi_nodestart [static]

Definition at line 159 of file machine.c.

int networkProgressPeriod

Definition at line 165 of file machine.c.

Referenced by CommunicationServer(), and KillOnAllSigs().

int idleblock = 0

Definition at line 167 of file machine.c.

Referenced by CommunicationServer().

void** recdQueue_blk [static]

Definition at line 179 of file machine.c.

Referenced by CommunicationServer(), recdQueueAddToBack(), recdQueueInit(), and recdQueueRemoveFromFront().

unsigned int recdQueue_blk_len [static]

Definition at line 180 of file machine.c.

Referenced by CommunicationServer(), recdQueueAddToBack(), recdQueueInit(), and recdQueueRemoveFromFront().

unsigned int recdQueue_first [static]

Definition at line 181 of file machine.c.

Referenced by CommunicationServer(), recdQueueAddToBack(), recdQueueInit(), and recdQueueRemoveFromFront().

unsigned int recdQueue_len [static]

Definition at line 182 of file machine.c.

Referenced by CommunicationServer(), recdQueueAddToBack(), recdQueueInit(), and recdQueueRemoveFromFront().

int MsgQueueLen = 0

Definition at line 199 of file machine.c.

int request_max [static]

Definition at line 200 of file machine.c.

SMSG_LIST* sent_msgs = 0 [static]

Definition at line 202 of file machine.c.

SMSG_LIST* end_sent = 0 [static]

Definition at line 203 of file machine.c.

int Cmi_dim [static]

Definition at line 205 of file machine.c.

int no_outstanding_sends = 0 [static]

Definition at line 207 of file machine.c.

Referenced by CommunicationServer().

int inside_comm = 0

Definition at line 210 of file machine.c.

CmiNodeLock timerLock = 0 [static]

Definition at line 232 of file machine.c.

Referenced by CmiCpuTimer(), CmiTimer(), and CmiWallTimer().

double starttimer = 0 [static]

Definition at line 233 of file machine.c.

int _is_global = 0 [static]

Definition at line 234 of file machine.c.

Referenced by CmiTimerInit(), and CmiTimerIsSynchronized().

ProcState* procState [static]

Definition at line 389 of file machine.c.

Referenced by CmiPushPE(), CommunicationServer(), and MsgQueueEmpty().

PCQueue sendMsgBuf [static]

Definition at line 394 of file machine.c.

Referenced by CommunicationServer(), and MsgQueueEmpty().

CmiNodeLock sendMsgBufLock = NULL [static]

Definition at line 395 of file machine.c.

Referenced by CommunicationServer().

int Cmi_charmrun_fd = 0 [static]

Definition at line 407 of file machine.c.

Referenced by call_startfn(), CheckSocketsReady(), and KillOnAllSigs().

struct CmiStateStruct Cmi_state [static]

Definition at line 416 of file machine.c.

int _Cmi_mype

Definition at line 417 of file machine.c.

int _Cmi_myrank

Definition at line 418 of file machine.c.

int inexit = 0 [static]

Definition at line 767 of file machine.c.

Referenced by CommunicationServer().

CmiNodeLock exitLock = 0 [static]

Definition at line 768 of file machine.c.

Referenced by CommunicationServer().


Generated on Sun Jun 29 13:29:32 2008 for Charm++ by  doxygen 1.5.1