Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
properly deal with network/optim (end of the ModuleGroup cleanup)
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 15 Feb 2023 23:49:30 +0000 (00:49 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 15 Feb 2023 23:49:40 +0000 (00:49 +0100)
The network/optim was abusing the model description mechanism, because
it was introduced before the options could be restricted to a list of
values. That's a pretty old cruft :)

Moreover, the config mechanism (probably) allowed network/optim:TI but then
ignored it silently. Not nice for the users.

src/simgrid/module.cpp
src/simgrid/sg_config.cpp
src/surf/network_cm02.cpp
src/surf/surf_interface.hpp

index 28647f3..2ed2f70 100644 (file)
@@ -79,17 +79,3 @@ std::string ModuleGroup::existing_values() const
   }
   return ss.str();
 }
-
-/* -------------------------------------------------------------------------------------------------------------- */
-simgrid::ModuleGroup surf_optimization_mode_description("optimization mode");
-
-void simgrid_create_models()
-{
-  surf_optimization_mode_description
-      .add("Lazy", "Lazy action management (partial invalidation in lmm + heap in action remaining).", nullptr)
-      .add("TI",
-           "Trace integration. Highly optimized mode when using availability traces (only available for the Cas01 CPU "
-           "model for now).",
-           nullptr)
-      .add("Full", "Full update of remaining and variables. Slow but may be useful when debugging.", nullptr);
-}
index 7c7c4ee..ed9b59a 100644 (file)
@@ -100,9 +100,6 @@ static void sg_config_cmd_line(int *argc, char **argv)
       simgrid_cpu_models().help();
       XBT_HELP("%s", "");
       simgrid_network_models().help();
-      XBT_HELP("\nLong description of all optimization levels accepted by the models of this simulator:");
-      surf_optimization_mode_description.help();
-      XBT_HELP("Both network and CPU models have 'Lazy' as default optimization level\n");
       shall_exit = true;
     } else if (parse_args && not strcmp(argv[i], "--help-tracing")) {
       TRACE_help();
@@ -119,20 +116,6 @@ static void sg_config_cmd_line(int *argc, char **argv)
     exit(0);
 }
 
-/* callback of the cpu/model variable */
-static void _sg_cfg_cb__optimization_mode(const std::string& value)
-{
-  xbt_assert(_sg_cfg_init_status < 2, "Cannot change the model after the initialization");
-
-  if (value == "help") {
-    surf_optimization_mode_description.help();
-    exit(0);
-  }
-
-  /* Make sure that the model exists */
-  surf_optimization_mode_description.by_name(value);
-}
-
 static void _sg_cfg_cb_contexts_parallel_mode(std::string_view mode_name)
 {
   if (mode_name == "posix") {
@@ -147,17 +130,6 @@ static void _sg_cfg_cb_contexts_parallel_mode(std::string_view mode_name)
   }
 }
 
-/* build description line with possible values */
-static void declare_model_flag(const std::string& name, const std::string& value,
-                               const std::function<void(std::string const&)>& callback,
-                               const simgrid::ModuleGroup& model_description, const std::string& descr)
-{
-  std::string description = descr + ". Possible values (other compilation flags may activate more " +
-                            model_description.get_kind() + "s): " + model_description.existing_values();
-  description += ".\n       (use 'help' as a value to see the long description of each one)";
-  simgrid::config::declare_flag<std::string>(name, description, value, callback);
-}
-
 /* create the config set, register what should be and parse the command line*/
 void sg_config_init(int *argc, char **argv)
 {
@@ -173,10 +145,6 @@ void sg_config_init(int *argc, char **argv)
   simgrid_network_models().create_flag("network/model", "The model to use for the network", "LV08", false);
   simgrid_host_models().create_flag("host/model", "The model to use for the host", "default", false);
   simgrid_disk_models().create_flag("disk/model", "The model to use for the disk", "S19", false);
-  simgrid_create_models(); // KILL ME
-
-  declare_model_flag("network/optim", "Lazy", &_sg_cfg_cb__optimization_mode, surf_optimization_mode_description,
-                     "The optimization modes to use for the network");
 
   simgrid::config::bind_flag(sg_surf_precision, "surf/precision",
                              "Numerical precision used when updating simulation times (in seconds)");
index 57a7efd..54e369e 100644 (file)
@@ -113,13 +113,24 @@ SIMGRID_REGISTER_NETWORK_MODEL(
     });
 
 namespace simgrid::kernel::resource {
+static simgrid::config::Flag<std::string>
+    network_optim_opt("network/optim", "Optimization algorithm to use for network resources. ", "Lazy",
+
+                      std::map<std::string, std::string, std::less<>>({
+                          {"Lazy", "Lazy action management (partial invalidation in lmm + heap in action remaining)."},
+                          {"Full", "Full update of remaining and variables. Slow but may be useful when debugging."},
+                      }),
+
+                      [](std::string const&) {
+                        xbt_assert(_sg_cfg_init_status < 2,
+                                   "Cannot change the optimization algorithm after the initialization");
+                      });
 
 NetworkCm02Model::NetworkCm02Model(const std::string& name) : NetworkModel(name)
 {
-  std::string optim = config::get_value<std::string>("network/optim");
-  bool select       = config::get_value<bool>("network/maxmin-selective-update");
+  bool select = config::get_value<bool>("network/maxmin-selective-update");
 
-  if (optim == "Lazy") {
+  if (network_optim_opt == "Lazy") {
     set_update_algorithm(Model::UpdateAlgo::LAZY);
     xbt_assert(select || config::is_default("network/maxmin-selective-update"),
                "You cannot disable network selective update when using the lazy update mechanism");
index 32289c3..23bf1e7 100644 (file)
@@ -65,14 +65,4 @@ static inline int double_equals(double value1, double value2, double precision)
 
 XBT_PUBLIC void surf_vm_model_init_HL13();
 
-/* --------------------
- *  Model Descriptions
- * -------------------- */
-
-/** @brief The list of all available optimization modes (both for cpu and networks).
- *  These optimization modes can be set using --cfg=cpu/optim:... and --cfg=network/optim:... */
-XBT_PUBLIC_DATA simgrid::ModuleGroup surf_optimization_mode_description;
-
-void simgrid_create_models();
-
 #endif /* SURF_MODEL_H_ */