X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6a046487fbc7153826e8babb75ed1c9c37641c0b..748dca059aa67356f3201a486c7aac249ebd2c18:/src/smpi/internals/smpi_config.cpp diff --git a/src/smpi/internals/smpi_config.cpp b/src/smpi/internals/smpi_config.cpp index 9a4fe2efbe..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; @@ -187,10 +186,22 @@ double smpi_cfg_auto_shared_malloc_thresh(){ return _smpi_cfg_auto_shared_malloc_thresh; } -void smpi_init_options(bool called_by_smpimain) +// public version declared in smpi.h (without parameter, and with C linkage) +void smpi_init_options() { + smpi_init_options_internal(false); +} + +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); @@ -215,7 +226,7 @@ void smpi_init_options(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") @@ -227,7 +238,7 @@ void smpi_init_options(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; } @@ -257,7 +268,7 @@ void smpi_init_options(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()