xbt_dict_free(&calls);
}
-static void smpi_execute_flops(double flops)
-{
+void smpi_execute_flops(double flops) {
smx_action_t action;
smx_host_t host;
host = SIMIX_host_self();
}
}
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);
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;
data->benching = 0;
}
-void smpi_sample_flops(double flops)
-{
- smpi_execute_flops(flops);
-}
-
void *smpi_shared_malloc(size_t size, const char *file, int line)
{
char *loc = bprintf("%zu_%s_%d", (size_t)getpid(), file, line);