X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ccd4b5d32f5721eedd11d375e7453694c638834a..748dca059aa67356f3201a486c7aac249ebd2c18:/src/smpi/internals/smpi_config.cpp diff --git a/src/smpi/internals/smpi_config.cpp b/src/smpi/internals/smpi_config.cpp index 8165bad124..41f771eb47 100644 --- a/src/smpi/internals/smpi_config.cpp +++ b/src/smpi/internals/smpi_config.cpp @@ -30,7 +30,6 @@ constexpr bool HAVE_WORKING_MMAP = false; constexpr bool HAVE_WORKING_MMAP = true; #endif -bool _smpi_options_initialized=false; SharedMallocType _smpi_cfg_shared_malloc = SharedMallocType::GLOBAL; SmpiPrivStrategies _smpi_cfg_privatization = SmpiPrivStrategies::NONE; double _smpi_cfg_host_speed; @@ -193,10 +192,16 @@ void smpi_init_options() smpi_init_options_internal(false); } -void smpi_init_options_internal(bool called_by_smpimain) +void smpi_init_options_internal(bool called_by_smpi_main) { + static bool smpi_options_initialized = false; + static bool running_with_smpi_main = false; + + if (called_by_smpi_main) + running_with_smpi_main = true; + // return if already called - if(_smpi_options_initialized) + if (smpi_options_initialized) return; simgrid::config::declare_flag("smpi/display-timing", "Whether we should display the timing after simulation.", false); simgrid::config::declare_flag("smpi/keep-temps", "Whether we should keep the generated temporary files.", false); @@ -221,7 +226,7 @@ void smpi_init_options_internal(bool called_by_smpimain) simgrid::config::declare_flag( "smpi/privatization", "How we should privatize global variable at runtime (no, yes, mmap, dlopen).", - default_privatization, [called_by_smpimain](const std::string& smpi_privatize_option) { + default_privatization, [](const std::string& smpi_privatize_option) { if (smpi_privatize_option == "no" || smpi_privatize_option == "0") _smpi_cfg_privatization = SmpiPrivStrategies::NONE; else if (smpi_privatize_option == "yes" || smpi_privatize_option == "1") @@ -233,7 +238,7 @@ void smpi_init_options_internal(bool called_by_smpimain) else xbt_die("Invalid value for smpi/privatization: '%s'", smpi_privatize_option.c_str()); - if (not called_by_smpimain) { + if (not running_with_smpi_main) { XBT_DEBUG("Running without smpi_main(); disable smpi/privatization."); _smpi_cfg_privatization = SmpiPrivStrategies::NONE; } @@ -263,7 +268,7 @@ void smpi_init_options_internal(bool called_by_smpimain) simgrid::config::declare_flag("smpi/finalization-barrier", "Do we add a barrier in MPI_Finalize or not", false); - _smpi_options_initialized=true; + smpi_options_initialized = true; } void smpi_check_options()