
Go to the source code of this file.
Definition in file machine.c.
| typedef struct mpiPostRecvList MPIPostRecvList |
| typedef struct IRecvListEntry* IRecvList |
| CpvStaticDeclare | ( | double | , | |
| projTraceStart | ||||
| ) |
| CpvDeclare | ( | MPIPostRecvList * | , | |
| postRecvListHdr | ||||
| ) |
| CpvDeclare | ( | MPIPostRecvList * | , | |
| curPostRecvPtr | ||||
| ) |
| CpvDeclare | ( | int | , | |
| msgRecvCnt | ||||
| ) |
| CpvDeclare | ( | unsigned long | long, | |
| Cmi_posted_recv_total | ||||
| ) |
| CpvDeclare | ( | unsigned long | long, | |
| Cmi_unposted_recv_total | ||||
| ) |
| CpvDeclare | ( | MPI_Request * | , | |
| CmiPostedRecvRequests | ||||
| ) |
| CpvDeclare | ( | char ** | , | |
| CmiPostedRecvBuffers | ||||
| ) |
| CpvDeclare | ( | int * | , | |
| MSG_HISTOGRAM_ARRAY | ||||
| ) |
| static void recordMsgHistogramInfo | ( | int | size | ) | [static] |
Referenced by PumpMsgs(), and SendMsgBuf().
| static void reportMsgHistogramInfo | ( | ) | [static] |
Referenced by SendMsgBuf().
| static IRecvList irecvListEntryAllocate | ( | ) | [static] |
Definition at line 220 of file machine.c.
References malloc(), and IRecvListEntry::next.
Referenced by PumpMsgs(), and SendMsgBuf().
| static void irecvListEntryFree | ( | IRecvList | used | ) | [static] |
Definition at line 231 of file machine.c.
References IRecvListEntry::next.
Referenced by PumpMsgs().
| void CmiSetupMachineRecvBuffers | ( | ) |
| CpvStaticDeclare | ( | SMSG_LIST * | , | |
| sent_msgs | ||||
| ) |
| CpvStaticDeclare | ( | SMSG_LIST * | , | |
| end_sent | ||||
| ) |
| CpvStaticDeclare | ( | int | , | |
| MsgQueueLen | ||||
| ) |
| void mpi_end_spare | ( | ) |
Referenced by SendMsgBuf().
| void MPID_Progress_test | ( | ) |
Referenced by CmiReleaseSentMessages(), and PumpMsgs().
| static size_t CmiAllAsyncMsgsSent | ( | void | ) | [static] |
Definition at line 523 of file machine.c.
References CmiAbort(), done, MPI_SUCCESS, MPI_Test(), msg_list::next, and msg_list::req.
Referenced by SendMsgBuf().
| static void CmiReleaseSentMessages | ( | void | ) | [static] |
Definition at line 563 of file machine.c.
References CmiAbort(), CmiFree(), CmiMyPe(), CmiWallTimer(), msg_list::destpe, done, free(), MPI_SUCCESS, MPI_Test(), MPID_Progress_test(), msg_list::msg, msg_list::next, msg_list::req, startT, and traceUserSuppliedBracketedNote().
Referenced by MPISendOneMsg(), and SendMsgBuf().
| static int PumpMsgs | ( | void | ) | [static] |
Definition at line 611 of file machine.c.
References mpiPostRecvList::bufCnt, charmComm, CmiAbort(), CmiAlloc(), CmiFree(), CmiPrintf(), handleOneRecvedMsg(), irecvListEntryAllocate(), irecvListEntryFree(), MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_BYTE, MPI_Get_count(), MPI_Iprobe(), MPI_Irecv(), MPI_Recv(), MPI_Status::MPI_SOURCE, MPI_SUCCESS, MPI_Status::MPI_TAG, MPI_Test(), MPI_Testany(), MPID_Progress_test(), IRecvListEntry::msg, msg, mpiPostRecvList::msgSizeIdx, IRecvListEntry::next, mpiPostRecvList::next, PCQueueLength(), mpiPostRecvList::postedRecvBufs, mpiPostRecvList::postedRecvReqs, recordMsgHistogramInfo(), IRecvListEntry::req, and IRecvListEntry::size.
Referenced by MPISendOneMsg(), and SendMsgBuf().
| static void PumpMsgsBlocking | ( | void | ) | [static] |
Definition at line 883 of file machine.c.
References CdsFifo_Empty(), charmComm, CmiAbort(), CmiAlloc(), CmiGetState(), CmiMyPe(), CmiNodeFirst(), CmiPrintf(), CmiWallTimer(), CqsEmpty(), handleOneRecvedMsg(), MPI_ANY_SOURCE, MPI_BYTE, MPI_Get_count(), MPI_Recv(), MPI_SUCCESS, msg, PCQueueEmpty(), and traceUserSuppliedBracketedNote().
Referenced by SendMsgBuf().
| static int MsgQueueEmpty | ( | ) | [static] |
Referenced by SendMsgBuf().
| static int RecvQueueEmpty | ( | ) | [static] |
Referenced by SendMsgBuf().
| static int SendMsgBuf | ( | ) | [static] |
Obtain the number of nodes, my node id, and consuming machine layer specific arguments
Since the timerLock is never created, and is always NULL, then all the if-condition inside the timer functions could be disabled right now in the case of SMP. --Chao Mei
The call of CmiBarrier is usually before the initialization of trace module of Charm++, therefore, the START_EVENT and END_EVENT are disabled here. -Chao Mei
Definition at line 933 of file machine.c.
References _absoluteTime, _Cmi_mynode, _Cmi_mynodesize, AdvanceCommunicationForMPI(), already_in_signal_handler, mpiPostRecvList::bufCnt, CcdCallOnConditionKeep(), charmComm, CharmLibInterOperate, CkDieNow(), Cmi_smp_mode_setting, CmiAbort(), CmiAllAsyncMsgsSent(), CmiAlloc(), CmiBarrier(), CmiBarrierZero(), CmiCpuTimer(), CmiCreateLock(), CmiError(), CmiFree(), CmiGetArgFlag(), CmiGetArgFlagDesc(), CmiGetArgInt(), CmiHandleImmediate(), CmiInitTime(), CmiLock(), CmiMachineProgressImpl(), CmiMyPe(), CmiMyRank(), CmiNodeAllBarrier(), CmiNodeBarrier(), CmiNodeFirst(), CmiNotifyBeginIdle(), CmiNotifyGetState(), CmiNotifyIdleForMPI(), CmiNotifyStillIdle(), CmiPrintf(), CmiPrintStackTrace(), CmiRegisterHandler(), CmiReleaseSentMessages(), CmiStartTimer(), Converse::CmiSyncBroadcastAndFree(), CmiTimer(), CmiTimerAbsolute(), CmiTimerInit(), CmiTimerIsSynchronized(), CmiUnlock(), CmiWallTimer(), CmiYield(), COMM_THREAD_ONLY_RECV, COMM_THREAD_SEND_RECV, CommunicationServerThread(), CPD_ABORT, CPD_SIGNAL, CpdFreeze(), CpdNotify(), debugLog, done, DrainResourcesForMPI(), EmergencyExit(), free(), handleOneRecvedMsg(), idx, irecvListEntryAllocate(), KillOnAllSigs(), LrtsAbort(), LrtsPostNonLocal(), machine_exit(), MachineExitForMPI(), MachineInitForMPI(), MachinePostCommonInitForMPI(), MachinePostNonLocalForMPI(), MachinePreCommonInitForMPI(), malloc(), MPI_Abort(), MPI_Allreduce(), MPI_ANY_SOURCE, MPI_Attr_get(), MPI_Barrier(), MPI_BYTE, MPI_Cancel(), MPI_Comm_dup(), MPI_Comm_rank(), MPI_Comm_size(), MPI_COMM_WORLD, MPI_DOUBLE, mpi_end_spare(), MPI_Finalize(), MPI_Get_count(), MPI_Get_version(), MPI_Init(), MPI_INT, MPI_Irecv(), MPI_MIN, MPI_Recv(), MPI_Send(), MPI_SUCCESS, MPI_Test(), MPI_Wtime(), MPI_WTIME_IS_GLOBAL, MPISendOneMsg(), msg, MsgQueueEmpty(), mpiPostRecvList::msgSizeIdx, n, IRecvListEntry::next, mpiPostRecvList::next, PCQueueCreate(), PCQueueEmpty(), PCQueuePop(), mpiPostRecvList::postedRecvBufs, mpiPostRecvList::postedRecvReqs, printf(), ptr, PumpMsgs(), PumpMsgsBlocking(), recordMsgHistogramInfo(), CmiStateStruct::recv, ProcState::recvLock, RecvQueueEmpty(), registerMachineUserEventsFunction(), reportMsgHistogramInfo(), s, ProcState::sendMsgBuf, signal_int, size, sleep(), and traceRegisterUserEvent().
Definition at line 407 of file machine.c.
References CmiMyRank(), msg_list::destpe, malloc(), msg_list::mode, msg_list::msg, msg_list::next, PCQueueLength(), and msg_list::size.
Referenced by MachineSpecificSendForMPI().
| static CmiCommHandle MachineSpecificSendForMPI | ( | int | destNode, | |
| int | size, | |||
| char * | msg, | |||
| int | mode | |||
| ) | [static] |
Definition at line 498 of file machine.c.
References Cmi_smp_mode_setting, CmiGetState(), COMM_THREAD_SEND_RECV, msg_list::destpe, EnqueueMsg(), malloc(), msg_list::mode, MPISendOneMsg(), msg_list::msg, msg_list::next, and msg_list::size.
| static void MachineInitForMPI | ( | int * | argc, | |
| char *** | argv, | |||
| int * | numNodes, | |||
| int * | myNodeID | |||
| ) | [static] |
Referenced by SendMsgBuf().
| static void MachinePreCommonInitForMPI | ( | int | everReturn | ) | [static] |
Referenced by SendMsgBuf().
| static void MachinePostCommonInitForMPI | ( | int | everReturn | ) | [static] |
Referenced by SendMsgBuf().
| static void AdvanceCommunicationForMPI | ( | int | whenidle | ) | [static] |
Referenced by SendMsgBuf().
| static void DrainResourcesForMPI | ( | ) | [static] |
Referenced by SendMsgBuf().
| static void MachineExitForMPI | ( | ) | [static] |
Referenced by SendMsgBuf().
| void CmiNotifyIdleForMPI | ( | void | ) |
Referenced by SendMsgBuf().
| static void MachinePostNonLocalForMPI | ( | ) | [static] |
Referenced by SendMsgBuf().
| static CmiCommHandle MPISendOneMsg | ( | SMSG_LIST * | smsg | ) | [static] |
Definition at line 430 of file machine.c.
References charmComm, CmiAbort(), CmiReleaseSentMessages(), msg_list::destpe, msg_list::mode, MPI_BYTE, MPI_Isend(), MPI_SUCCESS, msg_list::msg, msg, msg_list::next, PumpMsgs(), msg_list::req, msg_list::size, and size.
Referenced by MachineSpecificSendForMPI(), and SendMsgBuf().
| int CmiAsyncMsgSent | ( | CmiCommHandle | c | ) |
| void CmiReleaseCommHandle | ( | CmiCommHandle | c | ) |
int CMI_DYNAMIC_OUTGOING_THRESHOLD = 4 [static] |
int CMI_DYNAMIC_SEND_CAPSIZE = 4 [static] |
int CMI_DYNAMIC_RECV_CAPSIZE = 3 [static] |
int dynamicSendCap = CMI_DYNAMIC_MAXCAPSIZE [static] |
int dynamicRecvCap = CMI_DYNAMIC_MAXCAPSIZE [static] |
Definition at line 59 of file machine.c.
Referenced by MPISendOneMsg(), PumpMsgs(), PumpMsgsBlocking(), and SendMsgBuf().
int MPI_POST_RECV_COUNT = 10 [static] |
int MPI_POST_RECV_LOWERSIZE = 8000 [static] |
int MPI_POST_RECV_UPPERSIZE = 64000 [static] |
int MPI_POST_RECV_INC = 1000 [static] |
int MPI_POST_RECV_MSG_INC = 400 [static] |
int MPI_POST_RECV_MSG_CNT_THRESHOLD = 200 [static] |
int MPI_POST_RECV_FREQ = 1000 [static] |
int MPI_POST_RECV_SIZE [static] |
static int MSG_HISTOGRAM_BINSIZE = 1000 [static] |
static int MAX_HISTOGRAM_BUCKETS = 2000 [static] |
int IRECV_MSG_THRESHOLD = 8000 [static] |
IRecvList freedIrecvList = NULL [static] |
IRecvList waitIrecvListHead = NULL [static] |
IRecvList waitIrecvListTail = NULL [static] |
int checksum_flag = 0 [static] |
| void(* signal_int)(int) |
Referenced by SendMsgBuf().
int _thread_provided = -1 [static] |
int request_max [static] |
int no_outstanding_sends = 0 [static] |
| int inside_comm = 0 |
PCQueue sendMsgBuf [static] |
CmiNodeLock sendMsgBufLock = NULL [static] |
1.5.5