Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use of busy wait instead of futex if there is not futex.h
[simgrid.git] / src / smpi / smpi_bench.c
index 80c1896..19ecf3d 100644 (file)
@@ -57,6 +57,7 @@ static void smpi_execute_flops(double flops)
 
 static void smpi_execute(double duration)
 {
+  /* FIXME: a global variable would be less expensive to consult than a call to xbt_cfg_get_double() right on the critical path */
   if (duration >= xbt_cfg_get_double(_surf_cfg_set, "smpi/cpu_threshold")) {
     XBT_DEBUG("Sleep for %f to handle real computation time", duration);
     smpi_execute_flops(duration *
@@ -111,7 +112,7 @@ int smpi_sample_1(int global, const char *file, int line, int iters, double thre
 
   smpi_bench_end();     /* Take time from previous MPI call into account */
   if (!samples) {
-    samples = xbt_dict_new();
+    samples = xbt_dict_new_homogeneous(free);
   }
   data = xbt_dict_get_or_null(samples, loc);
   if (!data) {
@@ -122,7 +123,7 @@ int smpi_sample_1(int global, const char *file, int line, int iters, double thre
     data->iters = iters;
     data->threshold = threshold;
     data->started = 0;
-    xbt_dict_set(samples, loc, data, &free);
+    xbt_dict_set(samples, loc, data, NULL);
     return 0;
   }
   free(loc);
@@ -190,13 +191,13 @@ void *smpi_shared_malloc(size_t size, const char *file, int line)
   shared_data_t *data;
 
   if (!allocs) {
-    allocs = xbt_dict_new();
+    allocs = xbt_dict_new_homogeneous(free);
   }
   data = xbt_dict_get_or_null(allocs, loc);
   if (!data) {
     data = (shared_data_t *) xbt_malloc0(sizeof(int) + size);
     data->count = 1;
-    xbt_dict_set(allocs, loc, data, &free);
+    xbt_dict_set(allocs, loc, data, NULL);
   } else {
     data->count++;
   }
@@ -230,7 +231,7 @@ int smpi_shared_known_call(const char* func, const char* input) {
    int known;
 
    if(!calls) {
-      calls = xbt_dict_new();
+      calls = xbt_dict_new_homogeneous(NULL);
    }
    TRY {
       xbt_dict_get(calls, loc); /* Succeed or throw */
@@ -253,7 +254,7 @@ void* smpi_shared_get_call(const char* func, const char* input) {
    void* data;
 
    if(!calls) {
-      calls = xbt_dict_new();
+      calls = xbt_dict_new_homogeneous(NULL);
    }
    data = xbt_dict_get(calls, loc);
    free(loc);
@@ -264,7 +265,7 @@ void* smpi_shared_set_call(const char* func, const char* input, void* data) {
    char* loc = bprintf("%s:%s", func, input);
 
    if(!calls) {
-      calls = xbt_dict_new();
+      calls = xbt_dict_new_homogeneous(NULL);
    }
    xbt_dict_set(calls, loc, data, NULL);
    free(loc);