Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
oops forgot one file
[simgrid.git] / src / smpi / smpi_bench.c
index 9a09864..7ab58fa 100644 (file)
@@ -7,6 +7,7 @@
 #include "private.h"
 #include "xbt/dict.h"
 #include "xbt/sysdep.h"
+#include "surf/surf.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_bench, smpi,
                                 "Logging specific to SMPI (benchmarking)");
@@ -38,30 +39,17 @@ void smpi_bench_destroy(void)
 
 static void smpi_execute_flops(double flops)
 {
-  smx_host_t host;
   smx_action_t action;
-  smx_mutex_t mutex;
-  smx_cond_t cond;
-  e_surf_action_state_t state;
-
+  smx_host_t host;
   host = SIMIX_host_self();
-  mutex = SIMIX_mutex_init();
-  cond = SIMIX_cond_init();
+
   DEBUG1("Handle real computation time: %f flops", flops);
-  action = SIMIX_action_execute(host, "computation", flops);
-  SIMIX_mutex_lock(mutex);
-  SIMIX_register_action_to_condition(action, cond);
-  for (state = SIMIX_action_get_state(action);
-       state == SURF_ACTION_READY ||
-       state == SURF_ACTION_RUNNING;
-       state = SIMIX_action_get_state(action)) {
-    SIMIX_cond_wait(cond, mutex);
-  }
-  SIMIX_unregister_action_to_condition(action, cond);
-  SIMIX_mutex_unlock(mutex);
-  SIMIX_action_destroy(action);
-  SIMIX_cond_destroy(cond);
-  SIMIX_mutex_destroy(mutex);
+  action = SIMIX_req_host_execute("computation", host, flops);
+#ifdef HAVE_TRACING
+  SIMIX_req_set_category (action, TRACE_internal_smpi_get_category());
+#endif
+  SIMIX_req_host_execution_wait(action);
+  SIMIX_req_host_execution_destroy(action);
 }
 
 static void smpi_execute(double duration)
@@ -74,27 +62,17 @@ static void smpi_execute(double duration)
   }
 }
 
-void smpi_bench_begin(int rank, const char *mpi_call)
+void smpi_bench_begin(void)
 {
-  if (mpi_call && rank >= 0
-      && xbt_cfg_get_int(_surf_cfg_set, "smpi/log_events")) {
-    INFO3("SMPE: ts=%f rank=%d type=end et=%s", SIMIX_get_clock(), rank,
-          mpi_call);
-  }
   xbt_os_timer_start(smpi_process_timer());
 }
 
-void smpi_bench_end(int rank, const char *mpi_call)
+void smpi_bench_end(void)
 {
   xbt_os_timer_t timer = smpi_process_timer();
 
   xbt_os_timer_stop(timer);
   smpi_execute(xbt_os_timer_elapsed(timer));
-  if (mpi_call && rank >= 0
-      && xbt_cfg_get_int(_surf_cfg_set, "smpi/log_events")) {
-    INFO3("SMPE: ts=%f rank=%d type=begin et=%s", SIMIX_get_clock(), rank,
-          mpi_call);
-  }
 }
 
 unsigned int smpi_sleep(unsigned int secs)
@@ -128,7 +106,7 @@ void smpi_sample_1(int global, const char *file, int line, int max)
   char *loc = sample_location(global, file, line);
   local_data_t *data;
 
-  smpi_bench_end(-1, NULL);     /* Take time from previous MPI call into account */
+  smpi_bench_end();     /* Take time from previous MPI call into account */
   if (!samples) {
     samples = xbt_dict_new();
   }
@@ -166,7 +144,7 @@ int smpi_sample_2(int global, const char *file, int line)
     data->started = 0;
   }
   free(loc);
-  smpi_bench_begin(-1, NULL);
+  smpi_bench_begin();
   smpi_process_simulated_start();
   return data->started;
 }
@@ -181,7 +159,7 @@ void smpi_sample_3(int global, const char *file, int line)
   if (!data || !data->started || data->count >= data->max) {
     xbt_assert0(data, "Please, do thing in order");
   }
-  smpi_bench_end(-1, NULL);
+  smpi_bench_end();
   data->time += smpi_process_simulated_elapsed();
   DEBUG2("Average mean after %d steps is %f", data->count,
          data->time / (double) data->count);