Fixing some bugs
authorHarshitha <gplkrsh2@illinois.edu>
Fri, 23 Mar 2012 22:50:37 +0000 (17:50 -0500)
committerHarshitha <gplkrsh2@illinois.edu>
Fri, 23 Mar 2012 22:50:37 +0000 (17:50 -0500)
src/ck-core/cklocation.C
src/ck-core/cklocation.h
src/ck-ldb/LBDatabase.C

index 6308ab5c8cd858abf0448b9a07bd88f8e96754d6..8cee99ed23654b84b4e7f47b03165c2d66b436a3 100644 (file)
@@ -55,15 +55,6 @@ static const char *idx2str(const CkArrayMessage *m) {
 #   define DEBUG(x)   /**/
 #endif
 
-enum state {
-  OFF,
-  ON,
-  PAUSE,
-  DECIDED,
-  LOAD_BALANCE
-} local_state;
-
-
 #if CMK_LBDB_ON
 /*LBDB object handles are fixed-sized, and not necc.
 the same size as ArrayIndices.
@@ -981,6 +972,7 @@ void CkMigratable::commonInit(void) {
        usesAutoMeasure=CmiTrue;
        barrierRegistered=CmiFalse;
   atsync_iteration = -1;
+  //CkPrintf("%s in init and off\n", idx2str(thisIndexMax));
   local_state = OFF;
        /*
        FAULT_EVAC
@@ -1083,13 +1075,16 @@ double CkMigratable::getObjTime() {
 
 void CkMigratable::recvLBPeriod(void *data) {
   int lb_period = *((int *) data);
-  CkPrintf("Received the LB Period %d\n", lb_period);
+//  CkPrintf("--[pe %s] Received the LB Period %d current iter %d state %d\n",
+//      idx2str(thisIndexMax), lb_period, atsync_iteration, local_state);
   if (local_state == PAUSE) {
     if (atsync_iteration < lb_period) {
+//      CkPrintf("---[pe %s] decided\n", idx2str(thisIndexMax));
       local_state = DECIDED;
       ResumeFromSync();
       return;
     }
+//    CkPrintf("---[pe %s] load balance\n", idx2str(thisIndexMax));
     local_state = LOAD_BALANCE;
 
     local_state = OFF;
@@ -1098,6 +1093,7 @@ void CkMigratable::recvLBPeriod(void *data) {
     myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
     return;
   }
+//  CkPrintf("---[pe %s] decided\n", idx2str(thisIndexMax));
   local_state = DECIDED;
 }
 
@@ -1131,18 +1127,21 @@ void CkMigratable::AtSync(int waitForMigration)
   if (usesAutoMeasure == CmiFalse) UserSetLBLoad();
   //   myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
   atsync_iteration++;
+//  CkPrintf("[pe %s] atsync_iter %d && predicted period %d state: %d\n",
+//      idx2str(thisIndexMax), atsync_iteration,
+//      myRec->getLBDB()->getPredictedLBPeriod(), local_state);
   myRec->getLBDB()->AddLoad(atsync_iteration, myRec->getObjTime());
-  //CkPrintf("atsync_iter %d && predicted period %d state: %d\n", atsync_iteration,
-   //   myRec->getLBDB()->getPredictedLBPeriod(), local_state);
   // register handle as myRec->getLdHandle()
   if (atsync_iteration < myRec->getLBDB()->getPredictedLBPeriod()) {
     ResumeFromSync();
   } else if (local_state == DECIDED) {
+//    CkPrintf("[pe %s] Went to load balance\n", idx2str(thisIndexMax));
     local_state = LOAD_BALANCE;
     local_state = OFF;
     atsync_iteration = -1;
     myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
   } else {
+//    CkPrintf("[pe %s] Went to pause state\n", idx2str(thisIndexMax));
     local_state = PAUSE;
   }
 }
index f8e9fc48004ed80db7b19b7c66f31d7380def655..56a37aa4de86933eaa815a98e1edaef69472d4a7 100644 (file)
@@ -277,6 +277,15 @@ private:
   void commonInit(void);
   CmiBool asyncEvacuate;
   int atsync_iteration;
+
+  enum state {
+    OFF,
+    ON,
+    PAUSE,
+    DECIDED,
+    LOAD_BALANCE
+  } local_state;
+
 public:
   CkArrayIndex thisIndexMax;
 
index b1bd5b2ae471f8eab4711ec8f411e5e83f9e0b53..454e3bc642018fdfaf079302ba75e6e6f12584ce 100644 (file)
@@ -402,9 +402,9 @@ void LBDatabase::init(void)
   if (manualOn) TurnManualLBOn();
 #endif
   
-  max_load_vec.resize(100);
-  total_load_vec.resize(100);
-  total_contrib_vec.resize(100);
+  max_load_vec.resize(100, 0);
+  total_load_vec.resize(100, 0);
+  total_contrib_vec.resize(100, 0);
   max_iteration = -1;
 
   // If metabalancer enabled, initialize the variables
@@ -561,12 +561,22 @@ void LBDatabase::ResumeClients() {
   adaptive_struct.lb_migration_cost = 0.0;
   adaptive_struct.lb_msg_send_no = 0;
   adaptive_struct.lb_msg_recv_no = 0;
+  
+  max_load_vec.clear();
+  total_load_vec.clear();
+  total_contrib_vec.clear();
+
+  max_load_vec.resize(100, 0.0);
+  total_load_vec.resize(100, 0.0);
+  total_contrib_vec.resize(100, 0.0);
 
   LDResumeClients(myLDHandle);
 }
 
 bool LBDatabase::AddLoad(int iteration, double load) {
   total_contrib_vec[iteration]++;
+  //CkPrintf("At PE %d Total contribution for iteration %d is %lf total objs %d\n", CkMyPe(), iteration,
+  //total_contrib_vec[iteration], getLBDB()->ObjDataCount());
 
   if (iteration > adaptive_struct.lb_no_iterations) {
     adaptive_struct.lb_no_iterations = iteration;
@@ -575,13 +585,13 @@ bool LBDatabase::AddLoad(int iteration, double load) {
   if (max_load_vec[iteration] < load) {
     max_load_vec[iteration] = load;
   }
-  if (total_contrib_vec[iteration] == getLBDB()->getObjCount()) {
+  if (total_contrib_vec[iteration] == getLBDB()->ObjDataCount()) {
     double lb_data[4];
     lb_data[0] = total_load_vec[iteration];
     lb_data[1] = max_load_vec[iteration];
-    lb_data[2] = getLBDB()->getObjCount();
+    lb_data[2] = getLBDB()->ObjDataCount();
     lb_data[3] = iteration;
-    //CkPrintf("[%d] sends total load %lf at iter %d\n", CkMyPe(), total_load, adaptive_struct.lb_no_iterations);
+    //CkPrintf("[%d] sends total load %lf at iter %d\n", CkMyPe(), total_load_vec[iteration], adaptive_struct.lb_no_iterations);
 
     CkCallback cb(CkIndex_LBDatabase::ReceiveMinStats((CkReductionMsg*)NULL), thisProxy[0]);
     contribute(4*sizeof(double), lb_data, lbDataCollectionType, cb);
@@ -791,7 +801,7 @@ void LBDatabase::LoadBalanceDecisionFinal(int req_no, int period) {
   if (req_no < adaptive_struct.lb_msg_recv_no) {
     return;
   }
-  CkPrintf("[%d] Final Load balance decision made cur iteration: %d period:%d \n",CkMyPe(), adaptive_struct.lb_no_iterations, period);
+//  CkPrintf("[%d] Final Load balance decision made cur iteration: %d period:%d \n",CkMyPe(), adaptive_struct.lb_no_iterations, period);
   adaptive_struct.lb_ideal_period = period;
   LDOMAdaptResumeSync(myLDHandle, period);