From ed942943b99e8a53737f1403c2f753fbda07b648 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 4 Aug 2012 17:41:13 +0200 Subject: [PATCH] and now, get the execution sampling macros work also when the user gives a maximal stderr AND a minimal execution count (hopefully) --- src/smpi/smpi_bench.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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; -- 2.20.1