X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/964e31805a6409921f1e3a2cd497c15898b4b62b..a5e649421a14d09f23290b79ebe2e61066f8efde:/src/smpi/smpi_bench.c diff --git a/src/smpi/smpi_bench.c b/src/smpi/smpi_bench.c index cdb3c5a50b..089275297c 100644 --- a/src/smpi/smpi_bench.c +++ b/src/smpi/smpi_bench.c @@ -164,7 +164,7 @@ void smpi_bench_end(void) unsigned int smpi_sleep(unsigned int secs) { smpi_bench_end(); - smpi_execute((double) secs); + smpi_execute_flops((double) secs*simcall_host_get_speed(SIMIX_host_self())); smpi_bench_begin(); return secs; } @@ -342,6 +342,13 @@ void smpi_sample_3(int global, const char *file, int line) } #ifndef WIN32 +static void smpi_shared_alloc_free(void *p) +{ + shared_data_t *data = p; + xbt_free(data->loc); + xbt_free(data); +} + void *smpi_shared_malloc(size_t size, const char *file, int line) { char *loc = bprintf("%zu_%s_%d", (size_t)getpid(), file, line); @@ -358,7 +365,7 @@ void *smpi_shared_malloc(size_t size, const char *file, int line) } } if (!allocs) { - allocs = xbt_dict_new_homogeneous(free); + allocs = xbt_dict_new_homogeneous(smpi_shared_alloc_free); } data = xbt_dict_get_or_null(allocs, loc); if(!data) { @@ -382,6 +389,7 @@ void *smpi_shared_malloc(size_t size, const char *file, int line) xbt_dict_set(allocs, loc, data, NULL); XBT_DEBUG("Mapping %s at %p through %d", loc, mem, fd); } else { + xbt_free(loc); mem = shm_map(data->fd, size, data); data->count++; } @@ -426,7 +434,6 @@ void smpi_shared_free(void *ptr) if (data->count <= 0) { close(data->fd); xbt_dict_remove(allocs, data->loc); - free(data->loc); XBT_DEBUG("Shared free - with removal - of %p", ptr); } }else{