Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a test to avoid calling the function SIMIX_action_cancel with a NULL parameter.
[simgrid.git] / src / smpi / smpi_bench.c
index ec81226..cc81f08 100644 (file)
@@ -7,15 +7,19 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_bench, smpi,
 void smpi_execute(double duration)
 {
   smx_host_t host = SIMIX_host_self();
-  smx_mutex_t mutex = smpi_host_mutex();
-  smx_cond_t cond = smpi_host_cond();
+  smx_mutex_t mutex = smpi_process_mutex();
+  smx_cond_t cond = smpi_process_cond();
   smx_action_t action;
   e_surf_action_state_t state;
 
+  if (duration < 0.001)
+    return;
+  DEBUG1("Sleep for %f to handle real computation time",duration);
   SIMIX_mutex_lock(mutex);
 
   action =
-    SIMIX_action_execute(host, "execute", duration * SMPI_DEFAULT_SPEED);
+    SIMIX_action_execute(host, "execute",
+                         duration * smpi_global->reference_speed);
 
   SIMIX_register_action_to_condition(action, cond);
   for (state = SIMIX_action_get_state(action);
@@ -34,7 +38,6 @@ void smpi_execute(double duration)
 
 void smpi_start_timer()
 {
-  SIMIX_mutex_lock(smpi_global->timer_mutex);
   xbt_os_timer_start(smpi_global->timer);
 }
 
@@ -43,7 +46,6 @@ double smpi_stop_timer()
   double duration;
   xbt_os_timer_stop(smpi_global->timer);
   duration = xbt_os_timer_elapsed(smpi_global->timer);
-  SIMIX_mutex_unlock(smpi_global->timer_mutex);
   return duration;
 }