CkInit

Controls the Charm++ startup process. More...

Typedefs

typedef void(* CkFtFn )(const char *, CkArgMsg *)
typedef void(* CkExitFn )(void)

Functions

void CkRestartMain (const char *dirname)
 CksvDeclare (UInt, _numInitNodeMsgs)
 CkpvDeclare (void *, _currentChare)
 CkpvDeclare (int, _currentChareType)
 CkpvDeclare (CkGroupID, _currentGroup)
 CkpvDeclare (void *, _currentNodeGroupObj)
 CkpvDeclare (CkGroupID, _currentGroupRednMgr)
 CkpvDeclare (GroupTable *, _groupTable)
 CkpvDeclare (GroupIDTable *, _groupIDTable)
 CkpvDeclare (CmiImmediateLockType, _groupTableImmLock)
 CkpvDeclare (UInt, _numGroups)
 CkpvDeclare (CkCoreState *, _coreState)
 CksvDeclare (UInt, _numNodeGroups)
 CksvDeclare (GroupTable *, _nodeGroupTable)
 CksvDeclare (GroupIDTable, _nodeGroupIDTable)
 CksvDeclare (CmiImmediateLockType, _nodeGroupTableImmLock)
 CksvDeclare (CmiNodeLock, _nodeLock)
 CksvStaticDeclare (PtrVec *, _nodeBocInitVec)
 CkpvDeclare (int, _charmEpoch)
 CkpvDeclare (Stats *, _myStats)
 CkpvDeclare (MsgPool *, _msgPool)
 CkpvDeclare (_CkOutStream *, _ckout)
 CkpvDeclare (_CkErrStream *, _ckerr)
 CkpvStaticDeclare (int, _numInitsRecd)
 CkpvStaticDeclare (PtrQ *, _buffQ)
 CkpvStaticDeclare (PtrVec *, _bocInitVec)
 CpvExtern (CkVec< void * >, chare_objs)
 CpvExtern (CkVec< VidBlock * >, vidblocks)
 CpvDeclare (char *, _validProcessors)
 CpvDeclare (char, startedEvac)
void readKillFile ()
void processRaiseEvacFile (char *raiseEvacFile)
static void _parseCommandLineOpts (char **argv)
static void _bufferHandler (void *msg)
static void _discardHandler (envelope *env)
static void _printStats (void)
static void _sendStats (void)
void _messageLoggingExit ()
 Function to wrap up performance information.
static void _exitHandler (envelope *env)
static void _processBufferedBocInits (void)
static void _processBufferedNodeBocInits (void)
static void _processBufferedMsgs (void)
static int _charmLoadEstimator (void)
static void _sendTriggers (void)
void _initDone (void)
static void _triggerHandler (envelope *env)
static void _processROMsgMsg (envelope *env)
static void _processRODataMsg (envelope *env)
static void _roRestartHandler (void *msg)
static void _roHandler (void *msg)
static void _initHandler (void *msg)
void _CkExit (void)
void CkExit (void)
void EmergencyExit (void)
static void _nullFn (void *, void *)
void _registerLBDatabase (void)
void _registerPathHistory (void)
void _registerExternalModules (char **argv)
void _ckModuleInit (void)
void _loadbalancerInit ()
void init_memcheckpt (char **argv)
void initCharmProjections ()
void CmiInitCPUTopology (char **argv)
void CmiInitCPUAffinity (char **argv)
void _registerInitCall (CkInitCallFn fn, int isNodeCall)
 CpvCExtern (int, cmiArgDebugFlag)
void CpdFreeze (void)
void initQd (char **argv)
void _initCharm (int unused_argc, char **argv)
 This is the main charm setup routine.
void fmain_ (int *argc, char _argv[][80], int length[])
void registerExitFn (CkExitFn fn)
 CksvExtern (unsigned int, _numInitNodeMsgs)
 CksvExtern (CmiNodeLock, _nodeLock)
 CksvExtern (GroupTable *, _nodeGroupTable)
 CksvExtern (GroupIDTable, _nodeGroupIDTable)
 CksvExtern (CmiImmediateLockType, _nodeGroupTableImmLock)
 CksvExtern (unsigned int, _numNodeGroups)
 CkpvExtern (int, _charmEpoch)
 CkpvExtern (CkGroupID, _currentGroup)
 CkpvExtern (void *, _currentNodeGroupObj)
 CkpvExtern (CkGroupID, _currentGroupRednMgr)
 CkpvExtern (GroupTable *, _groupTable)
 CkpvExtern (GroupIDTable *, _groupIDTable)
 CkpvExtern (CmiImmediateLockType, _groupTableImmLock)
 CkpvExtern (unsigned int, _numGroups)
 CkpvExtern (char **, Ck_argv)
static IrrGroup_localBranch (CkGroupID gID)
void CkRegisterMainModule (void)
 This routine registers the user's main module.
void InitCallTable::enumerateInitCalls ()

Variables

UChar _defaultQueueing = CK_QUEUEING_FIFO
UInt _printCS = 0
UInt _printSS = 0
UInt _numExpectInitMsgs = 0
UInt _numInitMsgs = 0
int _infoIdx
int _charmHandlerIdx
int _initHandlerIdx
int _roHandlerIdx
int _roRestartHandlerIdx
int _bocHandlerIdx
int _nodeBocHandlerIdx
int _qdHandlerIdx
int _qdCommHandlerIdx
int _triggerHandlerIdx
int _mainDone = 0
static int _triggersSent = 0
CkOutStream ckout
CkErrStream ckerr
CkInStream ckin
int _exitHandlerIdx
static Stats ** _allStats = 0
static int _numStatsRecd = 0
static int _exitStarted = 0
static InitCallTable _initCallTable
static CkFtFn faultFunc = NULL
static char * _restartDir
int chkptPeriod = 1000
bool parallelRestart = false
int BUFFER_TIME
int killFlag
char * killFile
int _defaultObjectQ = 0
int _ringexit = 0
int _ringtoken = 8
static int _raiseEvac = 0
static char * _raiseEvacFile
CkQ< CkExitFn_CkExitFnVec
int _dummy_dq
unsigned int _printCS
unsigned int _printSS
int _infoIdx
int _charmHandlerIdx
int _roHandlerIdx
int _roRestartHandlerIdx
int _initHandlerIdx
int _bocHandlerIdx
int _nodeBocHandlerIdx
int _qdHandlerIdx
unsigned int _numInitMsgs
CkQ< CkExitFn_CkExitFnVec

Detailed Description

Controls the Charm++ startup process.

These are implemented in init.C.

This file runs the entire Charm++ startup process.

The process begins with every processor finishing the Converse startup process and calling _initCharm. This routine runs almost the entire Charm++ setup process. It begins by setting up various Cpvs and subsystems.

The rank 0 processor of each node then does the Charm++ registration, by calling the various _register routines.

Now processor 0:

  1. Creates each mainchare, by allocating the chares and calling their constructors with argc/argv. This typically results in a number of chare/group creations.
  2. Sends off all readonly data to the other processors.
After _initCharm, processor 0 immediately begins work.

The other processors, however, must wait until they recieve the readonly data and all group creations. They do this by setting the _charmHandlerIdx to a special "_bufferHandler" which simply saves all normal messages into a special queue.

As the startup data (readonlies and group creations) streams into _initHandler, it counts messages until it is fully initialized, then calls _initDone to clean out the queues and resume normal operation.

Possible race conditions abound during this process, which is probably overly complex.


Typedef Documentation

typedef void(* CkFtFn)(const char *, CkArgMsg *)

Definition at line 136 of file init.C.

typedef void(* CkExitFn)(void)

Definition at line 167 of file init.h.


Function Documentation

void CkRestartMain ( const char *  dirname  ) 

CksvDeclare ( UInt  ,
_numInitNodeMsgs   
)

CkpvDeclare ( void *  ,
_currentChare   
)

CkpvDeclare ( int  ,
_currentChareType   
)

CkpvDeclare ( CkGroupID  ,
_currentGroup   
)

CkpvDeclare ( void *  ,
_currentNodeGroupObj   
)

CkpvDeclare ( CkGroupID  ,
_currentGroupRednMgr   
)

CkpvDeclare ( GroupTable ,
_groupTable   
)

CkpvDeclare ( GroupIDTable ,
_groupIDTable   
)

CkpvDeclare ( CmiImmediateLockType  ,
_groupTableImmLock   
)

CkpvDeclare ( UInt  ,
_numGroups   
)

CkpvDeclare ( CkCoreState ,
_coreState   
)

CksvDeclare ( UInt  ,
_numNodeGroups   
)

CksvDeclare ( GroupTable ,
_nodeGroupTable   
)

CksvDeclare ( GroupIDTable  ,
_nodeGroupIDTable   
)

CksvDeclare ( CmiImmediateLockType  ,
_nodeGroupTableImmLock   
)

CksvDeclare ( CmiNodeLock  ,
_nodeLock   
)

CksvStaticDeclare ( PtrVec ,
_nodeBocInitVec   
)

CkpvDeclare ( int  ,
_charmEpoch   
)

CkpvDeclare ( Stats ,
_myStats   
)

CkpvDeclare ( MsgPool ,
_msgPool   
)

CkpvDeclare ( _CkOutStream ,
_ckout   
)

CkpvDeclare ( _CkErrStream ,
_ckerr   
)

CkpvStaticDeclare ( int  ,
_numInitsRecd   
)

CkpvStaticDeclare ( PtrQ ,
_buffQ   
)

CkpvStaticDeclare ( PtrVec ,
_bocInitVec   
)

CpvExtern ( CkVec< void * >  ,
chare_objs   
)

CpvExtern ( CkVec< VidBlock * >  ,
vidblocks   
)

CpvDeclare ( char *  ,
_validProcessors   
)

CpvDeclare ( char  ,
startedEvac   
)

void readKillFile (  ) 

void processRaiseEvacFile ( char *  raiseEvacFile  ) 

Definition at line 331 of file ckevacuation.C.

References CcdCallFnAfter(), CkDecideEvacPe(), Converse::CkMyPe(), evacMsg::pe, and printf().

Referenced by _initCharm().

static void _parseCommandLineOpts ( char **  argv  )  [inline, static]

static void _bufferHandler ( void *  msg  )  [static]

Definition at line 261 of file init.C.

References Converse::CkMyPe().

Referenced by _initCharm().

static void _discardHandler ( envelope env  )  [static]

Definition at line 267 of file init.C.

References Converse::CkMyPe(), and CmiFree().

Referenced by _CkExit(), _exitHandler(), and _initDone().

static void _printStats ( void   )  [inline, static]

static void _sendStats ( void   )  [inline, static]

void _messageLoggingExit (  ) 

Function to wrap up performance information.

Definition at line 3365 of file ckmessagelogging.C.

References Converse::CkMyPe(), CmiMyPe(), MLOGFT_totalLogSize, MLOGFT_totalMessages, and printf().

Referenced by _exitHandler().

static void _exitHandler ( envelope env  )  [static]

static void _processBufferedBocInits ( void   )  [inline, static]

static void _processBufferedNodeBocInits ( void   )  [inline, static]

static void _processBufferedMsgs ( void   )  [inline, static]

static int _charmLoadEstimator ( void   )  [static]

Definition at line 474 of file init.C.

Referenced by _initCharm().

static void _sendTriggers ( void   )  [static]

void _initDone ( void   ) 

static void _triggerHandler ( envelope env  )  [static]

Definition at line 517 of file init.C.

References _initDone(), and CmiFree().

Referenced by _initCharm().

static void _processROMsgMsg ( envelope env  )  [inline, static]

Definition at line 527 of file init.C.

References _readonlyMsgs, EnvToUsr(), and envelope::getRoIdx().

Referenced by _initCharm(), and _initHandler().

static void _processRODataMsg ( envelope env  )  [inline, static]

Definition at line 532 of file init.C.

References _readonlyTable, CmiFree(), and EnvToUsr().

Referenced by _initHandler(), and _roRestartHandler().

static void _roRestartHandler ( void *  msg  )  [static]

Definition at line 540 of file init.C.

References _processRODataMsg(), Converse::CkMyPe(), and envelope::getCount().

Referenced by _initCharm(), and _roHandler().

static void _roHandler ( void *  msg  )  [static]

Definition at line 549 of file init.C.

References _roRestartHandler().

Referenced by _initCharm().

static void _initHandler ( void *  msg  )  [static]

void _CkExit ( void   ) 

void CkExit ( void   ) 

void EmergencyExit ( void   ) 

Definition at line 653 of file init.C.

Referenced by CommunicationServer(), and machine_exit().

static void _nullFn ( void *  ,
void *   
) [static]

Definition at line 660 of file init.C.

References CmiAbort().

Referenced by _initCharm().

void _registerLBDatabase ( void   ) 

void _registerPathHistory ( void   ) 

Definition at line 361 of file PathHistory.def.h.

Referenced by _initCharm().

void _registerExternalModules ( char **  argv  ) 

Referenced by _initCharm().

void _ckModuleInit ( void   ) 

Definition at line 1737 of file ck.C.

References _ObjectQHandler(), _skipCldHandler(), and _TokenHandler().

Referenced by _initCharm().

void _loadbalancerInit (  ) 

void init_memcheckpt ( char **  argv  ) 

void initCharmProjections (  ) 

Definition at line 21 of file charmProjections.C.

Referenced by _initCharm().

void CmiInitCPUTopology ( char **  argv  ) 

void CmiInitCPUAffinity ( char **  argv  ) 

void _registerInitCall ( CkInitCallFn  fn,
int  isNodeCall 
)

CpvCExtern ( int  ,
cmiArgDebugFlag   
)

void CpdFreeze ( void   ) 

Definition at line 232 of file debug-conv.c.

void initQd ( char **  argv  ) 

void _initCharm ( int  unused_argc,
char **  argv 
)

This is the main charm setup routine.

It's called on all processors after Converse initialization. This routine gets passed to Converse from "main.C".

The main purpose of this routine is to set up the objects and Ckpv's used during a regular Charm run. See the comment at the top of the file for overall flow.

Definition at line 730 of file init.C.

References CkIndex_Group::__idx, _allocEnv(), _bufferHandler(), _chareTable, _charmLoadEstimator(), _ckAckEvac(), _ckAckEvacIdx, _ckEvacBcast(), _ckEvacBcastIdx, _ckModuleInit(), _entryTable, _exitHandler(), _futuresModuleInit(), _infoFn(), _initDone(), _initHandler(), _loadbalancerInit(), _mainTable, _messageLoggingInit(), _nullFn(), _parseCommandLineOpts(), _processHandler(), _processROMsgMsg(), _raiseEvacFile, _readonlyMsgs, _readonlyTable, _registercharisma(), _registerCkArray(), _registerCkCallback(), _registerCkCheckpoint(), _registerCkFutures(), _registerCkMemCheckpoint(), _registerDone(), _registerExternalModules(), _registerInit(), _registerLBDatabase(), _registerPathHistory(), _registertempo(), _registerwaitqd(), _restartDir, _roHandler(), _roRestartHandler(), _triggerHandler(), CkArgMsg::argc, CkArgMsg::argv, BGConverse::BgNodeRank(), CcdCallOnCondition(), CkAllocMsg(), CkDecideEvacPe(), CkFreeMsg(), CkMessageWatcherInit(), CkMlogRestart(), Converse::CkMyPe(), BGConverse::CkMyRank(), Converse::CkNumPes(), CkPackMessage(), CkRegisterChare(), CkRegisterChareInCharm(), CkRegisterEp(), CkRegisterMainModule(), CkRegisterMsg(), CkUnpackMessage(), CldRegisterEstimator(), CldRegisterInfoFn(), CmiArgGroup(), CmiCreateLock(), CmiGetArgc(), CmiInitCPUAffinity(), CmiInitCPUTopology(), CmiMyPe(), CmiMyRank(), CmiNodeAllBarrier(), Converse::CmiSyncBroadcast(), Converse::CmiSyncBroadcastAndFree(), CmiWallTimer(), CpdFinishInitialization(), CpdFreeze(), InitCallTable::enumerateInitCalls(), EnvToUsr(), evacuate, faultFunc, envelope::getTotalsize(), init_memcheckpt(), initCharmProjections(), initQd(), malloc(), memCriticalEntries, msg, numMemCriticalEntries, processRaiseEvacFile(), readKillFile(), RODataMsg, ROMsgMsg, envelope::setCount(), envelope::setMsgtype(), envelope::setRoIdx(), envelope::setSrcPe(), PUP::sizer::size(), size, traceCharmInit(), TypeChare, TypeGroup, and UsrToEnv().

Referenced by BgEmulatorInit(), BgNodeStart(), fmain_(), main(), and TCHARM_Init().

void fmain_ ( int argc,
char  _argv[][80],
int  length[] 
)

Definition at line 1101 of file init.C.

References _initCharm(), and ConverseInit().

void registerExitFn ( CkExitFn  fn  ) 

CksvExtern ( unsigned  int,
_numInitNodeMsgs   
)

CksvExtern ( CmiNodeLock  ,
_nodeLock   
)

CksvExtern ( GroupTable ,
_nodeGroupTable   
)

CksvExtern ( GroupIDTable  ,
_nodeGroupIDTable   
)

CksvExtern ( CmiImmediateLockType  ,
_nodeGroupTableImmLock   
)

CksvExtern ( unsigned  int,
_numNodeGroups   
)

CkpvExtern ( int  ,
_charmEpoch   
)

CkpvExtern ( CkGroupID  ,
_currentGroup   
)

CkpvExtern ( void *  ,
_currentNodeGroupObj   
)

CkpvExtern ( CkGroupID  ,
_currentGroupRednMgr   
)

CkpvExtern ( GroupTable ,
_groupTable   
)

CkpvExtern ( GroupIDTable ,
_groupIDTable   
)

CkpvExtern ( CmiImmediateLockType  ,
_groupTableImmLock   
)

CkpvExtern ( unsigned  int,
_numGroups   
)

CkpvExtern ( char **  ,
Ck_argv   
)

static IrrGroup* _localBranch ( CkGroupID  gID  )  [inline, static]

void CkRegisterMainModule ( void   ) 

This routine registers the user's main module.

It is normally generated by the translator, but for FEM and AMPI may actually be the "fallback" version in compat_regmm.c.

Definition at line 2 of file compat_regmm.c.

Referenced by _initCharm().

void InitCallTable::enumerateInitCalls (  )  [inherited]


Variable Documentation

UChar _defaultQueueing = CK_QUEUEING_FIFO

Definition at line 53 of file init.C.

Referenced by _parseCommandLineOpts(), and CkAllocMsg().

Definition at line 55 of file init.C.

Definition at line 56 of file init.C.

Definition at line 58 of file init.C.

Definition at line 59 of file init.C.

Referenced by _createGroup(), _createNodeGroup(), and bdcastRO().

Definition at line 63 of file init.C.

Definition at line 64 of file init.C.

Definition at line 65 of file init.C.

Referenced by bdcastRO().

Definition at line 66 of file init.C.

Referenced by _createGroup(), and _createNodeGroup().

Definition at line 67 of file init.C.

Definition at line 68 of file init.C.

Referenced by CkStartQD(), and QdState::propagate().

Definition at line 69 of file init.C.

Definition at line 70 of file init.C.

Definition at line 71 of file init.C.

int _triggersSent = 0 [static]

Definition at line 72 of file init.C.

Definition at line 76 of file init.C.

Definition at line 119 of file init.C.

Stats** _allStats = 0 [static]

Definition at line 121 of file init.C.

int _numStatsRecd = 0 [static]

Definition at line 123 of file init.C.

int _exitStarted = 0 [static]

Definition at line 124 of file init.C.

Definition at line 126 of file init.C.

CkFtFn faultFunc = NULL [static]

Definition at line 137 of file init.C.

Referenced by _initCharm(), and _parseCommandLineOpts().

char* _restartDir [static]

Definition at line 138 of file init.C.

Referenced by _initCharm(), and _parseCommandLineOpts().

int chkptPeriod = 1000

Definition at line 141 of file init.C.

Definition at line 93 of file ckmessagelogging.C.

Definition at line 77 of file ckmemcheckpoint.C.

char* killFile

Todo:
the following declarations should be moved into a separate file for all

Definition at line 75 of file ckmemcheckpoint.C.

Referenced by _parseCommandLineOpts(), CkMemCheckPT::CkMemCheckPT(), and readKillFile().

Definition at line 154 of file init.C.

Definition at line 155 of file init.C.

Definition at line 156 of file init.C.

int _raiseEvac = 0 [static]

Definition at line 164 of file init.C.

char* _raiseEvacFile [static]

Definition at line 165 of file init.C.

Referenced by _initCharm(), and _parseCommandLineOpts().

Definition at line 629 of file init.C.

Definition at line 15 of file qd.C.

unsigned int _printCS

Definition at line 55 of file init.C.

unsigned int _printSS

Definition at line 56 of file init.C.

Definition at line 62 of file init.C.

Definition at line 64 of file init.C.

Definition at line 65 of file init.C.

Referenced by bdcastRO().

Definition at line 63 of file init.C.

Definition at line 66 of file init.C.

Referenced by _createGroup(), and _createNodeGroup().

Definition at line 67 of file init.C.

Definition at line 68 of file init.C.

Referenced by CkStartQD(), and QdState::propagate().

unsigned int _numInitMsgs

Definition at line 59 of file init.C.

Referenced by _createGroup(), _createNodeGroup(), and bdcastRO().

Definition at line 629 of file init.C.


Generated on Mon Nov 23 07:56:04 2009 for Charm++ by  doxygen 1.5.5