void ComputeMgr::updateLocalComputes() { ComputeMap *computeMap = ComputeMap::Object(); CProxy_ProxyMgr pm(CkpvAccess(BOCclass_group).proxyMgr); ProxyMgr *proxyMgr = pm.ckLocalBranch(); LdbCoordinator *ldbCoordinator = LdbCoordinator::Object(); computeFlag.resize(0); const int nc = computeMap->numComputes(); for (int i=0; i<nc; i++) { if ( computeMap->node(i) == CkMyPe() && computeMap->newNumPartitions(i) > 1 ) { Compute *c = computeMap->compute(i); ldbCoordinator->Migrate(c->ldObjHandle,CkMyPe()); delete c; computeMap->registerCompute(i,NULL); if ( computeMap->newNode(i) == CkMyPe() ) computeFlag.add(i); } else if (computeMap->newNode(i) == CkMyPe() && computeMap->node(i) != CkMyPe()) { computeFlag.add(i); for (int n=0; n < computeMap->numPids(i); n++) { proxyMgr->createProxy(computeMap->pid(i,n)); } } else if (computeMap->node(i) == CkMyPe() && (computeMap->newNode(i) != -1 && computeMap->newNode(i) != CkMyPe() )) { // CkPrintf("delete compute %d on pe %d\n",i,CkMyPe()); delete computeMap->compute(i); computeMap->registerCompute(i,NULL); } } if (!CkMyPe()) { CkStartQD(CkIndex_ComputeMgr::updateLocalComputes2((CkQdMsg*)0), &thishandle); } }
void LdbCoordinator::staticMigrateFn(LDObjHandle handle, int dest) { LdbCoordinator *ldbCoordinator = (LdbCoordinator *)LDOMUserData(handle.omhandle); ldbCoordinator->Migrate(handle,dest); }