Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
New MC option: smpi/buffering, to control MPI buffering
[simgrid.git] / src / mc / mc_config.cpp
index 5f6568b..1ab68c0 100644 (file)
@@ -9,6 +9,8 @@
 #include "src/mc/mc_safety.hpp"
 #endif
 
+#include <climits>
+
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_config, mc, "Configuration of the Model Checker");
 
 #if SIMGRID_HAVE_MC
@@ -18,9 +20,7 @@ namespace mc {
 simgrid::mc::ReductionMode reduction_mode = simgrid::mc::ReductionMode::unset;
 }
 }
-#endif
-
-#if !SIMGRID_HAVE_MC
+#else
 #define _sg_do_model_check 0
 #endif
 
@@ -51,9 +51,6 @@ simgrid::config::Flag<int> _sg_mc_checkpoint{
                               "compromises between speed and memory consumption.",
     0, [](int) { _mc_cfg_cb_check("checkpointing value"); }};
 
-simgrid::config::Flag<bool> _sg_mc_sparse_checkpoint{"model-check/sparse-checkpoint", "Use sparse per-page snapshots.",
-                                                     false, [](bool) { _mc_cfg_cb_check("checkpointing value"); }};
-
 simgrid::config::Flag<std::string> _sg_mc_property_file{
     "model-check/property", "Name of the file containing the property, as formatted by the ltl2ba program.", "",
     [](const std::string&) { _mc_cfg_cb_check("property"); }};
@@ -76,6 +73,21 @@ simgrid::config::Flag<bool> _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<std::string> _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<int>("smpi/send-is-detached-thresh", 0);
+        else if (value == "infty")
+          simgrid::config::set_value<int>("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 */
+      }
+    }};
+
 static simgrid::config::Flag<std::string> _sg_mc_reduce{
     "model-check/reduction", "Specify the kind of exploration reduction (either none or DPOR)", "dpor",
     [](const std::string& value) {
@@ -89,10 +101,6 @@ static simgrid::config::Flag<std::string> _sg_mc_reduce{
         xbt_die("configuration option model-check/reduction can only take 'none' or 'dpor' as a value");
     }};
 
-simgrid::config::Flag<bool> _sg_mc_hash{
-    "model-check/hash", "Whether to enable state hash for state comparison (experimental)", false,
-    [](bool) { _mc_cfg_cb_check("value to enable/disable the use of global hash to speedup state comparaison"); }};
-
 simgrid::config::Flag<int> _sg_mc_max_depth{"model-check/max-depth",
                                             {"model-check/max_depth"},
                                             "Maximal exploration depth (default: 1000)",