a modification in LDStats database, changed pointer to array to CkVec for easier...
authorGengbin Zheng <gzheng@illinois.edu>
Mon, 31 Jan 2005 02:33:58 +0000 (02:33 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Mon, 31 Jan 2005 02:33:58 +0000 (02:33 +0000)
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/NborBaseLB.h
src/ck-ldb/Refiner.C
src/ck-ldb/RefinerComm.C

index 46d53229b63707da786264b314843d4f7e0cca70..e3d9ca33da3cbbb57c4d7d3236128af4e87404fc 100644 (file)
@@ -75,10 +75,10 @@ inline static int ObjKey(const LDObjid &oid, const int hashSize) {
         |i_abs(oid.id[0])) % hashSize;
 }
 
-BaseLB::LDStats::LDStats():  
-       n_objs(0), n_migrateobjs(0), objData(NULL), 
-        n_comm(0), commData(NULL), from_proc(NULL), to_proc(NULL), 
-        objHash(NULL) { 
+BaseLB::LDStats::LDStats()
+       : n_objs(0), n_migrateobjs(0), n_comm(0), 
+          objHash(NULL) 
+{
   procs = new ProcStats[CkNumPes()]; 
 }
 
@@ -247,7 +247,7 @@ void BaseLB::LDStats::print()
   }
 
   CkPrintf("------------- Comm Data: %d records -------------\n", n_comm);
-  LDCommData *cdata = commData;
+  CkVec<LDCommData> &cdata = commData;
   for(i=0; i < n_comm; i++) {
       CkPrintf("Link %d\n",i);
 
@@ -301,10 +301,10 @@ void BaseLB::LDStats::pup(PUP::er &p)
     // user can specify simulated processors other than the real # of procs.
     int maxpe = count>LBSimulation::simProcs?count:LBSimulation::simProcs;
     procs = new ProcStats[maxpe];
-    objData = new LDObjData[n_objs];
-    commData = new LDCommData[n_comm];
-    from_proc = new int[n_objs];
-    to_proc = new int[n_objs];
+    objData.resize(n_objs);
+    commData.resize(n_comm);
+    from_proc.resize(n_objs);
+    to_proc.resize(n_objs);
     objHash = NULL;
   }
   // ignore the background load when unpacking if the user change the # of procs
@@ -316,8 +316,8 @@ void BaseLB::LDStats::pup(PUP::er &p)
   else
     for (i=0; i<count; i++) p|procs[i];
   for (i=0; i<n_objs; i++) p|objData[i]; 
-  p(from_proc, n_objs);
-  p(to_proc, n_objs);
+  for (i=0; i<n_objs; i++) p|from_proc[i]; 
+  for (i=0; i<n_objs; i++) p|to_proc[i]; 
   // reset to_proc when unpacking
   if (p.isUnpacking())
     for (i=0; i<n_objs; i++) to_proc[i] = from_proc[i];
index 4d8f6bf203be17ab2a0b35cca64bdd25f7212baf..8021923526de59100357156bbdeabe2008b621d2 100644 (file)
@@ -64,10 +64,10 @@ public:
     
     int   n_objs;
     int   n_migrateobjs;
-    LDObjData* objData;
+    CkVec<LDObjData> objData;
     int   n_comm;
-    LDCommData* commData;
-    int  *from_proc, *to_proc;
+    CkVec<LDCommData> commData;
+    CkVec<int>  from_proc, to_proc;
 
     int *objHash; 
     int  hashSize;
@@ -83,10 +83,10 @@ public:
     int getRecvHash(LDCommData &cData);
     void clear() {
       n_objs = n_comm = 0;
-      delete [] objData;
-      delete [] commData;
-      delete [] from_proc;
-      delete [] to_proc;
+      objData.resize(0);
+      commData.resize(0);
+      from_proc.resize(0);
+      to_proc.resize(0);
       deleteCommHash();
     }
     void print();
index 50d492c67537aa4001e8478d060e2cfd5a8de992..f39897eaa7404c96c09cbd0b29fd8b088e1b7f77 100644 (file)
@@ -245,10 +245,12 @@ void CentralLB::MissMigrate(int waitForBarrier)
 void CentralLB::buildStats()
 {
     statsData->count = stats_msg_count;
-    statsData->objData = new LDObjData[statsData->n_objs];
-    statsData->from_proc = new int[statsData->n_objs];
-    statsData->to_proc = new int[statsData->n_objs];
-    statsData->commData = new LDCommData[statsData->n_comm];
+    // allocate space
+    statsData->objData.resize(statsData->n_objs);
+    statsData->from_proc.resize(statsData->n_objs);
+    statsData->to_proc.resize(statsData->n_objs);
+    statsData->commData.resize(statsData->n_comm);
+
     int nobj = 0;
     int ncom = 0;
     int nmigobj = 0;
@@ -391,9 +393,11 @@ void CentralLB::removeNonMigratable(LDStats* stats, int count)
 {
   int i;
 
-  LDObjData *nonmig = new LDObjData[stats->n_migrateobjs];
-  int *new_from_proc = new int[stats->n_migrateobjs];
-  int *new_to_proc = new int[stats->n_migrateobjs];
+  CkVec<LDObjData> nonmig;
+  CkVec<int> new_from_proc, new_to_proc;
+  nonmig.resize(stats->n_migrateobjs);
+  new_from_proc.resize(stats->n_migrateobjs);
+  new_to_proc.resize(stats->n_migrateobjs);
   int n_objs = 0;
   for (i=0; i<stats->n_objs; i++) 
   {
@@ -413,7 +417,8 @@ void CentralLB::removeNonMigratable(LDStats* stats, int count)
 
   stats->makeCommHash();
   
-  LDCommData *newCommData = new LDCommData[stats->n_comm];
+  CkVec<LDCommData> newCommData;
+  newCommData.resize(stats->n_comm);
   int n_comm = 0;
   for (i=0; i<stats->n_comm; i++) 
   {
@@ -443,16 +448,11 @@ void CentralLB::removeNonMigratable(LDStats* stats, int count)
   if (n_objs != stats->n_objs) CmiPrintf("Removed %d nonmigratable %d comms - n_objs:%d migratable:%d\n", stats->n_objs-n_objs, stats->n_objs, stats->n_migrateobjs, stats->n_comm-n_comm);
 
   // swap to new data
-  delete [] stats->objData;
-  delete [] stats->from_proc;
-  delete [] stats->to_proc;
-
   stats->objData = nonmig;
   stats->from_proc = new_from_proc;
   stats->to_proc = new_to_proc;
   stats->n_objs = n_objs;
 
-  delete [] stats->commData;
   stats->commData = newCommData;
   stats->n_comm = n_comm;
 
index 7e4139186cc772eaa84de8a15451afe8ec784013..6b70f932eed829b96c262d7a39a27549587716d4 100644 (file)
@@ -108,13 +108,13 @@ public:
     FutureModel(int n): n_stats(n), cur_stats(0), start_stats(0), n_objs(0),
         parameters(NULL) {
       collection = new LDStats[n];
-      for (int i=0;i<n;++i) collection[i].objData=NULL;
+      //for (int i=0;i<n;++i) collection[i].objData=NULL;
       predictor = new DefaultFunction();
     }
 
     FutureModel(int n, LBPredictorFunction *myfunc): n_stats(n), cur_stats(0), start_stats(0), n_objs(0), parameters(NULL) {
       collection = new LDStats[n];
-      for (int i=0;i<n;++i) collection[i].objData=NULL;
+      //for (int i=0;i<n;++i) collection[i].objData=NULL;
       predictor = myfunc;
     }
 
index f8b47c8e00a19095e377399e2aa5e9544e743896..e08e7f9eefad7fe5fa7cb71b1d4ede318c2eaf67 100644 (file)
@@ -233,8 +233,8 @@ void CentralLB::FuturePredictor(BaseLB::LDStats* stats) {
 
   if (predicted_model->cur_stats < _lb_predict_delay) {
     // not yet ready to create the model, just store the relevant statistic
-    predicted_model->collection[predicted_model->start_stats].objData = new LDObjData[stats->n_objs];
-    predicted_model->collection[predicted_model->start_stats].commData = new LDCommData[stats->n_comm];
+    predicted_model->collection[predicted_model->start_stats].objData.resize(stats->n_objs);
+    predicted_model->collection[predicted_model->start_stats].commData.resize(stats->n_comm);
     predicted_model->collection[predicted_model->start_stats].n_objs = stats->n_objs;
     predicted_model->collection[predicted_model->start_stats].n_migrateobjs = stats->n_migrateobjs;
     predicted_model->collection[predicted_model->start_stats].n_comm = stats->n_comm;
@@ -286,12 +286,8 @@ void CentralLB::FuturePredictor(BaseLB::LDStats* stats) {
       if (predicted_model->start_stats >= predicted_model->n_stats) predicted_model->start_stats -= predicted_model->n_stats;
       if (predicted_model->cur_stats < predicted_model->n_stats) ++predicted_model->cur_stats;
 
-      if (predicted_model->collection[predicted_model->start_stats].objData != NULL) {
-       delete predicted_model->collection[predicted_model->start_stats].objData;
-       delete predicted_model->collection[predicted_model->start_stats].commData;
-      }
-      predicted_model->collection[predicted_model->start_stats].objData = new LDObjData[stats->n_objs];
-      predicted_model->collection[predicted_model->start_stats].commData = new LDCommData[stats->n_comm];
+      predicted_model->collection[predicted_model->start_stats].objData.resize(stats->n_objs);
+      predicted_model->collection[predicted_model->start_stats].commData.resize(stats->n_comm);
 
       predicted_model->collection[predicted_model->start_stats].n_objs = stats->n_objs;
       predicted_model->collection[predicted_model->start_stats].n_migrateobjs = stats->n_migrateobjs;
index e1354f853bc617394b5a6c8d6acfa6b153f9c5b8..3885b07c86c4b31ae9fb6d21808f636bd8e7f805 100644 (file)
@@ -75,22 +75,6 @@ protected:
 
   int NeighborIndex(int pe);   // return the neighbor array index
 
-  /*
-  struct {
-    int pe_speed;
-    double total_walltime;
-    double total_cputime;
-    double idletime;
-    double bg_walltime;
-    double bg_cputime;
-    int obj_data_sz;
-    LDObjData* objData;
-    int comm_data_sz;
-    LDCommData* commData;
-    double obj_walltime;
-    double obj_cputime;
-  } myStats;
-  */
   LDStats myStats;
 
 private:
index d76af4157a16f753a8db61170e6fc2462e4efeb1..9b0264a3978b5e35423c37152d31e8be0d8a10f0 100644 (file)
@@ -46,16 +46,16 @@ void Refiner::create(int count, BaseLB::LDStats* stats, int* procs)
     if (processors[i].available == CmiTrue) numAvail++;
   }
 
-  LDObjData *odata = stats->objData;
   for (i=0; i<stats->n_objs; i++)
   {
+       LDObjData &odata = stats->objData[i];
        computes[i].Id = i;
-        computes[i].id = odata[i].objID();
-        computes[i].handle = odata[i].handle;
-        computes[i].load = odata[i].wallTime;     // was cpuTime
+        computes[i].id = odata.objID();
+        computes[i].handle = odata.handle;
+        computes[i].load = odata.wallTime;     // was cpuTime
         computes[i].processor = -1;
         computes[i].oldProcessor = procs[i];
-        computes[i].migratable = odata[i].migratable;
+        computes[i].migratable = odata.migratable;
         if (computes[i].oldProcessor >= P) 
           CmiAbort("LB Panic: the old processor in RefineLB cannot be found, is this in a simulation mode?");
 /*
index 343f86c4c508a262d37a6c3b8973b1d301bb15e2..f6788211a93a7f829bcc28032b7cf6bfd96b29bd 100644 (file)
@@ -23,10 +23,9 @@ void RefinerComm::create(int count, BaseLB::LDStats* _stats, int* procs)
   stats = _stats;
   Refiner::create(count, _stats, procs);
 
-  LDCommData *cdata = stats->commData;
   for (i=0; i<stats->n_comm; i++) 
   {
-       LDCommData &comm = cdata[i];
+       LDCommData &comm = stats->commData[i];
        if (!comm.from_proc()) {
           // out going message
          int computeIdx = stats->getSendHash(comm);