make +LBPrintSummary work again.
authorGengbin Zheng <gzheng@illinois.edu>
Fri, 15 Apr 2011 02:44:53 +0000 (21:44 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Fri, 15 Apr 2011 02:44:53 +0000 (21:44 -0500)
src/ck-ldb/HybridBaseLB.C
src/ck-ldb/HybridBaseLB.h

index c3bb46147e664b18cb975f4a5b4743dfa5915bec..46c812a0701a3e15d25a1b32cf2b0f30a9502dd9 100644 (file)
@@ -1237,26 +1237,7 @@ LBMigrateMsg * HybridBaseLB::createMigrateMsg(LDStats* stats)
     DEBUGF(("[%d] obj (%d %d %d %d) migrate from %d to %d\n", CkMyPe(), item->obj.objID().id[0], item->obj.objID().id[1], item->obj.objID().id[2], item->obj.objID().id[3], item->from_pe, item->to_pe));
   }
 
-  if (_lb_args.printSummary()) {
-    double stime = CkWallTimer();
-#if 0
-    if (currentLevel == 1) {
-      LBInfo info(count);
-      info.getInfo(stats, count, 1);   // no comm cost
-      double mLoad, mCpuLoad, totalLoad;
-      info.getSummary(mLoad, mCpuLoad, totalLoad);
-      int nmsgs, nbytes;
-      stats->computeNonlocalComm(nmsgs, nbytes);
-      //CkPrintf("[%d] Load Summary: max (with comm): %f max (obj only): %f total: %f on %d processors at step %d useMem: %fKB nonlocal: %d %dKB.\n", CkMyPe(), maxLoad, mCpuLoad, totalLoad, count, step(), (1.0*useMem())/1024, nmsgs, nbytes/1024);
-      thisProxy[0].reportLBQulity(mLoad, mCpuLoad, totalLoad, nmsgs, nbytes/1024);
-    }
-#endif
-    if (currentLevel == tree->numLevels()-2) {
-      double mem = (1.0*useMem())/1024;
-      thisProxy[0].reportLBMem(mem);
-    }
-    CkPrintf("[%d] Print Summary takes %f seconds. \n", CkMyPe(), CkWallTimer()-stime);
-  }   // end print summary
+  if (_lb_args.printSummary())  printSummary(stats, stats->nprocs());
 
   // translate relative pe number to its real number
   for(i=0; i < migrate_count; i++) {
@@ -1296,6 +1277,8 @@ LBMigrateMsg * HybridBaseLB::createMigrateMsg(CkVec<MigrateInfo *> &migrateInfo,
     migrateInfo.insertAtEnd(migrateMe);
   }
 
+  if (_lb_args.printSummary())  printSummary(NULL, count);
+
   int migrate_count=migrateInfo.length();
   // ignore avail_vector, etc for now
   //LBMigrateMsg * msg = new(migrate_count,count,count,0) LBMigrateMsg;
@@ -1323,6 +1306,29 @@ int HybridBaseLB::NeighborIndex(int pe, int atlevel)
     return peslot;
 }
 
+void HybridBaseLB::printSummary(LDStats *stats, int count)
+{
+  double stime = CkWallTimer();
+#if 1
+  if (currentLevel == 1 && stats!=NULL) {
+      LBInfo info(count);
+      info.getInfo(stats, count, 1);   // no comm cost
+      double mLoad, mCpuLoad, totalLoad;
+      info.getSummary(mLoad, mCpuLoad, totalLoad);
+      int nmsgs, nbytes;
+      stats->computeNonlocalComm(nmsgs, nbytes);
+      //CkPrintf("[%d] Load Summary: max (with comm): %f max (obj only): %f total: %f on %d processors at step %d useMem: %fKB nonlocal: %d %dKB.\n", CkMyPe(), maxLoad, mCpuLoad, totalLoad, count, step(), (1.0*useMem())/1024, nmsgs, nbytes/1024);
+      thisProxy[0].reportLBQulity(mLoad, mCpuLoad, totalLoad, nmsgs, nbytes/1024);
+  }
+#endif
+
+  if (currentLevel == tree->numLevels()-2) {
+      double mem = (1.0*useMem())/1024;
+      thisProxy[0].reportLBMem(mem);
+  }
+  CkPrintf("[%d] Print Summary takes %f seconds. \n", CkMyPe(), CkWallTimer()-stime);
+}
+
 // only called on PE 0
 void HybridBaseLB::reportLBQulity(double mload, double mCpuLoad, double totalload, int nmsgs, double bytes)
 {
index 881c9730108859fdb578152328acbf42bc1fefa2..41030f25ce5fa5d25701a9ec4669ce585da4b2f9 100644 (file)
@@ -352,6 +352,7 @@ protected:
   // helper function
   LBMigrateMsg * createMigrateMsg(CkVec<MigrateInfo *> &migrateInfo, int count);
   virtual LBVectorMigrateMsg* VectorStrategy(LDStats* stats);
+  void    printSummary(LDStats *stats, int count);
   void    initTree();
 
   // Not to be used -- maintained for legacy applications