adding commandline flag
authorHarshitha <gplkrsh2@illinois.edu>
Fri, 12 Oct 2012 06:02:37 +0000 (01:02 -0500)
committerHarshitha <gplkrsh2@illinois.edu>
Fri, 12 Oct 2012 06:02:37 +0000 (01:02 -0500)
src/ck-core/cklocation.C
src/ck-ldb/LBDatabase.C
src/ck-ldb/LBDatabase.h

index 10373ccaf6c37d9151aece1cff08fec2da9fd52d..23eecc0277a41a8cfc3f5a6fa13446d24b03e5eb 100644 (file)
@@ -1055,7 +1055,9 @@ void CkMigratable::commonInit(void) {
   local_state = OFF;
   prev_load = 0.0;
   can_reset = false;
-  atsync_iteration = myRec->getMetaBalancer()->get_iteration();
+  if (_lb_args.metaLbOn()) {
+    atsync_iteration = myRec->getMetaBalancer()->get_iteration();
+  }
 
        /*
        FAULT_EVAC
@@ -1224,7 +1226,12 @@ void CkMigratable::AtSync(int waitForMigration)
   // model-based load balancing, ask user to provide cpu load
   if (usesAutoMeasure == CmiFalse) UserSetLBLoad();
   
-//  myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
+  if (!_lb_args.metaLbOn()) {
+    myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
+    return;
+  }
+
+  // When MetaBalancer is turned on
 
   if (atsync_iteration == -1) {
     can_reset = false;
@@ -1399,7 +1406,9 @@ CkLocRec_local::CkLocRec_local(CkLocMgr *mgr,CmiBool fromMigration,
         enable_measure = CmiTrue;
        bounced  = CmiFalse;
        the_lbdb=mgr->getLBDB();
-  the_metalb=mgr->getMetaBalancer();
+  if (_lb_args.metaLbOn()) {
+    the_metalb=mgr->getMetaBalancer();
+  }
         LDObjid ldid = idx2LDObjid(idx);
 #if CMK_GLOBAL_LOCATION_UPDATE
         ldid.locMgrGid = mgr->getGroupID().idx;
@@ -3154,9 +3163,11 @@ void CkLocMgr::initLB(CkGroupID lbdbID_, CkGroupID metalbID_)
        if (the_lbdb == 0)
                CkAbort("LBDatabase not yet created?\n");
        DEBL((AA"Connected to load balancer %p\n"AB,the_lbdb));
-  the_metalb = (MetaBalancer *)CkLocalBranch(metalbID_);
-       if (the_metalb == 0)
-               CkAbort("MetaBalancer not yet created?\n");
+  if (_lb_args.metaLbOn()) {
+    the_metalb = (MetaBalancer *)CkLocalBranch(metalbID_);
+    if (the_metalb == 0)
+      CkAbort("MetaBalancer not yet created?\n");
+  }
 
        // Register myself as an object manager
        LDOMid myId;
index 186b0cb044de1d8ea96ecb78a6b6693e7ab9e8a5..a0db5a72b1d7901bec3e427a29ae4c4608862425 100644 (file)
@@ -289,6 +289,10 @@ void _loadbalancerInit()
   _lb_args.traceComm() = !CmiGetArgFlagDesc(argv, "+LBCommOff",
                "Turn load balancer instrumentation of communication off");
 
+       // turn on MetaBalancer if set
+       _lb_args.metaLbOn() = CmiGetArgFlagDesc(argv, "+MetaLB",
+               "Turn on MetaBalancer");
+
   // set alpha and beeta
   _lb_args.alpha() = PER_MESSAGE_SEND_OVERHEAD_DEFAULT;
   _lb_args.beeta() = PER_BYTE_SEND_OVERHEAD_DEFAULT;
@@ -352,7 +356,9 @@ void LBDatabase::init(void)
   mystep = 0;
   nloadbalancers = 0;
   new_ld_balancer = 0;
-  metabalancer = (MetaBalancer *)CkLocalBranch(_metalb);
+       if (_lb_args.metaLbOn()) {
+       metabalancer = (MetaBalancer *)CkLocalBranch(_metalb);
+       }
 
   CkpvAccess(lbdatabaseInited) = 1;
 #if CMK_LBDB_ON
@@ -475,7 +481,9 @@ void LBDatabase::pup(PUP::er& p)
        p|mystep;
        if(p.isUnpacking()) {
     nloadbalancers = 0;
-    metabalancer = (MetaBalancer*)CkLocalBranch(_metalb);
+               if (_lb_args.metaLbOn()) {
+       metabalancer = (MetaBalancer*)CkLocalBranch(_metalb);
+               }
   }
 }
 
@@ -492,42 +500,56 @@ void LBDatabase::EstObjLoad(const LDObjHandle &_h, double cputime)
 }
 
 void LBDatabase::ResetAdaptive() {
-       if (metabalancer == NULL) {
-               metabalancer = CProxy_MetaBalancer(_metalb).ckLocalBranch();
-       }
-       if (metabalancer != NULL) {
-               metabalancer->ResetAdaptive();
+#if CMK_LBDB_ON
+       if (_lb_args.metaLbOn()) {
+               if (metabalancer == NULL) {
+                       metabalancer = CProxy_MetaBalancer(_metalb).ckLocalBranch();
+               }
+               if (metabalancer != NULL) {
+                       metabalancer->ResetAdaptive();
+               }
        }
+#endif
 }
 
 void LBDatabase::ResumeClients() {
 #if CMK_LBDB_ON
-  if (metabalancer == NULL) {
-    metabalancer = CProxy_MetaBalancer(_metalb).ckLocalBranch();
-  }
-  if (metabalancer != NULL) {
-    metabalancer->ResumeClients();
-  }
+       if (_lb_args.metaLbOn()) {
+               if (metabalancer == NULL) {
+                       metabalancer = CProxy_MetaBalancer(_metalb).ckLocalBranch();
+               }
+               if (metabalancer != NULL) {
+                       metabalancer->ResumeClients();
+               }
+       }
 #endif
   LDResumeClients(myLDHandle);
 }
 
 void LBDatabase::SetMigrationCost(double cost) {
-  if (metabalancer == NULL) {
-    metabalancer = (MetaBalancer *)CkLocalBranch(_metalb);
-  }
-  if (metabalancer != NULL)  {
-    metabalancer->SetMigrationCost(cost);
-  }
+#if CMK_LBDB_ON
+       if (_lb_args.metaLbOn()) {
+               if (metabalancer == NULL) {
+                       metabalancer = (MetaBalancer *)CkLocalBranch(_metalb);
+               }
+               if (metabalancer != NULL)  {
+                       metabalancer->SetMigrationCost(cost);
+               }
+       }
+#endif
 }
 
 void LBDatabase::SetStrategyCost(double cost) {
-  if (metabalancer == NULL) {
-    metabalancer = (MetaBalancer *)CkLocalBranch(_metalb);
-  }
-  if (metabalancer != NULL)  {
-    metabalancer->SetStrategyCost(cost);
-  }
+#if CMK_LBDB_ON
+       if (_lb_args.metaLbOn()) {
+               if (metabalancer == NULL) {
+                       metabalancer = (MetaBalancer *)CkLocalBranch(_metalb);
+               }
+               if (metabalancer != NULL)  {
+                       metabalancer->SetStrategyCost(cost);
+               }
+       }
+#endif
 }
 
 /*
index 3e2d7a673d2817d9b526739e9ed6284225f16445..2c6a8e50e6b1a3175778561a436ffafdfc46525d 100644 (file)
@@ -39,6 +39,7 @@ private:
   int _lb_central_pe;           // processor number for centralized startegy
   int _lb_percentMovesAllowed; //Specifies restriction on num of chares to be moved(as a percentage of total number of chares). Used by RefineKLB
   int _lb_teamSize;            // specifies the team size for TeamLB
+  int _lb_metaLbOn;
 public:
   CkLBArgs() {
 #if CMK_BIGSIM_CHARM
@@ -53,6 +54,7 @@ public:
     _lb_loop = 0;
     _lb_central_pe = 0;
     _lb_teamSize = 1;
+    _lb_metaLbOn = 0;
   }
   inline double & lbperiod() { return _autoLbPeriod; }
   inline int & debug() { return _lb_debug; }
@@ -72,6 +74,7 @@ public:
   inline double & alpha() { return _lb_alpha; }
   inline double & beeta() { return _lb_beeta; }
   inline int & percentMovesAllowed() { return _lb_percentMovesAllowed;}
+  inline int & metaLbOn() {return _lb_metaLbOn;}
 };
 
 extern CkLBArgs _lb_args;