Cleaning up strategies.
authorTerry L. Wilmarth <wilmarth@uiuc.edu>
Tue, 12 Oct 2004 14:29:24 +0000 (14:29 +0000)
committerTerry L. Wilmarth <wilmarth@uiuc.edu>
Tue, 12 Oct 2004 14:29:24 +0000 (14:29 +0000)
src/libs/ck-libs/pose/adapt.C
src/libs/ck-libs/pose/adapt2.C
src/libs/ck-libs/pose/adapt3.C
src/libs/ck-libs/pose/adapt3.h
src/libs/ck-libs/pose/gvt.C
src/libs/ck-libs/pose/pose.C
src/libs/ck-libs/pose/pose_config.h

index d66153489e99c1e562a054273b44f23a417107a5..a8be19754d6bddf758f264fa39be84334321c921 100644 (file)
@@ -8,13 +8,13 @@ void adapt::Step()
   static POSE_TimeType lastGVT = localPVT->getGVT();
   int iter=0;
 
+  rbFlag = 0;
   if (!parent->cancels.IsEmpty()) CancelUnexecutedEvents();
-  if (eq->RBevent) {
-    timeLeash = MIN_LEASH; // shrink speculative window
-    Rollback(); 
-  }
+  if (eq->RBevent) Rollback(); 
   if (!parent->cancels.IsEmpty()) CancelEvents();
 
+  if (rbFlag) timeLeash = MIN_LEASH;
+  else if (timeLeash < MAX_LEASH) timeLeash += LEASH_FLEX; //expand spec window
   // Shorten the leash as we near POSE_endtime
   if ((POSE_endtime > POSE_UnsetTS) && (lastGVT + timeLeash > POSE_endtime))
     timeLeash = POSE_endtime - lastGVT + 1;
@@ -35,6 +35,5 @@ void adapt::Step()
 #ifdef POSE_STATS_ON
   if (iter > 0) localStats->Loop();
 #endif  
-  if (timeLeash < MAX_LEASH) timeLeash += LEASH_FLEX; // expand spec window
 }
 
index 88478000ad10573cd5360ae8e7a86260d36523db..ef58450b2ae6caf910b26e177006e503c982223d 100644 (file)
@@ -8,14 +8,16 @@ void adapt2::Step()
   static POSE_TimeType lastGVT = lastGVT = localPVT->getGVT();
   int iter=0;
 
+  rbFlag = 0;
   if (!parent->cancels.IsEmpty()) CancelUnexecutedEvents();
-  if (eq->RBevent) {
-    timeLeash = eq->RBevent->timestamp - lastGVT;
-    if (timeLeash < MIN_LEASH) timeLeash = MIN_LEASH;
-    Rollback(); 
-  }
+  if (eq->RBevent) Rollback(); 
   if (!parent->cancels.IsEmpty()) CancelEvents();
 
+  if (rbFlag) {
+    timeLeash = eq->currentPtr->timestamp - lastGVT;
+    if (timeLeash < MIN_LEASH) timeLeash = MIN_LEASH;
+  }
+  else if (timeLeash < MAX_LEASH) timeLeash += LEASH_FLEX;
   // Shorten the leash as we near POSE_endtime
   if ((POSE_endtime > POSE_UnsetTS) && (lastGVT + timeLeash > POSE_endtime))
     timeLeash = POSE_endtime - lastGVT;
@@ -36,6 +38,5 @@ void adapt2::Step()
 #ifdef POSE_STATS_ON
   if (iter > 0) localStats->Loop();
 #endif  
-  if (timeLeash < MAX_LEASH) timeLeash += LEASH_FLEX;
 }
 
index 4a1dd55a7edf59f48e0dff3fed4fcf2ead16cf00..735c102a9e7997f62fb160b4244a52cabb537084 100644 (file)
@@ -8,16 +8,16 @@ void adapt3::Step()
   static POSE_TimeType lastGVT = localPVT->getGVT();
   int iter=0;
   double critStart;
-  rbFlag = 0;
+
+  //rbFlag = 0;
   if (!parent->cancels.IsEmpty()) CancelUnexecutedEvents();
   if (eq->RBevent) Rollback();
   if (!parent->cancels.IsEmpty()) CancelEvents();
  
   if (eq->currentPtr->timestamp > POSE_UnsetTS) {
     timeLeash = eq->largest - lastGVT;
-    if (rbFlag) timeLeash = (timeLeash + avgRBoffset)/2;
-    else if (specEventCount > (1.5*eventCount)) 
+    //if (rbFlag) timeLeash = (timeLeash + avgRBoffset)/2;
+    if (specEventCount > (specTol*eventCount)) 
       timeLeash = eq->currentPtr->timestamp - lastGVT;
   }
   // Shorten the leash as we near POSE_endtime
@@ -60,6 +60,5 @@ void adapt3::Step()
     localStats->Loop();
 #endif
   }
-  rbFlag = 0;
 }
  
index 419d8aac350c696d0251672ba64f073da0918f0f..aea5c4f46e5961d1e94d1d18ed33d501f396c4e3 100644 (file)
@@ -21,7 +21,7 @@ class adapt3 : public opt3 {
  public:
   adapt3() { 
     timeLeash = SPEC_WINDOW; STRAT_T = ADAPT3_T; 
-    specTol = 1.0 + 1.0/((double)(CkNumPes() * CkNumPes() * CkNumPes()));  
+    specTol = 1.0 + 0.1*(log((double)CkNumPes())/log(2.0));
   }
   virtual void Step();
 };
index 5d97852eaf98afd2a561ac33591c92813cfeb117..efd586aaa99e472344c41143a87a2685b79a06e9 100644 (file)
@@ -115,7 +115,7 @@ void PVT::setGVT(GVTMsg *m)
   estGVT = m->estGVT;
 #ifdef POSE_COMM_ON  
   PrioStreaming *pstrat = (PrioStreaming *)(POSE_commlib_insthndl.getStrategy());
-  pstrat->setBasePriority(estGVT + 1);
+  pstrat->setBasePriority(estGVT-1);
 #endif
   simdone = m->done;
   CkFreeMsg(m);
index fe0aa7fa8621201a1e4eb6f318ce17d15d96a4af..479e2b8b74ba89e56b4e1ef01a6ae139d5f15a02 100644 (file)
@@ -43,7 +43,6 @@ void POSE_init(int IDflag, int ET) // can specify both
   // Create the communication library for POSE
   POSE_commlib_insthndl = CkGetComlibInstance();
   // Create the communication strategy for POSE
-  //DummyStrategy *strategy = new DummyStrategy();
   //StreamingStrategy *strategy =new StreamingStrategy(COMM_TIMEOUT,COMM_MAXMSG);
   PrioStreaming *strategy =new PrioStreaming(COMM_TIMEOUT,COMM_MAXMSG);
   //Register the strategy
index 333fad67b34ee697ca439a7cf4e2d83b09f9f87d..71a8d7d677150152d4181d94cb37702c06b9b43d 100644 (file)
@@ -42,9 +42,9 @@
 /// Synchronization strategy constants
 #define MAX_ITERATIONS 100  // maximum forward executions per Step call
 #define STORE_RATE 10       // default checkpoint rate: 1 for every n events
-#define SPEC_WINDOW 1000      // speculative event window size
+#define SPEC_WINDOW 100      // speculative event window size
 #define MIN_LEASH 10        // min speculative window for adaptive strategy
-#define MAX_LEASH 5000        // max  "     "     "     "        "     "
+#define MAX_LEASH 200        // max  "     "     "     "        "     "
 #define LEASH_FLEX 10        // leash increment
 
 /// Load balancer constants