]> AND Public Git Repository - simgrid.git/blobdiff - src/simgrid/sg_config.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix infinite recursion.
[simgrid.git] / src / simgrid / sg_config.cpp
index e60efa33bade5d04a4e977b2cd84a5e089aef671..0fa1bebb497b1150df83847e0160604e8fb548fa 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
@@ -343,18 +338,7 @@ void sg_config_init(int *argc, char **argv)
                                                                 default_synchro_mode,
                                                                 &_sg_cfg_cb_contexts_parallel_mode};
 
-  // For smpi/bw-factor and smpi/lat-factor
   // SMPI model can be used without enable_smpi, so keep this out of the ifdef.
-  simgrid::config::declare_flag<std::string>("smpi/bw-factor",
-                                             "Bandwidth factors for smpi. Format: "
-                                             "'threshold0:value0;threshold1:value1;...;thresholdN:valueN', "
-                                             "meaning if(size >=thresholdN ) return valueN.",
-                                             "65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493;"
-                                             "1426:0.608902;732:0.341987;257:0.338112;0:0.812084");
-
-  simgrid::config::declare_flag<std::string>("smpi/lat-factor", "Latency factors for smpi.",
-                                             "65472:11.6436;15424:3.48845;9376:2.59299;5776:2.18796;3484:1.88101;"
-                                             "1426:1.61075;732:1.9503;257:1.95341;0:2.01467");
   static simgrid::config::Flag<std::string> cfg_smpi_IB_penalty_factors{
       "smpi/IB-penalty-factors",
       "Correction factor to communications using Infiniband model with "