cputimer: guard cputime variables with CMK_LB_CPUTIMER
authorAbhinav Bhatele <bhatele@jaguarpf-login6.ccs.ornl.gov>
Tue, 22 Feb 2011 00:06:17 +0000 (19:06 -0500)
committerAbhinav Bhatele <bhatele@jaguarpf-login6.ccs.ornl.gov>
Tue, 22 Feb 2011 00:06:17 +0000 (19:06 -0500)
src/ck-ldb/BaseLB.C
src/ck-ldb/BaseLB.h
src/ck-ldb/CentralLB.C
src/ck-ldb/CentralLB.h
src/ck-ldb/CentralPredictor.C
src/ck-ldb/HybridBaseLB.C
src/ck-ldb/LBMachineUtil.C
src/ck-ldb/LBMachineUtil.h
src/ck-ldb/LBObj.C
src/ck-ldb/LBObj.h
src/ck-ldb/lbdb.h

index b9dead0ada13265a2e001f586079c28b6e06fed3..6c1f8aecdc83bdb28325ffa136a1ff44e6122708 100644 (file)
@@ -303,10 +303,13 @@ void BaseLB::LDStats::print()
   for(int pe=0; pe < nprocs(); pe++) {
     struct ProcStats &proc = procs[pe];
 
-    CkPrintf(
-      "Proc %d(%d) Sp %d Total(wall,cpu) = (%f %f) Idle = %f Bg = (%f %f) nObjs = %d\n",
-      pe,proc.pe,proc.pe_speed,proc.total_walltime,proc.total_cputime,
-      proc.idletime,proc.bg_walltime,proc.bg_cputime,proc.n_objs);
+    CkPrintf("Proc %d (%d) Speed %d Total = %f Idle = %f Bg = %f nObjs = %d",
+      pe, proc.pe, proc.pe_speed, proc.total_walltime, proc.idletime,
+      proc.bg_walltime, proc.n_objs);
+#if CMK_LB_CPUTIMER
+    CkPrintf(" CPU Total %f Bg %f", proc.total_cputime, proc.bg_cputime);
+#endif
+    CkPrintf("\n");
   }
 
   CkPrintf("------------- Object Data: %d objects -------------\n", n_objs);
@@ -317,7 +320,9 @@ void BaseLB::LDStats::print()
 ], odata.objID().id[2], odata.objID().id[3]);
       CkPrintf("  OM id = %d\t",odata.omID().id);
       CkPrintf("   Mig. = %d\n",odata.migratable);
+#if CMK_LB_CPUTIMER
       CkPrintf("    CPU = %f\t",odata.cpuTime);
+#endif
       CkPrintf("   Wall = %f\n",odata.wallTime);
   }
 
index 67b61b6fd197d2fc5273e9c83dd52dbee9a9ad21..0ddcce18a57f4541f5337d08ddde9e9b52e67f49 100644 (file)
@@ -39,26 +39,39 @@ public:
     /// walltime and cputime may be different on shared compute nodes
     /// it is advisable to use walltime in most cases
     double total_walltime;
-    double total_cputime;
     /// time for which the processor is sitting idle
     double idletime;
     /// bg_walltime called background load (overhead in ckgraph.h) is a
     /// derived quantity: total_walltime - idletime - object load (obj_walltime)
     double bg_walltime;
+#if CMK_LB_CPUTIMER
+    double total_cputime;
     double bg_cputime;
+#endif
     // double utilization;
     int pe;                    // processor id
     CmiBool available;
-    ProcStats(): n_objs(0), pe_speed(1), 
-                 total_walltime(0.0), total_cputime(0.0), idletime(0.0),
-                bg_walltime(0.0), bg_cputime(0.0), 
-                 pe(-1), available(CmiTrue)  {}
+    ProcStats(): n_objs(0), pe_speed(1), total_walltime(0.0), idletime(0.0),
+#if CMK_LB_CPUTIMER
+                total_cputime(0.0), bg_cputime(0.0),
+#endif
+                bg_walltime(0.0), pe(-1), available(CmiTrue) {}
     inline void clearBgLoad() {
-       idletime = bg_walltime = bg_cputime = 0.0;
+      idletime = bg_walltime = 
+#if CMK_LB_CPUTIMER
+      bg_cputime = 
+#endif
+      0.0;
     }
     inline void pup(PUP::er &p) {
-      p|total_walltime;  p|total_cputime; p|idletime;
-      p|bg_walltime; p|bg_cputime; p|pe_speed;
+      p|total_walltime;
+      p|idletime;
+      p|bg_walltime;
+#if CMK_LB_CPUTIMER
+      p|total_cputime;
+      p|bg_cputime;
+#endif
+      p|pe_speed;
       if (_lb_args.lbversion() < 1 && p.isUnpacking()) {
          double dummy;  p|dummy;    // for old format with utilization
       }
index ba02c122dbd0486f766fa13e661a2adf34566b9e..5b55f866b748216e90f33af36936c444ae4c4142 100644 (file)
@@ -259,8 +259,14 @@ void CentralLB::BuildStatsMsg()
   theLbdb->IdleTime(&msg->idletime);
   theLbdb->BackgroundLoad(&msg->bg_walltime,&msg->bg_cputime);
 */
+#if CMK_LB_CPUTIMER
   theLbdb->GetTime(&msg->total_walltime,&msg->total_cputime,
                   &msg->idletime, &msg->bg_walltime,&msg->bg_cputime);
+#else
+  theLbdb->GetTime(&msg->total_walltime,&msg->total_walltime,
+                  &msg->idletime, &msg->bg_walltime,&msg->bg_walltime);
+#endif
+
   msg->pe_speed = myspeed;
   DEBUGF(("Processor %d Total time (wall,cpu) = %f %f Idle = %f Bg = %f %f\n", CkMyPe(),msg->total_walltime,msg->total_cputime,msg->idletime,msg->bg_walltime,msg->bg_cputime));
 
@@ -403,10 +409,12 @@ void CentralLB::depositData(CLBStatsMsg *m)
   struct ProcStats &procStat = statsData->procs[pe];
   procStat.pe = pe;
   procStat.total_walltime = m->total_walltime;
-  procStat.total_cputime = m->total_cputime;
   procStat.idletime = m->idletime;
   procStat.bg_walltime = m->bg_walltime;
+#if CMK_LB_CPUTIMER
+  procStat.total_cputime = m->total_cputime;
   procStat.bg_cputime = m->bg_cputime;
+#endif
   procStat.pe_speed = m->pe_speed;
   //procStat.utilization = 1.0;
   procStat.available = CmiTrue;
@@ -701,7 +709,9 @@ void CentralLB::removeNonMigratable(LDStats* stats, int count)
     }
     else {
       stats->procs[stats->from_proc[i]].bg_walltime += odata.wallTime;
+#if CMK_LB_CPUTIMER
       stats->procs[stats->from_proc[i]].bg_cputime += odata.cpuTime;
+#endif
     }
   }
   CmiAssert(stats->n_migrateobjs == n_objs);
@@ -1376,9 +1386,13 @@ void CLBStatsMsg::pup(PUP::er &p) {
   int i;
   p|from_pe;
   p|pe_speed;
-  p|total_walltime; p|total_cputime;
+  p|total_walltime;
   p|idletime;
-  p|bg_walltime;   p|bg_cputime;
+  p|bg_walltime;
+#if CMK_LB_CPUTIMER
+  p|total_cputime;
+  p|bg_cputime;
+#endif
 #if (defined(_FAULT_MLOG_) || defined(_FAULT_CAUSAL_))
   p | step;
 #endif
index 2a6b835444ca0473031944afc0e8215bf75f2312..78b9161343badd5cae004660621e390897d2bf99 100644 (file)
@@ -274,10 +274,12 @@ public:
   int from_pe;
   int pe_speed;
   double total_walltime;
-  double total_cputime;
   double idletime;
   double bg_walltime;
+#if CMK_LB_CPUTIMER
+  double total_cputime;
   double bg_cputime;
+#endif
   int n_objs;
   LDObjData *objData;
   int n_comm;
@@ -291,11 +293,12 @@ public:
 
 public:
   CLBStatsMsg(int osz, int csz);
-  CLBStatsMsg(): from_pe(0), pe_speed(0), 
-                 total_walltime(0.0), total_cputime(0.0),
-                 idletime(0.0), bg_walltime(0.0), bg_cputime(0.0),
-                 n_objs(0), objData(NULL), n_comm(0), commData(NULL), 
-                 avail_vector(NULL), next_lb(0)  {}
+  CLBStatsMsg(): from_pe(0), pe_speed(0), total_walltime(0.0), idletime(0.0),
+                bg_walltime(0.0), n_objs(0), objData(NULL), n_comm(0),
+#if CMK_LB_CPUTIMER
+                total_cputime(0.0), bg_cputime(0.0),
+#endif
+                commData(NULL), avail_vector(NULL), next_lb(0) {}
   ~CLBStatsMsg();
   void pup(PUP::er &p);
 }; 
index ebe4f2dd1f00b7cfa069cb86ff2e76f2b36b392d..35d907afaa518a2c63280e0a461a39fc2e6a6aed 100644 (file)
@@ -325,8 +325,10 @@ void CentralLB::FuturePredictor(BaseLB::LDStats* stats) {
     for (int i=0; i<stats->n_objs; ++i) {
       if (predicted_model->model_valid[i]) {
        param = predicted_model->parameters[i];
-       stats->objData[i].cpuTime = predicted_model->predictor->predict(stats->objData[i].cpuTime, param);
        stats->objData[i].wallTime = predicted_model->predictor->predict(stats->objData[i].wallTime, param);
+#if CMK_LB_CPUTIMER
+       stats->objData[i].cpuTime = predicted_model->predictor->predict(stats->objData[i].cpuTime, param);
+#endif
       }
     }
 
index 912f7401d2f2185c2164f43236945b35a6d44463..bbabe32d6f834cdea7fbb96ef0640d12145f23e4 100644 (file)
@@ -194,8 +194,13 @@ CLBStatsMsg* HybridBaseLB::AssembleStats()
   msg->from_pe = CkMyPe();
 
   // Get stats
+#if CMK_LB_CPUTIMER
   theLbdb->GetTime(&msg->total_walltime,&msg->total_cputime,
                    &msg->idletime, &msg->bg_walltime,&msg->bg_cputime);
+#else
+  theLbdb->GetTime(&msg->total_walltime,&msg->total_walltime,
+                   &msg->idletime, &msg->bg_walltime,&msg->bg_walltime);
+#endif
 //  msg->pe_speed = myspeed;
   // number of pes
   msg->pe_speed = 1;
@@ -279,10 +284,12 @@ void HybridBaseLB::depositLBStatsMessage(CLBStatsMsg *m, int atlevel)
   struct ProcStats &procStat = statsData->procs[neighborIdx];
   procStat.pe = pe;    // real PE
   procStat.total_walltime = m->total_walltime;
-  procStat.total_cputime = m->total_cputime;
   procStat.idletime = m->idletime;
   procStat.bg_walltime = m->bg_walltime;
+#if CMK_LB_CPUTIMER
+  procStat.total_cputime = m->total_cputime;
   procStat.bg_cputime = m->bg_cputime;
+#endif
   procStat.pe_speed = m->pe_speed;             // important
   procStat.available = CmiTrue;
   procStat.n_objs = m->n_objs;
@@ -345,8 +352,10 @@ CLBStatsMsg * HybridBaseLB::buildCombinedLBStatsMessage(int atlevel)
 {
 #if CMK_LBDB_ON
   int i;
-  double obj_walltime, obj_cputime;
-  double obj_nmwalltime, obj_nmcputime;
+  double obj_walltime, obj_nmwalltime;
+#if CMK_LB_CPUTIMER 
+  double obj_cputime, obj_nmcputime;
+#endif
 
   LDStats *statsData = levelData[atlevel]->statsData;
   CmiAssert(statsData);
@@ -360,16 +369,22 @@ CLBStatsMsg * HybridBaseLB::buildCombinedLBStatsMessage(int atlevel)
   if ((statsStrategy == SHRINK || statsStrategy == SHRINK_NULL) && atlevel == tree->numLevels()-2) 
   {
     shrink = 1;
-    obj_walltime = obj_cputime = 0.0;
-    obj_nmwalltime = obj_nmcputime = 0.0;
+    obj_walltime = obj_nmwalltime = 0.0;
+#if CMK_LB_CPUTIMER
+    obj_cputime = obj_nmcputime = 0.0;
+#endif
     for (i=0; i<osz; i++)  {
       if (statsData->objData[i].migratable) {
         obj_walltime += statsData->objData[i].wallTime;
+#if CMK_LB_CPUTIMER
         obj_cputime += statsData->objData[i].cpuTime;
+#endif
       }
       else {
         obj_nmwalltime += statsData->objData[i].wallTime;
+#if CMK_LB_CPUTIMER
         obj_nmcputime += statsData->objData[i].cpuTime;
+#endif
       }
     }
       // skip obj and comm data
@@ -383,19 +398,23 @@ CLBStatsMsg * HybridBaseLB::buildCombinedLBStatsMessage(int atlevel)
   // Get stats
   cmsg->pe_speed = 0;
   cmsg->total_walltime = 0.0;
-  cmsg->total_cputime = 0.0;
   cmsg->idletime = 0.0;
   cmsg->bg_walltime = 0.0;
+#if CMK_LB_CPUTIMER
+  cmsg->total_cputime = 0.0;
   cmsg->bg_cputime = 0.0;
+#endif
 
   for (int pe=0; pe<statsData->nprocs(); pe++) {
         struct ProcStats &procStat = statsData->procs[pe];
         cmsg->pe_speed += procStat.pe_speed;           // important
         cmsg->total_walltime += procStat.total_walltime;
-        cmsg->total_cputime += procStat.total_cputime;
         cmsg->idletime += procStat.idletime;
         cmsg->bg_walltime += procStat.bg_walltime;
+#if CMK_LB_CPUTIMER
+        cmsg->total_cputime += procStat.total_cputime;
         cmsg->bg_cputime += procStat.bg_cputime;
+#endif
   }
 /*
   cmsg->idletime = 0.0;
@@ -420,9 +439,11 @@ CLBStatsMsg * HybridBaseLB::buildCombinedLBStatsMessage(int atlevel)
 
   if (shrink) {
     cmsg->total_walltime = obj_walltime;
-    cmsg->total_cputime = obj_cputime;
     cmsg->bg_walltime += obj_nmwalltime;
+#if CMK_LB_CPUTIMER
+    cmsg->total_cputime = obj_cputime;
     cmsg->bg_cputime += obj_nmcputime;
+#endif
   }
 
   return cmsg;
index 68b9b35b240afad8846e2855b117dc17c7bb84ef..bcb7c89b79caf73f4f4c07fc3eea2878272d9b40 100644 (file)
@@ -40,19 +40,21 @@ void LBMachineUtil::staticIdleEnd(LBMachineUtil* obj,double curWallTime)
 LBMachineUtil::LBMachineUtil()
 {
   state = off;
-  total_walltime = total_cputime = 0.0;
-  total_idletime = 0;
-  start_totalwall = start_totalcpu = -1.;
-  total_idletime = 0;
+  total_walltime = 0.0;
+  total_idletime = 0.0;
+  start_totalwall = -1.;
+  start_idle = -1.;
+#if CMK_LB_CPUTIMER
+  total_cputime = 0.0;
+  start_totalcpu = -1.;
+#endif
 }
 
 void LBMachineUtil::StatsOn()
 {
   const double cur_wall = CkWallTimer();
-#if CMK_LBDB_CPUTIMER
+#if CMK_LB_CPUTIMER
   const double cur_cpu = CkCpuTimer();
-#else
-  const double cur_cpu = cur_wall;
 #endif
 
   if (state == off) {
@@ -67,10 +69,14 @@ void LBMachineUtil::StatsOn()
 
   if (start_totalwall != -1.) {
     total_walltime += (cur_wall - start_totalwall);
+#if CMK_LB_CPUTIMER
     total_cputime += (cur_cpu - start_totalcpu);
+#endif
   }
   start_totalwall = cur_wall;
+#if CMK_LB_CPUTIMER
   start_totalcpu = cur_cpu;
+#endif
 }
 
 void LBMachineUtil::StatsOff()
@@ -85,53 +91,65 @@ void LBMachineUtil::StatsOff()
 
   if (start_totalwall != -1.) {
     const double cur_wall = CkWallTimer();
-#if CMK_LBDB_CPUTIMER
-    const double cur_cpu = CkCpuTimer();
-#else
-    const double cur_cpu = cur_wall;
-#endif
     total_walltime += (cur_wall - start_totalwall);
+#if CMK_LB_CPUTIMER
+    const double cur_cpu = CkCpuTimer();
     total_cputime += (cur_cpu - start_totalcpu);
+#endif
   }
-  start_totalwall = start_totalcpu = -1.;
+  start_totalwall = -1.;
+#if CMK_LB_CPUTIMER
+  start_totalcpu = -1.;
+#endif
 }
 
 void LBMachineUtil::Clear()
 {
-  total_walltime = total_cputime = 0;
+  total_walltime = 0.0;
+#if CMK_LB_CPUTIMER
+  total_cputime = 0.0;
+#endif
 
   if (state == off) {
-    start_totalwall = start_totalcpu = -1.;
+    start_totalwall = -1.;
+#if CMK_LB_CPUTIMER
+    start_totalcpu = -1.;
+#endif
   } else {
     const double cur_wall = CkWallTimer();
-#if CMK_LBDB_CPUTIMER
+#if CMK_LB_CPUTIMER
     const double cur_cpu = CkCpuTimer();
-#else
-    const double cur_cpu = cur_wall;
 #endif
 
     start_totalwall = cur_wall;
+#if CMK_LB_CPUTIMER
     start_totalcpu = cur_cpu;
+#endif
   }
-  total_idletime = 0;
+  total_idletime = 0.0;
+  start_idle = -1.;
 }
 
 void LBMachineUtil::TotalTime(double* walltime, double* cputime)
 {
   if (state == on) {
     const double cur_wall = CkWallTimer();
-#if CMK_LBDB_CPUTIMER
+#if CMK_LB_CPUTIMER
     const double cur_cpu = CkCpuTimer();
-#else
-    const double cur_cpu = cur_wall;
 #endif
     total_walltime += (cur_wall - start_totalwall);
-    total_cputime += (cur_cpu - start_totalcpu);
     start_totalwall = cur_wall;
+#if CMK_LB_CPUTIMER
+    total_cputime += (cur_cpu - start_totalcpu);
     start_totalcpu = cur_cpu;
+#endif
   }
   *walltime = total_walltime;
+#if CMK_LB_CPUTIMER
   *cputime = total_cputime;
+#else
+  *cputime = *walltime;
+#endif
 }
 
 /*@}*/
index 44d8a10a5dc95dd6eee0ca14188bf740a77f3d53..d2bad7e1f384d7d06ede6c5825ef81aa13b5f1c8 100644 (file)
@@ -25,11 +25,13 @@ public:
 private:
   enum { off, on } state;
   double total_walltime;
-  double total_cputime;
   double total_idletime;
   double start_totalwall;
-  double start_totalcpu;
   double start_idle;
+#if CMK_LB_CPUTIMER
+  double total_cputime;
+  double start_totalcpu;
+#endif
 
   int cancel_idleStart, cancel_idleEnd;
 
index b5159efd267ab1bbfc0f40dbb60cfb8ae51d44d6..f671a37969d283dcee26b16dc9a5f315d9532058 100644 (file)
@@ -28,8 +28,10 @@ void LBObj::Clear(void)
 //  data.id = myid;
 //  data.omHandle = parentOM;
 //  data.omID = parentDB->LbOM(parentOM)->id();
-  data.cpuTime = 0.;
   data.wallTime = 0.;
+#if CMK_LB_CPUTIMER
+  data.cpuTime = 0.;
+#endif
 #if ! COMPRESS_LDB
   data.minWall = 1e6;
   data.maxWall = 0.;
@@ -40,7 +42,9 @@ void LBObj::IncrementTime(double walltime, double cputime)
 {
   parentDB->MeasuredObjTime(walltime,cputime);
   data.wallTime += walltime;
+#if CMK_LB_CPUTIMER
   data.cpuTime += cputime;
+#endif
 #if ! COMPRESS_LDB
   if (walltime < data.minWall) data.minWall = walltime;
   if (walltime > data.maxWall) data.maxWall = walltime;
index 0ceace684c67e810d918c347308b7d0fdb87d400..739c0d617fb7ba25aa81e18e28e720988b0051ce 100644 (file)
@@ -35,8 +35,12 @@ public:
     parentDB = _parentDB;
 //    migratable = _migratable;
 //    registered = CmiTrue;
-    startWTime = startCTime = -1.0;
-    lastCpuTime = lastWallTime = .0;
+    startWTime = -1.0;
+    lastWallTime = .0;
+#if CMK_LB_CPUTIMER
+    startCTime = -1.0;
+    lastCpuTime = .0;
+#endif
   }
 
   ~LBObj() { };
@@ -69,22 +73,20 @@ public:
   void IncrementTime(double walltime, double cputime);
   inline void StartTimer(void) {
        startWTime = CkWallTimer();
-#if CMK_LBDB_CPUTIMER
+#if CMK_LB_CPUTIMER
        startCTime = CkCpuTimer();
-#else
-       startCTime = startWTime;
 #endif
   }
   inline void StopTimer(double* walltime, double* cputime) {
        if (startWTime >= 0.0) {        // in case startOn in middle of entry
           const double endWTime = CkWallTimer();
          *walltime = endWTime - startWTime;
-#if CMK_LBDB_CPUTIMER
+#if CMK_LB_CPUTIMER
           const double endCTime = CkCpuTimer();
+         *cputime = endCTime - startCTime;
 #else
-          const double endCTime = endWTime;
+         *cputime = *walltime;
 #endif
-         *cputime = endCTime - startCTime;
        }
         else {
           *walltime = *cputime = 0.0;
@@ -92,14 +94,20 @@ public:
   }
 
   inline void getTime(double *w, double *c) {
-    *w=data.wallTime; 
-    *c=data.cpuTime;
+    *w = data.wallTime;
+#if CMK_LB_CPUTIMER
+    *c = data.cpuTime;
+#else
+    *c = *w;
+#endif
   }
 
   inline void setTiming(double cputime)
   {
     data.wallTime = cputime;
+#if CMK_LB_CPUTIMER
     data.cpuTime = cputime;
+#endif
   }
 
   inline LDOMHandle &parentOM() { return data.handle.omhandle; }
@@ -107,7 +115,14 @@ public:
   inline void SetMigratable(CmiBool mig) { data.migratable = mig; }
   inline void UseAsyncMigrate(CmiBool async) { data.asyncArrival = async; }
   inline LDObjData &ObjData() { return data; };
-  inline void lastKnownLoad(double *w, double *c) {*c=lastCpuTime; *w=lastWallTime; }
+  inline void lastKnownLoad(double *w, double *c) {
+    *w = lastWallTime;
+#if CMK_LB_CPUTIMER
+    *c = lastCpuTime;
+#else
+    *c = *w;
+#endif
+  }
   inline void *getUserData() { return  userData; }
 private:
 
@@ -118,9 +133,11 @@ private:
   LDObjData data;
 //  CmiBool registered;
   double startWTime;
+  double lastWallTime;
+#if CMK_LB_CPUTIMER
   double startCTime;
   double lastCpuTime;
-  double lastWallTime;
+#endif
 //  CmiBool migratable;   // temp
 };
 
index 8dc20ba6081eede2903ad10d522620a68a0d2165..4ee9c56690102eefa0816236bac2495dcdc31925 100644 (file)
@@ -116,8 +116,10 @@ typedef struct {
 
 typedef struct {
   LDObjHandle handle;
-  floatType cpuTime;
   floatType wallTime;
+#if CMK_LB_CPUTIMER
+  floatType cpuTime;
+#endif
 #if ! COMPRESS_LDB
   floatType minWall, maxWall;
 #endif
@@ -399,8 +401,10 @@ PUPmarshall(LDObjHandle)
 
 inline void LDObjData::pup(PUP::er &p) {
   p|handle;
-  p|cpuTime;
   p|wallTime;
+#if CMK_LB_CPUTIMER
+  p|cpuTime;
+#endif
 #if ! COMPRESS_LDB
   p|minWall;
   p|maxWall;