X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0cf6c791bd19e8b9acf8e220c5c62216c7fc2559..d8646277c6b3e1e80c499bc2d73938a0a4f555a8:/src/mc/mc_config.cpp diff --git a/src/mc/mc_config.cpp b/src/mc/mc_config.cpp index a75b8b6778..64a0e29a79 100644 --- a/src/mc/mc_config.cpp +++ b/src/mc/mc_config.cpp @@ -14,7 +14,15 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(xbt_cfg); -simgrid::mc::ModelCheckingMode simgrid::mc::model_checking_mode = simgrid::mc::ModelCheckingMode::NONE; +static simgrid::mc::ModelCheckingMode model_checking_mode = simgrid::mc::ModelCheckingMode::NONE; +simgrid::mc::ModelCheckingMode simgrid::mc::get_model_checking_mode() +{ + return model_checking_mode; +} +void simgrid::mc::set_model_checking_mode(simgrid::mc::ModelCheckingMode mode) +{ + model_checking_mode = mode; +} static void _mc_cfg_cb_check(const char* spec, bool more_check = true) { @@ -28,12 +36,14 @@ static void _mc_cfg_cb_check(const char* spec, bool more_check = true) simgrid::config::Flag _sg_mc_record_path{ "model-check/replay", "Model-check path to replay (as reported by SimGrid when a violation is reported)", "", [](std::string_view value) { - xbt_assert(value.empty() || simgrid::mc::model_checking_mode == simgrid::mc::ModelCheckingMode::NONE || - simgrid::mc::model_checking_mode == simgrid::mc::ModelCheckingMode::REPLAY, + if (value.empty()) // Ignore default value + return; + xbt_assert(simgrid::mc::get_model_checking_mode() == simgrid::mc::ModelCheckingMode::NONE || + simgrid::mc::get_model_checking_mode() == simgrid::mc::ModelCheckingMode::REPLAY, "Specifying a MC replay path is not allowed when running the model-checker in mode %s. " "Either remove the model-check/replay parameter, or execute your code out of simgrid-mc.", - to_c_str(simgrid::mc::model_checking_mode)); - simgrid::mc::model_checking_mode = simgrid::mc::ModelCheckingMode::REPLAY; + to_c_str(simgrid::mc::get_model_checking_mode())); + simgrid::mc::set_model_checking_mode(simgrid::mc::ModelCheckingMode::REPLAY); MC_record_path() = value; }}; @@ -56,10 +66,13 @@ simgrid::config::Flag _sg_mc_sleep_set{ [](bool) { _mc_cfg_cb_check("value to enable/disable the use of sleep-set in the reduction algorithm"); }}; simgrid::config::Flag _sg_mc_strategy{ - "model-check/strategy", "Specify the the kind of heuristic to use for guided model-checking", "none", - [](std::string_view value) { - if (value != "none" && value != "nb_wait") - xbt_die("configuration option 'model-check/guided-mc' can only take 'none' or 'nb_wait' as a value"); + "model-check/strategy", + "Specify the the kind of heuristic to use for guided model-checking", + "none", + {{"none", "No specific strategy: simply pick the first available transistion and act as a DFS."}, + {"max_match_comm", "Try to minimize the number of in-fly communication by appairing matching send and receive."}, + {"min_match_comm", "Try to maximize the number of in-fly communication by not appairing matching send and receive."}, + {"uniform", "No specific strategy: choices are made randomly based on a uniform sampling."} }}; #if SIMGRID_HAVE_STATEFUL_MC