From: Martin Quinson Date: Sun, 18 Aug 2019 15:01:40 +0000 (+0200) Subject: Apply the default settings of 'smpi/buffering' too X-Git-Tag: v3.24~167 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6d004c352f7b26fba38486001f874e65466b5bee?hp=b752ecbcf5c35ea3eb8b7a86b0ac6671a4e8611f Apply the default settings of 'smpi/buffering' too Previously, we did obey to that option when given, but the default value was ignored. This is because the handling was done in the value verification callback, that is not used for the default value. --- diff --git a/src/mc/mc_config.cpp b/src/mc/mc_config.cpp index 1ab68c0c8d..265601dcfc 100644 --- a/src/mc/mc_config.cpp +++ b/src/mc/mc_config.cpp @@ -73,20 +73,13 @@ simgrid::config::Flag _sg_mc_send_determinism{ _mc_cfg_cb_check("value to enable/disable the detection of send-determinism in the communications schemes"); }}; -static simgrid::config::Flag _sg_mc_buffering{ - "smpi/buffering", "Buffering semantic to use for MPI (only used in MC)", "zero", [](const std::string& value) { - try { - if (value == "zero") - simgrid::config::set_value("smpi/send-is-detached-thresh", 0); - else if (value == "infty") - simgrid::config::set_value("smpi/send-is-detached-thresh", INT_MAX); - else - xbt_die("configuration option 'smpi/buffering' can only take 'zero' or 'infty' as a value"); - } catch (std::out_of_range& e) { - /* If the 'smpi/send-is-detached-thresh' does not exist, we are in the MCer process, where this option makes no - * sense, so just ignore it */ - } - }}; +simgrid::config::Flag _sg_mc_buffering{ + "smpi/buffering", + "Buffering semantic to use for MPI (only used in MC)", + "zero", + {{"zero", "No system buffering: MPI_Send is blocking"}, + {"infty", "Infinite system buffering: MPI_Send returns immediately"}}, + [](const std::string& value) { _mc_cfg_cb_check("buffering mode"); }}; static simgrid::config::Flag _sg_mc_reduce{ "model-check/reduction", "Specify the kind of exploration reduction (either none or DPOR)", "dpor", diff --git a/src/mc/mc_config.hpp b/src/mc/mc_config.hpp index 61d2c35765..391d789a14 100644 --- a/src/mc/mc_config.hpp +++ b/src/mc/mc_config.hpp @@ -10,6 +10,7 @@ /********************************** Configuration of MC **************************************/ extern "C" XBT_PUBLIC int _sg_do_model_check; +extern XBT_PUBLIC simgrid::config::Flag _sg_mc_buffering; extern XBT_PUBLIC simgrid::config::Flag _sg_mc_record_path; extern XBT_PRIVATE simgrid::config::Flag _sg_mc_checkpoint; extern XBT_PUBLIC simgrid::config::Flag _sg_mc_property_file; diff --git a/src/smpi/internals/smpi_global.cpp b/src/smpi/internals/smpi_global.cpp index 0feadab4b8..5621fb0e7c 100644 --- a/src/smpi/internals/smpi_global.cpp +++ b/src/smpi/internals/smpi_global.cpp @@ -25,6 +25,10 @@ #include #include +#if SIMGRID_HAVE_MC +#include "src/mc/mc_config.hpp" +#endif + #if SG_HAVE_SENDFILE #include #endif @@ -224,9 +228,21 @@ void smpi_comm_null_copy_buffer_callback(simgrid::kernel::activity::CommImpl*, v static void smpi_check_options() { - //check correctness of MPI parameters +#if SIMGRID_HAVE_MC + if (MC_is_active()) { + if (_sg_mc_buffering == "zero") + simgrid::config::set_value("smpi/send-is-detached-thresh", 0); + else if (_sg_mc_buffering == "infty") + simgrid::config::set_value("smpi/send-is-detached-thresh", INT_MAX); + else + THROW_IMPOSSIBLE; + } +#endif xbt_assert(simgrid::config::get_value("smpi/async-small-thresh") <= + simgrid::config::get_value("smpi/send-is-detached-thresh"), + "smpi/async-small-thresh (=%d) should be smaller or equal to smpi/send-is-detached-thresh (=%d)", + simgrid::config::get_value("smpi/async-small-thresh"), simgrid::config::get_value("smpi/send-is-detached-thresh")); if (simgrid::config::is_default("smpi/host-speed") && not MC_is_active()) {