Parcourir la source

Accept going outside of benchmarked nl regression by 10%. Force calibration otherwise

Samuel Thibault il y a 13 ans
Parent
commit
aeff50217e
1 fichiers modifiés avec 6 ajouts et 1 suppressions
  1. 6 1
      src/core/perfmodel/perfmodel_history.c

+ 6 - 1
src/core/perfmodel/perfmodel_history.c

@@ -878,7 +878,7 @@ double _starpu_non_linear_regression_based_job_expected_perf(struct starpu_perfm
 
 	regmodel = &model->per_arch[arch][nimpl].regression;
 
-	if (regmodel->nl_valid && size >= regmodel->minx && size <= regmodel->maxx)
+	if (regmodel->nl_valid && size >= regmodel->minx * 0.9 && size <= regmodel->maxx * 1.1)
 		exp = regmodel->a*pow((double)size, regmodel->b) + regmodel->c;
 	else {
 		uint32_t key = _starpu_compute_buffers_footprint(j);
@@ -892,6 +892,11 @@ double _starpu_non_linear_regression_based_job_expected_perf(struct starpu_perfm
 
 		if (entry && entry->nsample >= STARPU_CALIBRATION_MINIMUM)
 			exp = entry->mean;
+		else if (!model->benchmarking) {
+			_STARPU_DISP("Warning: model %s is not calibrated enough, forcing calibration for this run. Use the STARPU_CALIBRATE environment variable to control this.\n", model->symbol);
+			_starpu_set_calibrate_flag(1);
+			model->benchmarking = 1;
+		}
 	}
 
 	return exp;