changed Strategy() to work() to use the newer strategy api.
authorGengbin Zheng <gzheng@illinois.edu>
Sun, 31 Aug 2003 22:08:18 +0000 (22:08 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Sun, 31 Aug 2003 22:08:18 +0000 (22:08 +0000)
src/ck-ldb/Comm1LB.C
src/ck-ldb/Comm1LB.h
src/ck-ldb/CommLB.C
src/ck-ldb/CommLB.h
src/ck-ldb/MetisLB.C
src/ck-ldb/MetisLB.h
src/ck-ldb/RefineLB.C
src/ck-ldb/RefineLB.h

index 628fc72e2621175c50523437886c179316ea90a8..fcf1b1ab58d9cd22447f28cfd50a72867b02b0ec 100644 (file)
@@ -150,12 +150,11 @@ void init(alloc_struct **a, graph * object_graph, int l, int b){
   }
 }
 
-LBMigrateMsg* Comm1LB::Strategy(CentralLB::LDStats* stats, int count)
+void Comm1LB::work(CentralLB::LDStats* stats, int count)
 {
   int pe,obj,com;
   double mean_load =0.0;
   ObjectRecord *x;
-  CkVec<MigrateInfo*> migrateInfo;
 
   //  CkPrintf("[%d] Comm1LB strategy\n",CkMyPe());
 
@@ -215,11 +214,8 @@ LBMigrateMsg* Comm1LB::Strategy(CentralLB::LDStats* stats, int count)
   alloc(pe,maxid,stats->objData[mpos].wallTime,0,0);
   if(pe != spe){
     //      CkPrintf("**Moving from %d to %d\n",spe,pe);
-    MigrateInfo* migrateMe = new MigrateInfo;
-    migrateMe->obj = stats->objData[mpos].handle;
-    migrateMe->from_pe = spe;
-    migrateMe->to_pe = pe;
-    migrateInfo.insertAtEnd(migrateMe);
+    CmiAssert(stats->from_proc[mpos] == spe);
+    stats->to_proc[mpos] = pe;
   }
 
   int out_msg,out_byte,min_msg,min_byte;
@@ -267,25 +263,10 @@ LBMigrateMsg* Comm1LB::Strategy(CentralLB::LDStats* stats, int count)
 
     if(minpe != spe){
       //      CkPrintf("**Moving from %d to %d\n",spe,minpe);
-      MigrateInfo *migrateMe = new MigrateInfo;
-      migrateMe->obj = stats->objData[mpos].handle;
-      migrateMe->from_pe = spe;
-      migrateMe->to_pe = minpe;
-      migrateInfo.insertAtEnd(migrateMe);
+      CmiAssert(stats->from_proc[mpos] == spe);
+      stats->to_proc[mpos] = minpe;
     }
   }
-
-  int migrate_count = migrateInfo.length();
-  LBMigrateMsg* msg = new(&migrate_count,1) LBMigrateMsg;
-  msg->n_moves = migrate_count;
-  for(int i=0; i < migrate_count; i++) {
-    MigrateInfo* item = (MigrateInfo*)migrateInfo[i];
-    msg->moves[i] = *item;
-    delete item;
-    migrateInfo[i] = 0;
-  }
-
-  return msg;
 }
 
 
index 7d3d443cb5c8d8f07ffae14126aeb23c690f556f..e13a1fb5169c30d8444f3b13c7a64f7ed2045e30 100644 (file)
@@ -38,7 +38,7 @@ public:
   Comm1LB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
-  LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
+  void work(CentralLB::LDStats* stats, int count);
   void alloc(int pe, int id, double load, int nmsg, int nbyte);
   double compute_cost(int id, int pe, int n_alloc, int &out_msg, int &out_byte); 
   void add_graph(int x, int y, int data, int nmsg);
index 15351fe42d144a3895f49e1806daa7bfa9b7b446..6cca0c728e5990640eba0a7c8b94b40e3e00b250 100644 (file)
@@ -149,11 +149,10 @@ void init(double **a, graph * object_graph, int l, int b){
     }
 }
 
-LBMigrateMsg* CommLB::Strategy(CentralLB::LDStats* _stats, int count)
+void CommLB::work(CentralLB::LDStats* _stats, int count)
 {
     int pe,obj,com;
     ObjectRecord *x;
-    CkVec<MigrateInfo*> migrateInfo;
     
     //  CkPrintf("[%d] CommLB strategy\n",CkMyPe());
     stats = _stats; 
@@ -234,11 +233,8 @@ LBMigrateMsg* CommLB::Strategy(CentralLB::LDStats* _stats, int count)
     stats->assign(maxid, pe);
     if(pe != spe){
        //    CkPrintf("**Moving from %d to %d\n",spe,pe);
-       MigrateInfo* migrateMe = new MigrateInfo;
-       migrateMe->obj = stats->objData[mpos].handle;
-       migrateMe->from_pe = spe;
-       migrateMe->to_pe = pe;
-       migrateInfo.insertAtEnd(migrateMe);
+       CmiAssert(stats->from_proc[mpos] == spe);
+       stats->to_proc[mpos] = pe;
     }
 
 
@@ -276,27 +272,12 @@ LBMigrateMsg* CommLB::Strategy(CentralLB::LDStats* _stats, int count)
        
        if(minpe != spe){
            //      CkPrintf("**Moving from %d to %d\n",spe,minpe);
-           MigrateInfo *migrateMe = new MigrateInfo;
-           migrateMe->obj = stats->objData[mpos].handle;
-           migrateMe->from_pe = spe;
-           migrateMe->to_pe = minpe;
-           migrateInfo.insertAtEnd(migrateMe);
+           CmiAssert(stats->from_proc[mpos] == spe);
+           stats->to_proc[mpos] = minpe;
        }
        delete x;
     }
     
-    int migrate_count = migrateInfo.length();
-    LBMigrateMsg* msg = new(&migrate_count,1) LBMigrateMsg;
-    msg->n_moves = migrate_count;
-    for(int i=0; i < migrate_count; i++) {
-       MigrateInfo* item = (MigrateInfo*)migrateInfo[i];
-       msg->moves[i] = *item;
-       delete item;
-       migrateInfo[i] = 0;
-    }
-    if (lb_debug)
-      CmiPrintf("%s migrating %d objects.\n", lbname, migrate_count);
-    
     // free up memory
     for(pe=0;pe <= count;pe++)
        delete alloc_array[pe];
@@ -313,8 +294,6 @@ LBMigrateMsg* CommLB::Strategy(CentralLB::LDStats* _stats, int count)
       }
     }
     delete [] object_graph;
-
-    return msg;
 }
 
 
index f7be742c0650236a7bd121fd69f1d36bdf605373..0d11afe4dcf43af651b5d58baee64f7d042dbf6f 100644 (file)
@@ -38,7 +38,7 @@ public:
 private:
   CentralLB::LDStats* stats;
   CmiBool QueryBalanceNow(int step);
-  LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
+  void work(CentralLB::LDStats* stats, int count);
   void alloc(int pe, int id, double load);
   double compute_com(int id,int pe); 
   void add_graph(int x, int y, int data, int nmsg);
index 50616e7336dad718191dfd140593f5b5ca8bf2cd..47931d9898c24a97d68cdc52a22a6d30e2281c5a 100644 (file)
@@ -102,12 +102,10 @@ extern "C" void METIS_mCPartGraphKway(int*, int*, int*, int*, int*, int*,
 LBMigrateMsg* MetisLB::Strategy(CentralLB::LDStats* stats, int count,
                                 int option=0)
 */
-LBMigrateMsg* MetisLB::Strategy(CentralLB::LDStats* stats, int count)
+void MetisLB::work(CentralLB::LDStats* stats, int count)
 {
   // CkPrintf("entering MetisLB::Strategy...\n");
   // CkPrintf("[%d] MetisLB strategy\n",CkMyPe());
-  CkVec<MigrateInfo*> migrateInfo;
-
   int i, j, m;
   int option = 0;
   int numobjs = stats->n_objs;
@@ -125,7 +123,6 @@ LBMigrateMsg* MetisLB::Strategy(CentralLB::LDStats* stats, int count)
     origmap[i] = 0;
   }
 
-  int k=0;
   for (i=0; i<stats->n_objs; i++) {
       LDObjData &odata = stats->objData[i];
       if (!odata.migratable) 
@@ -136,10 +133,9 @@ LBMigrateMsg* MetisLB::Strategy(CentralLB::LDStats* stats, int count)
       handles[odata[i].id.id[0]] = odata[i].handle;
       */
       int frompe = stats->from_proc[i];
-      origmap[k] = frompe;
-      objtime[k] = odata.wallTime*stats->procs[frompe].pe_speed;
-      handles[k] = odata.handle;
-      k++;
+      origmap[i] = frompe;
+      objtime[i] = odata.wallTime*stats->procs[frompe].pe_speed;
+      handles[i] = odata.handle;
   }
 
   // to convert the weights on vertices to integers
@@ -298,11 +294,8 @@ LBMigrateMsg* MetisLB::Strategy(CentralLB::LDStats* stats, int count)
   if(!sameMapFlag) {
     for(i=0; i<numobjs; i++) {
       if(origmap[i] != newmap[i]) {
-       MigrateInfo* migrateMe = new MigrateInfo;
-       migrateMe->obj = handles[i];
-       migrateMe->from_pe = origmap[i];
-       migrateMe->to_pe = newmap[i];
-       migrateInfo.insertAtEnd(migrateMe);
+       CmiAssert(stats->from_proc[i] == origmap[i]);
+       stats->to_proc[i] =  newmap[i];
       }
     }
   }
@@ -310,19 +303,6 @@ LBMigrateMsg* MetisLB::Strategy(CentralLB::LDStats* stats, int count)
   delete[] origmap;
   if(newmap != origmap)
     delete[] newmap;
-
-  int migrate_count=migrateInfo.length();
-  //  CkPrintf("Migration Count = %d\n", migrate_count);
-  LBMigrateMsg* msg = new(&migrate_count,1) LBMigrateMsg;
-  msg->n_moves = migrate_count;
-  for(i=0; i < migrate_count; i++) {
-    MigrateInfo* item = (MigrateInfo*)migrateInfo[i];
-    msg->moves[i] = *item;
-    delete item;
-    migrateInfo[i] = 0;
-  }
-
-  return msg;
 }
 
 #endif
index ad43c2002b0b90b63eba83e1f13ecf307b8515b4..5f295dda7b14d62e159a1ccff0f3ffbfaba17411 100644 (file)
@@ -24,7 +24,7 @@ public:
   MetisLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
-  LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
+  void work(CentralLB::LDStats* stats, int count);
 };
 
 #define WEIGHTED 1
index 53a8a20206c0e19089fee66836607f542fb68841..c0fa5bfdfc83b2d83584e299e7eeb0b57772c359 100644 (file)
@@ -38,10 +38,9 @@ CmiBool RefineLB::QueryBalanceNow(int _step)
   return CmiTrue;
 }
 
-LBMigrateMsg* RefineLB::Strategy(CentralLB::LDStats* stats, int count)
+void RefineLB::work(CentralLB::LDStats* stats, int count)
 {
   int obj;
-
   //  CkPrintf("[%d] RefineLB strategy\n",CkMyPe());
 
   // RemoveNonMigratable(stats, count);
@@ -60,38 +59,19 @@ LBMigrateMsg* RefineLB::Strategy(CentralLB::LDStats* stats, int count)
 
   refiner.Refine(count,stats,from_procs,to_procs);
 
-  CkVec<MigrateInfo*> migrateInfo;
-
   // Save output
   for(obj=0;obj<stats->n_objs;obj++) {
       int pe = stats->from_proc[obj];
       if (to_procs[obj] != pe) {
        // CkPrintf("[%d] Obj %d migrating from %d to %d\n",
        //       CkMyPe(),obj,pe,to_procs[obj]);
-       MigrateInfo *migrateMe = new MigrateInfo;
-       migrateMe->obj = stats->objData[obj].handle;
-       migrateMe->from_pe = pe;
-       migrateMe->to_pe = to_procs[obj];
-       migrateInfo.insertAtEnd(migrateMe);
-    }
-  }
-
-  int migrate_count=migrateInfo.length();
-  LBMigrateMsg* msg = new(&migrate_count,1) LBMigrateMsg;
-  msg->n_moves = migrate_count;
-  if (lb_debug) CmiPrintf("RefineLB> migrating %d objects.\n", migrate_count);
-  for(int i=0; i < migrate_count; i++) {
-    MigrateInfo* item = (MigrateInfo*)migrateInfo[i];
-    msg->moves[i] = *item;
-    delete item;
-    migrateInfo[i] = 0;
+       stats->to_proc[obj] = to_procs[obj];
+      }
   }
 
   // Free the refine buffers
   Refiner::FreeProcs(from_procs);
   Refiner::FreeProcs(to_procs);
-
-  return msg;
 };
 
 #endif
index 626f72ff2453455bc692967eeed82e01393a8f8b..3b373653257034e796fcb21b1be82a6b6c44b38d 100644 (file)
@@ -43,7 +43,7 @@ public:
   RefineLB(CkMigrateMessage *m):CentralLB(m) {}
 private:
   CmiBool QueryBalanceNow(int step);
-  LBMigrateMsg* Strategy(CentralLB::LDStats* stats, int count);
+  void work(CentralLB::LDStats* stats, int count);
 
 protected:
 /*