Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
We want the output for rank 0 as well...
[simgrid.git] / src / smpi / smpi_bench.c
index c15fc35..b9f0ab8 100644 (file)
@@ -1,30 +1,27 @@
 #include "private.h"
-#include <string.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_bench, smpi,
                                 "Logging specific to SMPI (benchmarking)");
 
-void smpi_execute(double duration)
-{
+static void smpi_execute(double duration) {
   smx_host_t host;
   smx_action_t action;
   smx_mutex_t mutex;
   smx_cond_t cond;
   e_surf_action_state_t state;
 
-
   if(duration > 0.001) {
     host = SIMIX_host_self();
     mutex = SIMIX_mutex_init();
     cond = SIMIX_cond_init();
     DEBUG1("Sleep for %f to handle real computation time", duration);
     duration *= xbt_cfg_get_double(_surf_cfg_set, "reference_speed");
-    action = SIMIX_action_sleep(host, duration);
+    action = SIMIX_action_execute(host, "computation", duration);
     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)) {
+    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);
@@ -35,17 +32,24 @@ void smpi_execute(double duration)
   }
 }
 
-void smpi_bench_begin()
-{
+void smpi_bench_begin(int rank, const char* mpi_call) {
+  double now = SIMIX_get_clock();
+
+  if(mpi_call && rank >= 0 && xbt_cfg_get_int(_surf_cfg_set, "SMPE")) {
+    INFO3("SMPE: ts=%f rank=%d type=end et=%s", now, rank, mpi_call);
+  }
   xbt_os_timer_start(smpi_process_timer());
 }
 
-void smpi_bench_end()
-{
+void smpi_bench_end(int rank, const char* mpi_call) {
   xbt_os_timer_t timer = smpi_process_timer();
+  double now = SIMIX_get_clock();
 
   xbt_os_timer_stop(timer);
   smpi_execute(xbt_os_timer_elapsed(timer));
+  if(mpi_call && rank >= 0 && xbt_cfg_get_int(_surf_cfg_set, "SMPE")) {
+    INFO3("SMPE: ts=%f rank=%d type=begin et=%s", now, rank, mpi_call);
+  }
 }
 
 /*