The weighting is actually quadratic; i.e., when the job is half done
the estimate is 75% from the dynamic and 25% from the static.

However, I think I see a serious bug in the code (see below).
Anyone else see it?

-- David

// Returns the estimated CPU time to completion (in seconds) of this task.
// Compute this as a weighted average of estimates based on
// 1) the workunit's flops count
// 2) the current reported CPU time and fraction done
//
double ACTIVE_TASK::est_time_to_completion(bool for_work_fetch) {
     if (fraction_done >= 1) return 0;
     double wu_est = result->estimated_duration(for_work_fetch);
     if (fraction_done <= 0) return wu_est;
     double frac_est = (elapsed_time / fraction_done) - elapsed_time;
     double fraction_left = 1-fraction_done;
     double wu_weight = fraction_left * fraction_left;
     double fd_weight = 1 - wu_weight;
     double x = fd_weight*frac_est + wu_weight*fraction_left*wu_est;
     return x;
}

double RESULT::estimated_duration(bool) {
     return 
estimated_duration_uncorrected()*project->duration_correction_factor;
}

double RESULT::estimated_duration_uncorrected() {
     return wup->rsc_fpops_est/avp->flops;
}
_______________________________________________
boinc_dev mailing list
[email protected]
http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev
To unsubscribe, visit the above URL and
(near bottom of page) enter your email address.

Reply via email to