void master_init(int argc, char **argv){ cpuTime_start = CmiCpuTimer(); wallTime_start = CmiWallTimer(); if ( CmiMyPe() ) { all_init(argc, argv); CsdScheduler(-1); ConverseExit(); // should never return } all_init(argc, argv); // Create branch-office chares BOCgroup group; group.workDistrib = CProxy_WorkDistrib::ckNew(); group.proxyMgr = CProxy_ProxyMgr::ckNew(); group.patchMgr = CProxy_PatchMgr::ckNew(); group.computeMgr = CProxy_ComputeMgr::ckNew(); group.reductionMgr = CProxy_ReductionMgr::ckNew(); // group.computePmeMgr set in constructor during startup group.nodePmeMgr = CProxy_NodePmeMgr::ckNew(); #ifdef OPENATOM_VERSION group.computeMoaMgr = CProxy_ComputeMoaMgr::ckNew(); #endif // OPENATOM_VERSION group.computeExtMgr = CProxy_ComputeExtMgr::ckNew(); group.computeGBISserMgr = CProxy_ComputeGBISserMgr::ckNew(); group.computeMsmSerialMgr = CProxy_ComputeMsmSerialMgr::ckNew(); #ifdef CHARM_HAS_MSA group.computeMsmMsaMgr = CProxy_ComputeMsmMsaMgr::ckNew(); #endif group.computeMsmMgr = CProxy_ComputeMsmMgr::ckNew(); // Charm CkMulticast library module group.multicastMgr = CProxy_CkMulticastMgr::ckNew(); #ifdef MEM_OPT_VERSION group.ioMgr=CProxy_ParallelIOMgr::ckNew(); #endif group.sync = CProxy_Sync::ckNew(); #ifdef USE_NODEPATCHMGR group.nodeProxyMgr = CProxy_NodeProxyMgr::ckNew(); #endif #if USE_CKLOOP group.ckLoop = CkLoop_Init(); #endif CkChareID collectionMaster = CProxy_CollectionMaster::ckNew(0); SlaveInitMsg *initmsg7 = new SlaveInitMsg; initmsg7->master = collectionMaster; group.collectionMgr = CProxy_CollectionMgr::ckNew(initmsg7); group.broadcastMgr = CProxy_BroadcastMgr::ckNew(); group.ldbCoordinator = CProxy_LdbCoordinator::ckNew(); GroupInitMsg *msg = new GroupInitMsg; msg->group = group; CProxy_Node::ckNew(msg); }
// called on proc 0 by front end void BackEnd::exit(void) { float cpuTime = CmiCpuTimer() - cpuTime_start; float wallTime = CmiWallTimer() - wallTime_start; CmiPrintf("====================================================\n\n" "WallClock: %f CPUTime: %f Memory: %f MB\n", wallTime, cpuTime, memusage_MB()); int i; for(i=1; i < CmiNumPes(); i++) ExitSchedOn(i); ConverseExit(); }
static void _DELAY_(int microsecs) { double upto = CmiCpuTimer() + 1.e-6 * microsecs; while(upto > CmiCpuTimer()); }