propagate LBRealType for load balancing timer type
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 1 Mar 2011 04:03:18 +0000 (22:03 -0600)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 1 Mar 2011 04:03:18 +0000 (22:03 -0600)
12 files changed:
src/ck-core/cklocation.C
src/ck-cp/controlPoints.C
src/ck-ldb/CentralLB.C
src/ck-ldb/CentralLB.h
src/ck-ldb/HbmLB.C
src/ck-ldb/LBDatabase.C
src/ck-ldb/LBDatabase.h
src/ck-ldb/LBObj.C
src/ck-ldb/LBObj.h
src/ck-ldb/LBSimulation.C
src/ck-ldb/lbdb.C
src/ck-ldb/lbdb.h

index 5d3aeb1ce1db656e735998dd3c9c114e0ca473e9..859d148b35e7de7787b72f93316f86b49b9e77ba 100644 (file)
@@ -1303,7 +1303,7 @@ void CkLocRec_local::setObjTime(double cputime) {
        the_lbdb->EstObjLoad(ldHandle, cputime);
 }
 double CkLocRec_local::getObjTime() {
-        double walltime, cputime;
+        LBRealType walltime, cputime;
         the_lbdb->GetObjLoad(ldHandle, walltime, cputime);
         return walltime;
 }
index c373469e168e7d2d9be9bb03c13bf56d219f6fc3..d6bdacab5b9bf63873c21a116876297e88f258a8 100644 (file)
@@ -697,13 +697,13 @@ void controlPointManager::setFrameworkAdvancePhase(bool _frameworkShouldAdvanceP
     const int objCount = myLBDB->getObjCount();
     CkPrintf("LBDB info: objCount=%d objs contains %d LBObj* \n", objCount, objs.length());
     
-    floatType maxObjWallTime = -1.0;
+    LBRealType maxObjWallTime = -1.0;
     
     for(int i=0;i<objs.length();i++){
       LBObj* o = objs[i];
       const LDObjData d = o->ObjData();
-      floatType cpuTime = d.cpuTime;
-      floatType wallTime = d.wallTime;
+      LBRealType cpuTime = d.cpuTime;
+      LBRealType wallTime = d.wallTime;
       // can also get object handles from the LDObjData struct
       CkPrintf("[%d] LBDB Object[%d]: cpuTime=%f wallTime=%f\n", CkMyPe(), i, cpuTime, wallTime);
       if(wallTime > maxObjWallTime){
index be48ab1e19b43c1e3cae827ba54776d73173ec2f..4fb0efe56ef91137b5990d98504bbdc3b3ee9a61 100644 (file)
@@ -571,7 +571,7 @@ void CentralLB::LoadBalance()
       LBInfo info(clients);
         // not take comm data
       info.getInfo(statsData, clients, 0);
-      double mLoad, mCpuLoad, totalLoad;
+      LBRealType mLoad, mCpuLoad, totalLoad;
       info.getSummary(mLoad, mCpuLoad, totalLoad);
       int nmsgs, nbytes;
       statsData->computeNonlocalComm(nmsgs, nbytes);
@@ -615,7 +615,7 @@ void CentralLB::LoadBalance()
       LBInfo info(clients);
         // not take comm data
       getPredictedLoadWithMsg(statsData, clients, migrateMsg, info, 0);
-      double mLoad, mCpuLoad, totalLoad;
+      LBRealType mLoad, mCpuLoad, totalLoad;
       info.getSummary(mLoad, mCpuLoad, totalLoad);
       int nmsgs, nbytes;
       statsData->computeNonlocalComm(nmsgs, nbytes);
index 78b9161343badd5cae004660621e390897d2bf99..5cbd7041dfccada73f770113aee8506f69385097 100644 (file)
@@ -22,18 +22,18 @@ typedef LBMigrateMsg  CLBMigrateMsg;
 class LBInfo
 {
 public:
-  double *peLoads;     // total load: object + background
-  double *objLoads;    // total obj load
-  double *comLoads;    // total comm load
-  double *bgLoads;     // background load
+  LBRealType *peLoads;         // total load: object + background
+  LBRealType *objLoads;        // total obj load
+  LBRealType *comLoads;        // total comm load
+  LBRealType *bgLoads;         // background load
   int    numPes;
   int    msgCount;     // total non-local communication
   CmiUInt8  msgBytes;  // total non-local communication
-  double minObjLoad, maxObjLoad;
+  LBRealType minObjLoad, maxObjLoad;
   LBInfo(): peLoads(NULL), objLoads(NULL), comLoads(NULL), 
             bgLoads(NULL), numPes(0), msgCount(0),
             msgBytes(0), minObjLoad(0.0), maxObjLoad(0.0) {}
-  LBInfo(double *pl, int count): peLoads(pl), objLoads(NULL), 
+  LBInfo(LBRealType *pl, int count): peLoads(pl), objLoads(NULL), 
             comLoads(NULL), bgLoads(NULL), numPes(count), msgCount(0),
             msgBytes(0), minObjLoad(0.0), maxObjLoad(0.0) {}
   LBInfo(int count);
@@ -41,7 +41,7 @@ public:
   void getInfo(BaseLB::LDStats* stats, int count, int considerComm);
   void clear();
   void print();
-  void getSummary(double &maxLoad, double &maxCpuLoad, double &totalLoad);
+  void getSummary(LBRealType &maxLoad, LBRealType &maxCpuLoad, LBRealType &totalLoad);
 };
 
 /** added by Abhinav
index 9ca9e71ea65db9ce820a305578bb66b8a39deed1..6baa3b5da3a58b7a7fa1e8cca7d2c94de7c3845b 100644 (file)
@@ -517,7 +517,7 @@ void HbmLB::ResumeClients(int balancing)
       LBInfo info(count);
       LDStats *stats = &myStats;
       info.getInfo(stats, count, 0);   // no comm cost
-      double mLoad, mCpuLoad, totalLoad;
+      LBRealType mLoad, mCpuLoad, totalLoad;
       info.getSummary(mLoad, mCpuLoad, totalLoad);
       int nmsgs, nbytes;
       stats->computeNonlocalComm(nmsgs, nbytes);
index cf5b7c3ea19a088e76bfb1a886d6daaf971a0460..79d6928ec4ee04d6cb5cd26b615b4c53bb1fa6f3 100644 (file)
@@ -309,7 +309,7 @@ int LBDatabase::manualOn = 0;
 char *LBDatabase::avail_vector = NULL;
 CmiNodeLock avail_vector_lock;
 
-static double * _expectedLoad = NULL;
+static LBRealType * _expectedLoad = NULL;
 
 void LBDatabase::initnodeFn()
 {
@@ -320,7 +320,7 @@ void LBDatabase::initnodeFn()
       avail_vector[proc] = 1;
   avail_vector_lock = CmiCreateLock();
 
-  _expectedLoad = new double[num_proc];
+  _expectedLoad = new LBRealType[num_proc];
   for (proc=0; proc<num_proc; proc++) _expectedLoad[proc]=0.0;
 }
 
index eaeaa45803a70da6d0b39024dd60c64b0a8ee429..40638158a8beaf42fc1027322be265d3e1f778ad 100644 (file)
@@ -203,11 +203,11 @@ public:
     LDObjTime(h,walltime,cputime);
   };
 
-  inline void GetObjLoad(LDObjHandle &h, double &walltime, double &cputime) {
+  inline void GetObjLoad(LDObjHandle &h, LBRealType &walltime, LBRealType &cputime) {
     LDGetObjLoad(h,&walltime,&cputime);
   };
 
-  inline void QueryKnownObjLoad(LDObjHandle &h, double &walltime, double &cputime) {
+  inline void QueryKnownObjLoad(LDObjHandle &h, LBRealType &walltime, LBRealType &cputime) {
     LDQueryKnownObjLoad(h,&walltime,&cputime);
   };
 
@@ -355,12 +355,12 @@ public:
   int & new_lbbalancer() { return new_ld_balancer; }
 
   struct LastLBInfo {
-    double *expectedLoad;
+    LBRealType *expectedLoad;
     LastLBInfo();
   };
   LastLBInfo lastLBInfo;
-  inline double myExpectedLoad() { return lastLBInfo.expectedLoad[CkMyPe()]; }
-  inline double* expectedLoad() { return lastLBInfo.expectedLoad; }
+  inline LBRealType myExpectedLoad() { return lastLBInfo.expectedLoad[CkMyPe()]; }
+  inline LBRealType* expectedLoad() { return lastLBInfo.expectedLoad; }
   inline int useMem() { return LDMemusage(myLDHandle); }
 
   int getLoadbalancerTicket();
index f671a37969d283dcee26b16dc9a5f315d9532058..d99ab71910f5fc1c58397954d13fdc1a9435bf01 100644 (file)
@@ -38,7 +38,7 @@ void LBObj::Clear(void)
 #endif
 }
 
-void LBObj::IncrementTime(double walltime, double cputime)
+void LBObj::IncrementTime(LBRealType walltime, LBRealType cputime)
 {
   parentDB->MeasuredObjTime(walltime,cputime);
   data.wallTime += walltime;
index 739c0d617fb7ba25aa81e18e28e720988b0051ce..05bd0bc685b6f6c727b502ad563be58e95a66edf 100644 (file)
@@ -70,14 +70,14 @@ public:
 
   void Clear(void);
 
-  void IncrementTime(double walltime, double cputime);
+  void IncrementTime(LBRealType walltime, LBRealType cputime);
   inline void StartTimer(void) {
        startWTime = CkWallTimer();
 #if CMK_LB_CPUTIMER
        startCTime = CkCpuTimer();
 #endif
   }
-  inline void StopTimer(double* walltime, double* cputime) {
+  inline void StopTimer(LBRealType* walltime, LBRealType* cputime) {
        if (startWTime >= 0.0) {        // in case startOn in middle of entry
           const double endWTime = CkWallTimer();
          *walltime = endWTime - startWTime;
@@ -93,7 +93,7 @@ public:
         }
   }
 
-  inline void getTime(double *w, double *c) {
+  inline void getTime(LBRealType *w, LBRealType *c) {
     *w = data.wallTime;
 #if CMK_LB_CPUTIMER
     *c = data.cpuTime;
@@ -102,7 +102,7 @@ public:
 #endif
   }
 
-  inline void setTiming(double cputime)
+  inline void setTiming(LBRealType cputime)
   {
     data.wallTime = cputime;
 #if CMK_LB_CPUTIMER
@@ -115,7 +115,7 @@ 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) {
+  inline void lastKnownLoad(LBRealType *w, LBRealType *c) {
     *w = lastWallTime;
 #if CMK_LB_CPUTIMER
     *c = lastCpuTime;
@@ -132,11 +132,11 @@ private:
 //  LDObjHandle myhandle;
   LDObjData data;
 //  CmiBool registered;
-  double startWTime;
-  double lastWallTime;
+  LBRealType startWTime;
+  LBRealType lastWallTime;
 #if CMK_LB_CPUTIMER
-  double startCTime;
-  double lastCpuTime;
+  LBRealType startCTime;
+  LBRealType lastCpuTime;
 #endif
 //  CmiBool migratable;   // temp
 };
index c85c39c029f34e6aa1bd1d68ad989dd20403e803..5f58b374fce41a47aa5d93648e3ff34f2424476d 100644 (file)
@@ -28,10 +28,10 @@ int _lb_version = LB_FORMAT_VERSION;             /// data file version
 
 LBInfo::LBInfo(int count): numPes(count), minObjLoad(0.0), maxObjLoad(0.0)
 {
-  peLoads = new double[numPes]; 
-  objLoads = new double[numPes]; 
-  comLoads = new double[numPes]; 
-  bgLoads = new double[numPes]; 
+  peLoads = new LBRealType[numPes]; 
+  objLoads = new LBRealType[numPes]; 
+  comLoads = new LBRealType[numPes]; 
+  bgLoads = new LBRealType[numPes]; 
   clear();
 }
 
@@ -220,14 +220,14 @@ void LBInfo::print()
   CmiPrintf("Non-local comm: %d msgs %lld bytes\n", msgCount, msgBytes);
 }
 
-void LBInfo::getSummary(double &maxLoad, double &maxCpuLoad, double &totalLoad)
+void LBInfo::getSummary(LBRealType &maxLoad, LBRealType &maxCpuLoad, LBRealType &totalLoad)
 {
   totalLoad = maxLoad = peLoads[0];
   maxCpuLoad = objLoads[0];
   for (int i = 1; i < numPes; i++) {
-    double load = peLoads[i];
+    LBRealType load = peLoads[i];
     if (load>maxLoad) maxLoad=load;
-    double cpuload = objLoads[i];
+    LBRealType cpuload = objLoads[i];
     if (cpuload>maxCpuLoad) maxCpuLoad=cpuload;
     totalLoad += load;
   }
@@ -279,8 +279,8 @@ void LBSimulation::PrintDecisions(LBMigrateMsg *m, char *simFileName,
 
 void LBSimulation::PrintDifferences(LBSimulation *realSim, BaseLB::LDStats *stats)
 {
-  double *peLoads = lbinfo.peLoads;
-  double *realPeLoads = realSim->lbinfo.peLoads;
+  LBRealType *peLoads = lbinfo.peLoads;
+  LBRealType *realPeLoads = realSim->lbinfo.peLoads;
 
   // the number of procs during the simulation and the real execution must be checked by the caller!
   int i;
index add1c015b53c870eb5ce71a8b159b068708b1fd6..772609a46017af2bebb06cfc365350d6d838fb6d 100644 (file)
@@ -76,21 +76,21 @@ extern "C" const LDObjHandle &LDGetObjHandle(LDHandle h, int oh)
 }
 
 extern "C" void LDObjTime(LDObjHandle &_h,
-                           double walltime, double cputime)
+                           LBRealType walltime, LBRealType cputime)
 {
   LBDB *const db = (LBDB*)(_h.omhandle.ldb.handle);
   LBObj *const obj = db->LbObj(_h);
   obj->IncrementTime(walltime,cputime);
 }
   
-extern "C" void LDGetObjLoad(LDObjHandle &_h, double *wallT, double *cpuT)
+extern "C" void LDGetObjLoad(LDObjHandle &_h, LBRealType *wallT, LBRealType *cpuT)
 {
   LBDB *const db = (LBDB*)(_h.omhandle.ldb.handle);
   LBObj *const obj = db->LbObj(_h);
   obj->getTime(wallT, cpuT);
 }
 
-extern "C" void LDQueryKnownObjLoad(LDObjHandle &_h, double *wallT, double *cpuT)
+extern "C" void LDQueryKnownObjLoad(LDObjHandle &_h, LBRealType *wallT, LBRealType *cpuT)
 {
   LBDB *const db = (LBDB*)(_h.omhandle.ldb.handle);
   LBObj *const obj = db->LbObj(_h);
@@ -225,7 +225,7 @@ extern "C" void LDObjectStop(const LDObjHandle &_h)
   LBObj *const obj = db->LbObj(_h);
 
   if (db->StatsOn()) {
-    double walltime, cputime;
+    LBRealType walltime, cputime;
     obj->StopTimer(&walltime,&cputime);
     obj->IncrementTime(walltime,cputime);
   }
index 9a582833291efd83b04c198169c5df19394c14e5..236a7fc280636a44522036762c82d350932f37a4 100644 (file)
 class LBDatabase;//Forward declaration
 
 //typedef float floatType;
-typedef double floatType;
+// type defined by build option
+#ifndef CMK_LBTIME_TYPE
+#define CMK_LBTIME_TYPE float
+#endif
+typedef CMK_LBTIME_TYPE LBRealType;
 
 #define COMPRESS_LDB   1
 
@@ -117,12 +121,12 @@ typedef struct {
 
 typedef struct {
   LDObjHandle handle;
-  floatType wallTime;
+  LBRealType wallTime;
 #if CMK_LB_CPUTIMER
-  floatType cpuTime;
+  LBRealType cpuTime;
 #endif
 #if ! COMPRESS_LDB
-  floatType minWall, maxWall;
+  LBRealType minWall, maxWall;
 #endif
   CmiBool migratable;
   CmiBool asyncArrival;
@@ -250,7 +254,7 @@ void LDUnregisterObj(LDObjHandle h);
 const LDObjHandle &LDGetObjHandle(LDHandle h, int idx);
 
 void * LDObjUserData(LDObjHandle &_h);
-void LDObjTime(LDObjHandle &h, double walltime, double cputime);
+void LDObjTime(LDObjHandle &h, LBRealType walltime, LBRealType cputime);
 int  CLDRunningObject(LDHandle _h, LDObjHandle* _o );
 void LDObjectStart(const LDObjHandle &_h);
 void LDObjectStop(const LDObjHandle &_h);
@@ -290,8 +294,8 @@ void LDCollectStatsOn(LDHandle _lbdb);
 void LDCollectStatsOff(LDHandle _lbdb);
 int  CLDCollectingStats(LDHandle _lbdb);
 void LDQueryEstLoad(LDHandle bdb);
-void LDGetObjLoad(LDObjHandle &h, double *wallT, double *cpuT);
-void LDQueryKnownObjLoad(LDObjHandle &h, double *wallT, double *cpuT);
+void LDGetObjLoad(LDObjHandle &h, LBRealType *wallT, LBRealType *cpuT);
+void LDQueryKnownObjLoad(LDObjHandle &h, LBRealType *wallT, LBRealType *cpuT);
 
 int LDGetObjDataSz(LDHandle _lbdb);
 void LDGetObjData(LDHandle _lbdb, LDObjData *data);