Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Fixed smpi_replay_init()
[simgrid.git] / src / smpi / smpi_replay.c
index 1636ea5..96cdbde 100644 (file)
@@ -1019,7 +1019,7 @@ void smpi_replay_init(int *argc, char***argv){
   TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
 
-  if (!smpi_process_index()){
+  if (!action_funs){
     _xbt_replay_action_init();
     xbt_replay_action_register("init",       action_init);
     xbt_replay_action_register("finalize",   action_finalize);
@@ -1055,7 +1055,12 @@ void smpi_replay_init(int *argc, char***argv){
       THROWF(unknown_error, 0, "%s is not a double", (*argv)[2]);
     XBT_VERB("Delayed start for instance - Sleeping for %f flops ",value );
     smpi_execute_flops(value);
+  } else {
+    //UGLY done to force context switch to be sure that all MSG_process begin initialization
+    XBT_VERB("Force context switch by smpi_execute_flops  - Sleeping for 0.0 flops ");
+    smpi_execute_flops(0.0);
   }
+  
   xbt_replay_action_runner(*argc, *argv);
 }