Fixing stat collection
authorHarshitha <gplkrsh2@illinois.edu>
Tue, 27 Mar 2012 19:09:06 +0000 (14:09 -0500)
committerHarshitha <gplkrsh2@illinois.edu>
Tue, 27 Mar 2012 19:09:06 +0000 (14:09 -0500)
examples/charm++/jacobi1d/Makefile
examples/charm++/jacobi1d/jacobi1d.C
src/ck-core/cklocation.C
src/ck-core/cklocation.h
src/ck-ldb/CentralLB.C
src/ck-ldb/LBDatabase.C

index 823ae6a8d88502ad91734938a361211ddaa2ed04..9cda60e8b70a037b88c54366185cc6c72e576c3e 100644 (file)
@@ -7,7 +7,8 @@ OBJS = jacobi1d.o
 all: jacobi1d
 
 jacobi1d: $(OBJS)
-       $(CHARMC) -language charm++ -module CommonLBs -module AdaptiveLB -module MetisLB -o jacobi1d  $(OBJS)
+       $(CHARMC) -language charm++ -module CommonLBs -o jacobi1d  $(OBJS)
+       #$(CHARMC) -language charm++ -module CommonLBs -module AdaptiveLB -module MetisLB -o jacobi1d  $(OBJS)
 
 proj: $(OBJS)
        $(CHARMC) -language charm++ -tracemode projections -o jacobi1d.prj $(OBJS)
index 80ae37a6d70ea0802fb189e182c0c00da8bc9542..8a29328621cfafe32bf43063eb6c8ef61b02ca31 100644 (file)
@@ -135,7 +135,7 @@ class Jacobi: public CBase_Jacobi {
       arrived_top = 0;
       arrived_bottom = 0;
 
-      //work = thisIndex;
+      work = thisIndex/num_chares * 10 + 1;
       work = 1;
       constrainBC();
     }
@@ -174,9 +174,10 @@ class Jacobi: public CBase_Jacobi {
     // Perform one iteration of work
     void begin_iteration(void) {
       // Send my top edge
-      thisProxy(wrap_y(thisIndex)).receiveGhosts(BOTTOM, arrayDimY, &temperature[index(1, 1)]);
-      // Send my bottom edge
-      thisProxy(wrap_y(thisIndex)).receiveGhosts(TOP, arrayDimY, &temperature[index(blockDimX,1)]);
+    //  thisProxy(wrap_y(thisIndex)).receiveGhosts(BOTTOM, arrayDimY, &temperature[index(1, 1)]);
+    //  // Send my bottom edge
+    //  thisProxy(wrap_y(thisIndex)).receiveGhosts(TOP, arrayDimY, &temperature[index(blockDimX,1)]);
+    check_and_compute();
     }
 
     void receiveGhosts(int dir, int size, double gh[]) {
@@ -205,6 +206,7 @@ class Jacobi: public CBase_Jacobi {
 
     void check_and_compute() {
       double error = 0.0, max_error = 0.0;
+      arrived_top = 1; arrived_bottom = 1;
 
       if (arrived_top >=1 && arrived_bottom >= 1) {
         arrived_top--;
index 8cee99ed23654b84b4e7f47b03165c2d66b436a3..7dcbf11118194c8763e76148eb0ca084442d5981 100644 (file)
@@ -974,6 +974,7 @@ void CkMigratable::commonInit(void) {
   atsync_iteration = -1;
   //CkPrintf("%s in init and off\n", idx2str(thisIndexMax));
   local_state = OFF;
+  prev_load = 0.0;
        /*
        FAULT_EVAC
        */
@@ -1075,25 +1076,26 @@ double CkMigratable::getObjTime() {
 
 void CkMigratable::recvLBPeriod(void *data) {
   int lb_period = *((int *) data);
-//  CkPrintf("--[pe %s] Received the LB Period %d current iter %d state %d\n",
-//      idx2str(thisIndexMax), lb_period, atsync_iteration, local_state);
+  //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));
+    //  CkPrintf("---[pe %s] pause and decided\n", idx2str(thisIndexMax));
       local_state = DECIDED;
       ResumeFromSync();
       return;
     }
-//    CkPrintf("---[pe %s] load balance\n", idx2str(thisIndexMax));
+   // CkPrintf("---[pe %s] load balance\n", idx2str(thisIndexMax));
     local_state = LOAD_BALANCE;
 
     local_state = OFF;
     atsync_iteration = -1;
+    prev_load = 0.0;
 
     myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
     return;
   }
-//  CkPrintf("---[pe %s] decided\n", idx2str(thisIndexMax));
+ // CkPrintf("---[pe %s] decided\n", idx2str(thisIndexMax));
   local_state = DECIDED;
 }
 
@@ -1126,12 +1128,27 @@ void CkMigratable::AtSync(int waitForMigration)
   // model-based load balancing, ask user to provide cpu load
   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());
-  // register handle as myRec->getLdHandle()
+  // CkPrintf("[pe %s] atsync_iter %d && predicted period %d state: %d\n",
+  //     idx2str(thisIndexMax), atsync_iteration,
+  //     myRec->getLBDB()->getPredictedLBPeriod(), local_state);
+  double tmp = prev_load;
+  prev_load = myRec->getObjTime();
+  double current_load = prev_load - tmp;
+  myRec->getLBDB()->AddLoad(atsync_iteration, current_load);
+
+  myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
+  return;
+//
+//  if (atsync_iteration == 3) {
+//    myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
+//    return;
+//  } else {
+//    ResumeFromSync();
+//    return;
+//  }
+
   if (atsync_iteration < myRec->getLBDB()->getPredictedLBPeriod()) {
     ResumeFromSync();
   } else if (local_state == DECIDED) {
@@ -1139,6 +1156,7 @@ void CkMigratable::AtSync(int waitForMigration)
     local_state = LOAD_BALANCE;
     local_state = OFF;
     atsync_iteration = -1;
+    prev_load = 0.0;
     myRec->getLBDB()->AtLocalBarrier(ldBarrierHandle);
   } else {
 //    CkPrintf("[pe %s] Went to pause state\n", idx2str(thisIndexMax));
index 56a37aa4de86933eaa815a98e1edaef69472d4a7..c074b8f6ed936646dc6351cbcb2bea7900d297fa 100644 (file)
@@ -285,6 +285,7 @@ private:
     DECIDED,
     LOAD_BALANCE
   } local_state;
+  double  prev_load;
 
 public:
   CkArrayIndex thisIndexMax;
index 891e916f242d3612f510f83ce84b52bdf5d8b5cb..0456dbc0039c22c248dadeff39f9766916fd8338 100644 (file)
@@ -272,6 +272,13 @@ void CentralLB::ProcessAtSync()
   if (CkMyPe() == cur_ld_balancer) {
     start_lb_time = CkWallTimer();
   }
+ double total_load;
+ double idle_time;
+ double bg_walltime;
+ theLbdb->GetTime(&total_load,&total_load, &idle_time, &bg_walltime, &bg_walltime);
+ theLbdb->IdleTime(&idle_time);
+ CkPrintf("Total walltime [%d] %lf: %lf: %lf final laod: %lf\n", CkMyPe(), total_load, idle_time, bg_walltime, (total_load - idle_time));
+
 
 
 #if (defined(_FAULT_MLOG_) || defined(_FAULT_CAUSAL_))
index a9ab406edcd3bebb8ec3ab1df3b1737ec0209ed5..2d3875145ec312b5d4f8607cd2bba5c2a1682a02 100644 (file)
@@ -603,10 +603,10 @@ bool LBDatabase::AddLoad(int iteration, double load) {
  // }
   if (total_contrib_vec[iteration] == getLBDB()->ObjDataCount()) {
     double idle_time;
-    double tmp;
-    GetTime(&tmp, &tmp, &idle_time, &tmp, &tmp);
-    idle_time = idle_time * iteration * getLBDB()->ObjDataCount() /
-      adaptive_struct.total_syncs_called;
+    IdleTime(&idle_time);
+    CkPrintf("Idle time %lf for iteration %d\n", idle_time, iteration);
+    idle_time = idle_time * getLBDB()->ObjDataCount() /
+       adaptive_struct.total_syncs_called;
 
     double lb_data[6];
     lb_data[0] = iteration;