Converse

Collaboration diagram for Converse:

Converse--a parallel portability layer. More...


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 CLACLAlist = 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

Detailed Description

Converse--a parallel portability layer.

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 Documentation

typedef unsigned long mmulong

Definition at line 127 of file convcore.c.


Function Documentation

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  ) 

Definition at line 4235 of file machine.c.

Referenced by CmiAlloc().

void CMI_VMI_CmiFree ( void *  ptr  ) 

Definition at line 4289 of file machine.c.

Referenced by CmiFree().

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 353 of file convcore.c.

References CmiGetArgDoubleDesc().

int CmiGetArgIntDesc ( char **  argv,
const char *  arg,
int optDest,
const char *  desc 
)

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

int CmiGetArgInt ( char **  argv,
const char *  arg,
int optDest 
)

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