From: Martin Quinson Date: Sat, 4 Aug 2012 15:41:13 +0000 (+0200) Subject: and now, get the execution sampling macros work also when the user gives a maximal... X-Git-Tag: v3_8~201 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/ed942943b99e8a53737f1403c2f753fbda07b648?ds=sidebyside and now, get the execution sampling macros work also when the user gives a maximal stderr AND a minimal execution count (hopefully) --- diff --git a/src/smpi/smpi_bench.c b/src/smpi/smpi_bench.c index f2a5feff80..c3628c8dc1 100644 --- a/src/smpi/smpi_bench.c +++ b/src/smpi/smpi_bench.c @@ -217,8 +217,13 @@ static char *sample_location(int global, const char *file, int line) { } } static int sample_enough_benchs(local_data_t *data) { - int res = (data->iters > 0 && data->count >= data->iters) - || (data->count > 2 && data->threshold > 0.0 && data->relstderr <= data->threshold); + int res = data->count >= data->iters; + if (data->threshold>0.0) { + if (data->count <2) + res = 0; // not enough data + if (data->relstderr > data->threshold) + res = 0; // stderr too high yet + } XBT_DEBUG("%s (count:%d iter:%d stderr:%f thres:%f mean:%fs)", (res?"enough benchs":"need more data"), data->count, data->iters, data->relstderr, data->threshold, data->mean); @@ -236,6 +241,8 @@ void smpi_sample_1(int global, const char *file, int line, int iters, double thr data = xbt_dict_get_or_null(samples, loc); if (!data) { + xbt_assert(threshold>0 || iters>0, + "You should provide either a positive amount of iterations to bench, or a positive maximal stderr (or both)"); data = (local_data_t *) xbt_new(local_data_t, 1); data->count = 0; data->sum = 0.0;