Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
allow smpi/init option in replay as well.
authorAugustin Degomme <adegomme@users.noreply.github.com>
Sat, 7 Aug 2021 21:38:35 +0000 (23:38 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Sat, 7 Aug 2021 21:38:35 +0000 (23:38 +0200)
src/smpi/include/smpi_config.hpp
src/smpi/internals/smpi_config.cpp
src/smpi/internals/smpi_global.cpp
src/smpi/internals/smpi_replay.cpp

index 2eb9706..b26cbfb 100644 (file)
@@ -25,6 +25,7 @@ extern XBT_PRIVATE simgrid::config::Flag<bool> _smpi_cfg_trace_call_location;
 extern XBT_PRIVATE simgrid::config::Flag<std::string> _smpi_cfg_comp_adjustment_file;
 extern XBT_PRIVATE simgrid::config::Flag<bool> _smpi_cfg_default_errhandler_is_error;
 extern XBT_PRIVATE simgrid::config::Flag<bool> _smpi_cfg_pedantic;
+extern XBT_PRIVATE simgrid::config::Flag<double> _smpi_init_sleep;
 #if HAVE_PAPI
 extern XBT_PRIVATE simgrid::config::Flag<std::string> _smpi_cfg_papi_events_file;
 #endif
index 0c5dfcc..2c9cd03 100644 (file)
@@ -113,6 +113,8 @@ simgrid::config::Flag<bool> _smpi_cfg_default_errhandler_is_error{
   "smpi/errors-are-fatal", "Whether MPI errors are fatal or just return. Default is true", true };
 simgrid::config::Flag<bool> _smpi_cfg_pedantic{
   "smpi/pedantic", "Activate extra checks that may crash slightly incorrect codes which would not crash on actual implementations", true };
+simgrid::config::Flag<double> _smpi_init_sleep(
+  "smpi/init", "Time to inject inside a call to MPI_Init", 0.0);
 #if HAVE_PAPI
   simgrid::config::Flag<std::string> _smpi_cfg_papi_events_file{"smpi/papi-events",
                                                                 "This switch enables tracking the specified counters with PAPI", ""};
index 17b050a..1f5d790 100644 (file)
@@ -77,8 +77,6 @@ static std::vector<std::string> privatize_libs_paths;
 // No instance gets manually created; check also the smpirun.in script as
 // this default name is used there as well (when the <actor> tag is generated).
 static const std::string smpi_default_instance_name("smpirun");
-static simgrid::config::Flag<double> smpi_init_sleep(
-  "smpi/init", "Time to inject inside a call to MPI_Init", 0.0);
 
 static simgrid::config::Flag<std::string>
     smpi_hostfile("smpi/hostfile",
@@ -633,8 +631,8 @@ void SMPI_finalize()
 
 void smpi_mpi_init() {
   smpi_init_fortran_types();
-  if(smpi_init_sleep > 0)
-    simgrid::s4u::this_actor::sleep_for(smpi_init_sleep);
+  if(_smpi_init_sleep > 0)
+    simgrid::s4u::this_actor::sleep_for(_smpi_init_sleep);
 }
 
 void SMPI_thread_create() {
index 966fbdb..c94b93c 100644 (file)
@@ -8,6 +8,7 @@
 #include "smpi_datatype.hpp"
 #include "smpi_group.hpp"
 #include "smpi_request.hpp"
+#include "smpi_config.hpp"
 #include "simgrid/s4u/Exec.hpp"
 #include "xbt/replay.hpp"
 #include <simgrid/smpi/smpi_replay.hpp>
@@ -850,6 +851,8 @@ void smpi_replay_init(const char* instance_id, int rank, double start_delay_flop
     // Wait for the other actors to initialize also
     simgrid::s4u::this_actor::yield();
   }
+  if(_smpi_init_sleep > 0)
+    simgrid::s4u::this_actor::sleep_for(_smpi_init_sleep);
 }
 
 /** @brief actually run the replay after initialization */