Collaboration diagram for Converse:
|
Files | |
| file | convcore.c |
| converse main core | |
Modules | |
| Converse Machine Layer | |
| Common structures for all implementations of the machine layer. | |
Data Structures | |
| struct | CLA |
| struct | GroupDef |
| struct | MultiMsg |
| struct | CmiTmpBuf_t |
| struct | CmiMultipleSendHeader |
| struct | cmi_cpu_idlerec |
| void | CmiTimerInit () |
| double | CmiWallTimer () |
| double | CmiCpuTimer () |
| double | CmiTimer () |
Typedefs | |
| typedef unsigned long | mmulong |
Functions | |
| CpvExtern (int, _traceCoreOn) | |
| void | CcdModuleInit (char **) |
| void | CmiMemoryInit (char **) |
| void | CldModuleInit (char **) |
| void | CmiInitCPUAffinity (char **) |
| CpvDeclare (mmulong, MemoryUsage) | |
| CpvDeclare (mmulong, HiWaterMark) | |
| CpvDeclare (mmulong, ReportedHiWaterMark) | |
| CpvDeclare (int, AllocCount) | |
| CpvDeclare (int, BlocksAllocated) | |
| CpvDeclare (int, expIOFlushFlag) | |
| CpvDeclare (char *, explicitIOBuffer) | |
| CpvDeclare (int, expIOBufferSize) | |
| void * | CmiGetNonLocalNodeQ () |
| CpvDeclare (void *, CsdSchedQueue) | |
| CpvDeclare (void *, CsdPrefetchQueue) | |
| CsvDeclare (void *, CsdNodeQueue) | |
| CsvDeclare (CmiNodeLock, CsdNodeQueueLock) | |
| CpvDeclare (int, CsdStopFlag) | |
| CpvDeclare (int, CsdLocalCounter) | |
| void * | CMI_VMI_CmiAlloc (int size) |
| void | CMI_VMI_CmiFree (void *ptr) |
| void * | elan_CmiAlloc (int size) |
| void * | infi_CmiAlloc (int size) |
| void | infi_CmiFree (void *ptr) |
| CpvDeclare (void *, CkGridObject) | |
| CpvDeclare (void *, CsdGridQueue) | |
| static void | CmiAddCLA (const char *arg, const char *param, const char *desc) |
| static void | CmiPrintCLAs (void) |
| void | CmiArgInit (char **argv) |
| Determines if command-line usage information should be printed-- that is, if a "-?", "-h", or "--help" flag is present. | |
| int | CmiArgGivingUsage (void) |
| void | CmiArgGroup (const char *parentName, const char *groupName) |
| int | CmiGetArgc (char **argv) |
| char ** | CmiCopyArgs (char **argv) |
| void | CmiDeleteArgs (char **argv, int k) |
| int | CmiGetArgStringDesc (char **argv, const char *arg, char **optDest, const char *desc) |
| int | CmiGetArgString (char **argv, const char *arg, char **optDest) |
| int | CmiGetArgDoubleDesc (char **argv, const char *arg, double *optDest, const char *desc) |
| int | CmiGetArgDouble (char **argv, const char *arg, double *optDest) |
| int | CmiGetArgIntDesc (char **argv, const char *arg, int *optDest, const char *desc) |
| int | CmiGetArgInt (char **argv, const char *arg, int *optDest) |
| int | CmiGetArgFlagDesc (char **argv, const char *arg, const char *desc) |
| int | CmiGetArgFlag (char **argv, const char *arg) |
| static char * | _implTrimParenthesis (char *str, int trimname) |
| static const char * | _implGetBacktraceSys (const char *name) |
| void | CmiBacktracePrint (void **retPtrs, int nLevels) |
| Print out the names of these function pointers. | |
| void | CmiPrintStackTrace (int nSkip) |
| int | CmiIsFortranLibraryCall () |
| CpvDeclare (int, CstatsMaxChareQueueLength) | |
| CpvDeclare (int, CstatsMaxForChareQueueLength) | |
| CpvDeclare (int, CstatsMaxFixedChareQueueLength) | |
| CpvStaticDeclare (int, CstatPrintQueueStatsFlag) | |
| CpvStaticDeclare (int, CstatPrintMemStatsFlag) | |
| void | CstatsInit (char **argv) |
| int | CstatMemory (int i) |
| int | CstatPrintQueueStats () |
| int | CstatPrintMemStats () |
| CpvDeclare (CmiHandlerInfo *, CmiHandlerTable) | |
| CpvStaticDeclare (int, CmiHandlerCount) | |
| CpvStaticDeclare (int, CmiHandlerLocal) | |
| CpvStaticDeclare (int, CmiHandlerGlobal) | |
| CpvDeclare (int, CmiHandlerMax) | |
| static void | CmiExtendHandlerTable (int atLeastLen) |
| void | CmiNumberHandler (int n, CmiHandler h) |
| void | CmiNumberHandlerEx (int n, CmiHandlerEx h, void *userPtr) |
| int | CmiRegisterHandler (CmiHandler h) |
| int | CmiRegisterHandlerEx (CmiHandlerEx h, void *userPtr) |
| int | CmiRegisterHandlerLocal (CmiHandler h) |
| int | CmiRegisterHandlerGlobal (CmiHandler h) |
| static void | _cmiZeroHandler (void *msg) |
| static void | CmiHandlerInit () |
| CpvStaticDeclare (double, clocktick) | |
| CpvStaticDeclare (int, inittime_wallclock) | |
| CpvStaticDeclare (int, inittime_virtual) | |
| int | CmiTimerIsSynchronized () |
| CpvStaticDeclare (double, inittime_virtual) | |
| static double | readMHz (void) |
| CpvStaticDeclare (double, inittime_walltime) | |
| double | CmiStartTimer (void) |
| static unsigned long long | BGLTimebase (void) |
| static unsigned long long | BGPTimebase (void) |
| CpvStaticDeclare (double, inittime_wallclock) | |
| CpvStaticDeclare (long long, inittime_wallclock) | |
| int | CmiLongSendQueue (int forNode, int longerThanBytes) |
| Return 1 if our outgoing message queue for this node is longer than this many bytes. | |
| void | CmiSignal (int sig1, int sig2, int sig3, void(*handler)()) |
| void | CsdBeginIdle (void) |
| void | CsdStillIdle (void) |
| void | CsdEndIdle (void) |
| void | CmiHandleMessage (void *msg) |
| void | CmiDeliversInit () |
| int | CmiDeliverMsgs (int maxmsgs) |
| CpvDeclare (void *, CsdObjQueue) | |
| void | CsdSchedulerState_new (CsdSchedulerState_t *s) |
| void * | CsdNextMessage (CsdSchedulerState_t *s) |
| int | CsdScheduler (int maxmsgs) |
| void | CkClearAllArrayElements () |
| void | machine_OffloadAPIProgress () |
| void | CsdScheduleForever (void) |
| int | CsdScheduleCount (int maxmsgs) |
| void | CsdSchedulePoll (void) |
| void | CmiDeliverSpecificMsg (int handler) |
| CpvStaticDeclare (CthThread, CthMainThread) | |
| CpvStaticDeclare (CthThread, CthSchedulingThread) | |
| CpvStaticDeclare (CthThread, CthSleepingStandins) | |
| CpvStaticDeclare (int, CthResumeNormalThreadIdx) | |
| CpvStaticDeclare (int, CthResumeSchedulingThreadIdx) | |
| void | CthStandinCode () |
| static CthThread | CthSuspendNormalThread () |
| void | CthEnqueueSchedulingThread (CthThreadToken *token, int, int, unsigned int *) |
| CthThread | CthSuspendSchedulingThread () |
| void | CthResumeNormalThread (CthThreadToken *token) |
| void | CthResumeSchedulingThread (CthThreadToken *token) |
| void | CthEnqueueNormalThread (CthThreadToken *token, int s, int pb, unsigned int *prio) |
| void | CthSetStrategyDefault (CthThread t) |
| void | CthSchedInit () |
| void | CsdInit (char **argv) |
| void | CmiSyncVectorSend (int destPE, int n, int *sizes, char **msgs) |
| CmiCommHandle | CmiASyncVectorSend (int destPE, int n, int *sizes, char **msgs) |
| void | CmiSyncVectorSendAndFree (int destPE, int n, int *sizes, char **msgs) |
| CpvStaticDeclare (int, CmiReductionMessageHandler) | |
| CpvStaticDeclare (int, _reduce_num_children) | |
| CpvStaticDeclare (int, _reduce_parent) | |
| CpvStaticDeclare (int, _reduce_received) | |
| CpvStaticDeclare (char **, _reduce_msg_list) | |
| CpvStaticDeclare (void *, _reduce_data) | |
| CpvStaticDeclare (int, _reduce_data_size) | |
| CpvStaticDeclare (CmiUInt2, _reduce_seqID) | |
| int | CmiGetReductionHandler () |
| CmiHandler | CmiGetReductionDestination () |
| CmiReductionsInit () | |
| int | CmiReduceNextID () |
| void | CmiSendReduce () |
| void | CmiReduce (void *data, int size, void *(*mergeFn)(void *, void **, int)) |
| void | CmiReduceStruct (void *data, void(*pupFn)(void *, void *), void *(*mergeFn)(void *, void **, int), CmiHandler dest, void(*deleteFn)(void *)) |
| void | CmiNodeReduce (void *data, int size, void *(*mergeFn)(void *, void **, int), int redID, int numChildren, int parent) |
| void | CmiNodeReduceStruct (void *data, void(*pupFn)(void *, void *), void *(*mergeFn)(void *, void **, int), CmiHandler dest, void(*deleteFn)(void *)) |
| void | CmiHandleReductionMessage (void *msg) |
| CpvStaticDeclare (int, CmiGroupHandlerIndex) | |
| CpvStaticDeclare (int, CmiGroupCounter) | |
| CpvStaticDeclare (GroupDef *, CmiGroupTable) | |
| void | CmiGroupHandler (GroupDef def) |
| CmiGroup | CmiEstablishGroup (int npes, int *pes) |
| void | CmiLookupGroup (CmiGroup grp, int *npes, int **pes) |
| void | CmiGroupInit () |
| void | CmiSyncListSendFn (int npes, int *pes, int len, char *msg) |
| CmiCommHandle | CmiAsyncListSendFn (int npes, int *pes, int len, char *msg) |
| void | CmiFreeListSendFn (int npes, int *pes, int len, char *msg) |
| CpvDeclare (int, CmiMulticastHandlerIndex) | |
| void | CmiMulticastDeliver (MultiMsg msg) |
| void | CmiMulticastHandler (MultiMsg msg) |
| void | CmiSyncMulticastFn (CmiGroup grp, int len, char *msg) |
| void | CmiFreeMulticastFn (CmiGroup grp, int len, char *msg) |
| CmiCommHandle | CmiAsyncMulticastFn (CmiGroup grp, int len, char *msg) |
| void | CmiMulticastInit () |
| void * | CmiAlloc (int size) |
| static void * | CmiAllocFindEnclosing (void *blk) |
| Follow the header links out to the most enclosing block. | |
| void | CmiReference (void *blk) |
| Increment the reference count for this block's owner. | |
| int | CmiSize (void *blk) |
| Return the size of the user portion of this block. | |
| void | CmiFree (void *blk) |
| Decrement the reference count for this block. | |
| CpvDeclare (CmiTmpBuf_t, CmiTmpBuf) | |
| static void | CmiTmpSetup (CmiTmpBuf_t *b) |
| void * | CmiTmpAlloc (int size) |
| void | CmiTmpFree (void *t) |
| void | CmiTmpInit (char **argv) |
| void | CmiMkdir (const char *dirName) |
| CpvDeclare (int, CmiMainHandlerIDP) | |
| static int | roundUpSize (unsigned int s) |
| static int | paddingSize (unsigned int s) |
| static void | _CmiMultipleSend (unsigned int destPE, int len, int sizes[], char *msgComps[], int immed) |
| void | CmiMultipleSend (unsigned int destPE, int len, int sizes[], char *msgComps[]) |
| void | CmiMultipleIsend (unsigned int destPE, int len, int sizes[], char *msgComps[]) |
| static void | CmiMultiMsgHandler (char *msgWhole) |
| void | CmiInitMultipleSend (void) |
| int | HypercubeGetBcastDestinations (int mype, int total_pes, int k, int *dest_pes) |
| CpvDeclare (int, CmiImmediateMsgHandlerIdx) | |
| static void | CmiImmediateMsgHandler (char *msg) |
| void | CmiInitImmediateMsg (void) |
| static void | on_timeout (cmi_cpu_idlerec *rec, double curWallTime) |
| static void | on_idle (cmi_cpu_idlerec *rec, double curWallTime) |
| static void | on_busy (cmi_cpu_idlerec *rec, double curWallTime) |
| static void | CIdleTimeoutInit (char **argv) |
| void | CrnInit (void) |
| void | CmiIsomallocInit (char **argv) |
| void | CmiIOInit (char **argv) |
| static void | CmiProcessPriority (char **argv) |
| void | CommunicationServerInit () |
| void | ConverseCommonInit (char **argv) |
| Main Converse initialization routine. | |
| void | ConverseCommonExit (void) |
| void | CmiInitCell () |
| void | CmiPrintf (const char *format,...) |
| void | CmiError (const char *format,...) |
| void | __cmi_assert (const char *expr, const char *file, int line) |
| char * | CmiCopyMsg (char *msg, int len) |
| unsigned char | computeCheckSum (unsigned char *data, int len) |
Variables | |
| CmiSwitchToPEFnPtr | CmiSwitchToPE |
| int | cur_restart_phase = 1 |
| static int | CsdLocalMax = CSD_LOCAL_MAX_DEFAULT |
| pthread_mutex_t | prefetchLock |
| CmiNodeLock | smp_mutex |
| static int | usageChecked = 0 |
| static int | printUsage = 0 |
| static const char * | CLAformatString = "%20s %10s %s\n" |
| static int | CLAlistLen = 0 |
| static int | CLAlistMax = 0 |
| static CLA * | CLAlist = NULL |
| static double | inittime_wallclock |
| static double | lastT = -1.0 |
| double | _cpu_speed_factor |
| static unsigned long long | inittime_wallclock = 0 |
| static unsigned long long | inittime_wallclock = 0 |
| static double | clocktick |
| int | _exitHandlerIdx |
| static CmiHandler | _reduce_destination |
| static void *(*) | _reduce_mergeFn (void *, void **, int) |
| static void(*) | _reduce_pupFn (void *, void *) |
| static void(*) | _reduce_deleteFn (void *) |
| int | _immediateLock = 0 |
| int | _immediateFlag = 0 |
Converse is the lowest level inside the Charm++ hierarchy. It stands on top of the machine layer, and it provides all the common functionality across platforms.
One converse program is running on every processor (or node in the smp version). it manages the message transmission, and the memory allocation. Charm++, which is on top of Converse, uses its functionality for interprocess *communication.
In order to maintain multiple independent objects inside a single user space program, it uses a personalized version of threads, which can be executed, suspended, and migrated across processors.
It provides a scheduler for message delivery: methods can be registered to the scheduler, and then messages allocated through CmiAlloc can be sent to the correspondent method in a remote processor. This is done through the converse header (which has few common fields, but is architecture dependent).
| typedef unsigned long mmulong |
Definition at line 127 of file convcore.c.
| CpvExtern | ( | int | , | |
| _traceCoreOn | ||||
| ) |
| void CcdModuleInit | ( | char ** | ) |
| void CmiMemoryInit | ( | char ** | ) |
Definition at line 328 of file memory.c.
References CmiOutOfMemoryInit(), and meta_init().
Referenced by ConverseCommonInit().
| void CldModuleInit | ( | char ** | ) |
Definition at line 239 of file cldb.bluegene.c.
References CldBalanceHandler(), CldHandler(), CldModuleGeneralInit(), and CmiRegisterHandler().
Referenced by ConverseCommonInit().
| void CmiInitCPUAffinity | ( | char ** | ) |
Definition at line 386 of file cpuaffinity.c.
References add_exclude(), CmiAbort(), CmiAlloc(), CmiGetArgFlagDesc(), CmiGetArgIntDesc(), CmiMyPe(), CmiMyRank(), CmiNodeAllBarrier(), CmiPrintf(), CmiRegisterHandler(), CmiSyncSendAndFree(), CmmNew(), cpuAffinityHandler(), cpuAffinityHandlerIdx, cpuAffinityRecvHandler(), cpuAffinityRecvHandlerIdx, excludecore, excludecount, getXT3NodeID(), hostTable, num_cores(), rankmsg, set_myaffinitity(), and skt_my_ip().
Referenced by ConverseCommonInit().
| CpvDeclare | ( | mmulong | , | |
| MemoryUsage | ||||
| ) |
| CpvDeclare | ( | mmulong | , | |
| HiWaterMark | ||||
| ) |
| CpvDeclare | ( | mmulong | , | |
| ReportedHiWaterMark | ||||
| ) |
| CpvDeclare | ( | int | , | |
| AllocCount | ||||
| ) |
| CpvDeclare | ( | int | , | |
| BlocksAllocated | ||||
| ) |
| CpvDeclare | ( | int | , | |
| expIOFlushFlag | ||||
| ) |
| CpvDeclare | ( | char * | , | |
| explicitIOBuffer | ||||
| ) |
| CpvDeclare | ( | int | , | |
| expIOBufferSize | ||||
| ) |
| void* CmiGetNonLocalNodeQ | ( | ) |
Referenced by CommunicationServer(), CsdNextMessage(), and KillOnAllSigs().
| CpvDeclare | ( | void * | , | |
| CsdSchedQueue | ||||
| ) |
| CpvDeclare | ( | void * | , | |
| CsdPrefetchQueue | ||||
| ) |
| CsvDeclare | ( | void * | , | |
| CsdNodeQueue | ||||
| ) |
Referenced by KillOnAllSigs().
| CsvDeclare | ( | CmiNodeLock | , | |
| CsdNodeQueueLock | ||||
| ) |
| CpvDeclare | ( | int | , | |
| CsdStopFlag | ||||
| ) |
| CpvDeclare | ( | int | , | |
| CsdLocalCounter | ||||
| ) |
| void* CMI_VMI_CmiAlloc | ( | int | size | ) |
| void CMI_VMI_CmiFree | ( | void * | ptr | ) |
| void* elan_CmiAlloc | ( | int | size | ) |
Definition at line 1406 of file machine.c.
References enableBufferPooling, localSmallBufferQueue, malloc_nomigrate(), PCQueueEmpty(), PCQueuePop(), size, and SMALL_MESSAGE_SIZE.
Referenced by CmiAlloc().
| void* infi_CmiAlloc | ( | int | size | ) |
Definition at line 2353 of file machine-ibverbs.c.
References CmiMemLock(), CmiMemUnlock(), getInfiCmiChunk(), getInfiCmiChunkThread(), and size.
Referenced by CmiAlloc().
| void infi_CmiFree | ( | void * | ptr | ) |
Definition at line 2488 of file machine-ibverbs.c.
References CmiMemLock(), CmiMemUnlock(), CmiMyRank(), infiCmiChunkPool::count, free(), infi_CmiFreeDirect(), infiCmiChunkPools, PCQueueEmpty(), PCQueueLength(), PCQueuePop(), queuePool, size, infiCmiChunkPool::startBuf, TESTfrees, and TESTneighbor.
Referenced by CmiFree().
| CpvDeclare | ( | void * | , | |
| CkGridObject | ||||
| ) |
| CpvDeclare | ( | void * | , | |
| CsdGridQueue | ||||
| ) |
| static void CmiAddCLA | ( | const char * | arg, | |
| const char * | param, | |||
| const char * | desc | |||
| ) | [static] |
Definition at line 213 of file convcore.c.
References CLA::arg, CLAformatString, CLAlist, CLAlistLen, CLAlistMax, CmiMyPe(), CmiPrintf(), CLA::desc, CLA::param, printUsage, realloc(), and usageChecked.
Referenced by CmiGetArgDoubleDesc(), CmiGetArgFlagDesc(), CmiGetArgIntDesc(), and CmiGetArgStringDesc().
| static void CmiPrintCLAs | ( | void | ) | [static] |
Definition at line 236 of file convcore.c.
References c, CLAformatString, CLAlist, CLAlistLen, CmiMyPe(), and CmiPrintf().
Referenced by CmiArgInit().
| void CmiArgInit | ( | char ** | argv | ) |
Determines if command-line usage information should be printed-- that is, if a "-?", "-h", or "--help" flag is present.
Must be called after printf is setup.
Definition at line 252 of file convcore.c.
References CLAlist, CLAlistLen, CLAlistMax, CmiMyPe(), CmiPrintCLAs(), free(), printUsage, and usageChecked.
Referenced by ConverseCommonInit().
| int CmiArgGivingUsage | ( | void | ) |
Definition at line 274 of file convcore.c.
References CmiMyPe(), and printUsage.
Referenced by CmiArgGroup(), and status().
| void CmiArgGroup | ( | const char * | parentName, | |
| const char * | groupName | |||
| ) |
Definition at line 279 of file convcore.c.
References CmiArgGivingUsage(), and CmiPrintf().
Referenced by _initCharm(), _loadbalancerInit(), bgMain(), meta_init(), POSEreadCmdLine(), and traceCommonInit().
| int CmiGetArgc | ( | char ** | argv | ) |
Definition at line 287 of file convcore.c.
Referenced by _initCharm(), AMPI_Init(), bgMain(), CkGetArgc(), CmiCallMain(), CmiCopyArgs(), CommunicationServer(), ConverseInit(), ConverseRunPE(), KillOnAllSigs(), and threadInit().
| char** CmiCopyArgs | ( | char ** | argv | ) |
Definition at line 296 of file convcore.c.
References CmiGetArgc(), and malloc().
Referenced by CmiInitPE(), CommunicationServer(), ConverseInit(), KillOnAllSigs(), workThreadInfo::run(), MPI_threadstart_t::start(), and threadInit().
| void CmiDeleteArgs | ( | char ** | argv, | |
| int | k | |||
| ) |
Definition at line 311 of file convcore.c.
Referenced by CmiGetArgFlagDesc(), CmiGetArgIntDesc(), and CmiGetArgStringDesc().
| int CmiGetArgStringDesc | ( | char ** | argv, | |
| const char * | arg, | |||
| char ** | optDest, | |||
| const char * | desc | |||
| ) |
Definition at line 325 of file convcore.c.
References CmiAbort(), CmiAddCLA(), and CmiDeleteArgs().
Referenced by _loadbalancerInit(), _parseCommandLineOpts(), bgMain(), CcsInit(), CldGraphModuleInit(), CmiGetArgDoubleDesc(), CmiGetArgString(), LV3D0_ProcInit(), TCharm::procInit(), traceCommonInit(), and TraceCounter::traceInit().
| int CmiGetArgString | ( | char ** | argv, | |
| const char * | arg, | |||
| char ** | optDest | |||
| ) |
Definition at line 339 of file convcore.c.
References CmiGetArgStringDesc().
Referenced by _parseCommandLineOpts(), ampiProcInit(), ComlibManagerMain::ComlibManagerMain(), TCharm::procInit(), and TraceCounter::traceInit().
| int CmiGetArgDoubleDesc | ( | char ** | argv, | |
| const char * | arg, | |||
| double * | optDest, | |||
| const char * | desc | |||
| ) |
Definition at line 346 of file convcore.c.
References CmiAddCLA(), and CmiGetArgStringDesc().
Referenced by _loadbalancerInit(), bgMain(), CmiGetArgDouble(), and TraceSummary::TraceSummary().
| int CmiGetArgDouble | ( | char ** | argv, | |
| const char * | arg, | |||
| double * | optDest | |||
| ) |
Definition at line 364 of file convcore.c.
Referenced by _loadbalancerInit(), _parseCommandLineOpts(), bgMain(), calculateNodeSizeAndRank(), CcsInit(), CIdleTimeoutInit(), CmiGetArgInt(), CmiInitCPUAffinity(), CmiIOInit(), CmiProcessPriority(), CmiSendMessagePxshm(), CsdInit(), CthBaseInit(), extract_args(), KillOnAllSigs(), meta_init(), POSEreadCmdLine(), TCharm::procInit(), TCHARM_Get_num_chunks(), TraceMemory::TraceMemory(), TraceProjections::TraceProjections(), and TraceSummary::TraceSummary().
Definition at line 399 of file convcore.c.
References CmiGetArgIntDesc().
Referenced by ampiProcInit(), CmiParseArgs(), ComlibManagerMain::ComlibManagerMain(), CommunicationServer(), ConverseInit(), and KillOnAllSigs().
| int CmiGetArgFlagDesc | ( | char ** | argv, | |
| const char * | arg, | |||
| const char * | desc | |||
| ) |
Definition at line 408 of file convcore.c.
References CmiAddCLA(), and CmiDeleteArgs().
Referenced by _loadbalancerInit(), _parseCommandLineOpts(), ampiProcInit()