Merge branch 'charm' of charmgit:charm into charm
[charm.git] / src / ck-cp / controlPoints.C
index a641604bcb30d2e3b4ca1bc5937ab7407c75a67d..eafa4e68bfa311003d528c42f735b5eedc716772 100644 (file)
@@ -1483,14 +1483,15 @@ void controlPointManager::generatePlan() {
       for(int i=b1; i<oldNumTimings; i++){
        s2 += times[i];
       }
-    
-    
+      
+      
       // Compute the estimated time for the last phase's data
     
-      const double a1 = s1 / ((newNumTimings-2)/2);
-      const double a2 = s2 / ((newNumTimings-2)/2);
-    
-      const double expectedTotalTime = ((5.0*a2-3.0*a1)/2.0 ) * newNumTimings;
+      const double a1 = s1 / (double)(b1-2);
+      const double a2 = s2 / (double)(oldNumTimings-b1);
+      const double aold = (a1+a2)/2.0;
+
+      const double expectedTotalTime = newNumTimings*(aold+(oldNumTimings+newNumTimings)*(a2-a1)/oldNumTimings);
         
     
       // Measure actual time
@@ -1586,9 +1587,9 @@ void controlPointManager::generatePlan() {
     
       // Compute the estimated time for the last phase's data
     
-      const double a1 = s1 / ((newNumTimings-2)/3);
-      const double a2 = s2 / ((newNumTimings-2)/3);
-      const double a3 = s3 / ((newNumTimings-2)/3);
+      const double a1 = s1 / (double)(b1-2);
+      const double a2 = s2 / (double)(b2-b1);
+      const double a3 = s3 / (double)(oldNumTimings-b2);
     
       const double a = (a1-2.0*a2+a3)/2.0;
       const double b = (a1-4.0*a2+3.0*a3)/2.0;