Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Parameters 'network/latency-factor' and bandwidth-factor are now strings parsed manually
[simgrid.git] / src / simgrid / sg_config.cpp
index e60efa3..0b67cdc 100644 (file)
 #include <xbt/config.hpp>
 
 #include "simgrid/sg_config.hpp"
+#include "src/include/xbt/mmalloc.h"
 #include "src/instr/instr_private.hpp"
 #include "src/internal_config.h"
 #include "src/kernel/context/Context.hpp"
 #include "src/kernel/lmm/maxmin.hpp"
+#include "src/kernel/resource/NetworkModel.hpp"
 #include "src/mc/mc_config.hpp"
 #include "src/mc/mc_replay.hpp"
 #include "src/smpi/include/smpi_config.hpp"
@@ -269,21 +271,6 @@ void sg_config_init(int *argc, char **argv)
                              "processes on each host, at higher level. (default: -1 means no such limitation)");
 
   /* The parameters of network models */
-
-  sg_latency_factor = 13.01; // comes from the default LV08 network model
-  simgrid::config::bind_flag(sg_latency_factor, "network/latency-factor",
-                             "Correction factor to apply to the provided latency (default value set by network model)");
-
-  sg_bandwidth_factor = 0.97; // comes from the default LV08 network model
-  simgrid::config::bind_flag(
-      sg_bandwidth_factor, "network/bandwidth-factor",
-      "Correction factor to apply to the provided bandwidth (default value set by network model)");
-
-  sg_weight_S_parameter = 20537; // comes from the default LV08 network model
-  simgrid::config::bind_flag(
-      sg_weight_S_parameter, "network/weight-S",
-      "Correction factor to apply to the weight of competing streams (default value set by network model)");
-
   static simgrid::config::Flag<double> _sg_network_loopback_latency{
       "network/loopback-lat",
       "For network models with an implicit loopback link (L07, CM02, LV08), "
@@ -327,9 +314,17 @@ void sg_config_init(int *argc, char **argv)
   static simgrid::config::Flag<int> cfg_context_guard_size{
       "contexts/guard-size", "Guard size for contexts stacks in memory pages", default_guard_size,
       [](int value) { simgrid::kernel::context::guard_size = value * xbt_pagesize; }};
-  static simgrid::config::Flag<int> cfg_context_nthreads{"contexts/nthreads",
-                                                         "Number of parallel threads used to execute user contexts", 1,
-                                                         &simgrid::kernel::context::set_nthreads};
+
+  static simgrid::config::Flag<int> cfg_context_nthreads{
+      "contexts/nthreads", "Number of parallel threads used to execute user contexts", 1, [](int nthreads) {
+#if HAVE_MMALLOC
+        xbt_assert(
+            nthreads == 1 || not malloc_use_mmalloc(),
+            "Parallel simulation is forbidden in the verified program, as there is no protection against race "
+            "conditions in mmalloc itself. Please don't be so greedy and show some mercy for our implementation.");
+#endif
+        simgrid::kernel::context::set_nthreads(nthreads);
+      }};
 
   /* synchronization mode for parallel user contexts */
 #if HAVE_FUTEX_H