Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of github.com:simgrid/simgrid
[simgrid.git] / src / smpi / internals / smpi_config.cpp
index 2c2a4d2..5aa6b92 100644 (file)
@@ -1,13 +1,15 @@
-/* Copyright (c) 2008-2019. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2008-2020. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
-#include "mc/mc.h"
+#include "smpi_config.hpp"
 #include "include/xbt/config.hpp"
+#include "mc/mc.h"
 #include "private.hpp"
 #include "smpi_coll.hpp"
-#include "smpi_config.hpp"
 #include "src/simix/smx_private.hpp"
+#include "xbt/parse_units.hpp"
+
 #include <cfloat> /* DBL_MAX */
 #include <boost/algorithm/string.hpp> /* trim */
 #include <boost/tokenizer.hpp>
@@ -31,13 +33,19 @@ constexpr bool HAVE_WORKING_MMAP = true;
 bool _smpi_options_initialized=false;
 SharedMallocType _smpi_cfg_shared_malloc = SharedMallocType::GLOBAL;
 SmpiPrivStrategies _smpi_cfg_privatization = SmpiPrivStrategies::NONE;
+double _smpi_cfg_host_speed;
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_config, smpi, "Logging specific to SMPI (config)");
 
-simgrid::config::Flag<double> _smpi_cfg_host_speed{
-  "smpi/host-speed", "Speed of the host running the simulation (in flop/s). "
-  "Used to bench the operations.",  20000.0,
-  [](const double& val) { xbt_assert(val > 0.0, "Invalid value (%f) for 'smpi/host-speed': it must be positive.", val); }};
+simgrid::config::Flag<std::string> _smpi_cfg_host_speed_string{
+    "smpi/host-speed",
+    "Speed of the host running the simulation (in flop/s). "
+    "Used to bench the operations.",
+    "20000f", [](const std::string& str) {
+      _smpi_cfg_host_speed = xbt_parse_get_speed("smpi/host-speed", 1, str.c_str(), "option", "smpi/host-speed");
+      xbt_assert(_smpi_cfg_host_speed > 0.0, "Invalid value (%s) for 'smpi/host-speed': it must be positive.",
+                 _smpi_cfg_host_speed_string.get().c_str());
+    }};
 
 simgrid::config::Flag<bool> _smpi_cfg_simulate_computation{
   "smpi/simulate-computation", "Whether the computational part of the simulated application should be simulated.",
@@ -91,7 +99,7 @@ simgrid::config::Flag<std::string> _smpi_cfg_comp_adjustment_file{"smpi/comp-adj
         std::ifstream fstream(filename);
         xbt_assert(fstream.is_open(), "Could not open file %s. Does it exist?", filename.c_str());
         std::string line;
-        typedef boost::tokenizer<boost::escaped_list_separator<char>> Tokenizer;
+        using Tokenizer = boost::tokenizer<boost::escaped_list_separator<char>>;
         std::getline(fstream, line); // Skip the header line
         while (std::getline(fstream, line)) {
           Tokenizer tok(line);
@@ -175,6 +183,7 @@ void smpi_init_options(){
     return;
   simgrid::config::declare_flag<bool>("smpi/display-timing", "Whether we should display the timing after simulation.", false);
   simgrid::config::declare_flag<bool>("smpi/keep-temps", "Whether we should keep the generated temporary files.", false);
+  simgrid::config::declare_flag<std::string>("smpi/tmpdir", "tmp dir for dlopen files", "/tmp");
 
   simgrid::config::declare_flag<std::string>("smpi/coll-selector", "Which collective selector to use", "default");
   simgrid::config::declare_flag<std::string>("smpi/gather", "Which collective to use for gather", "");
@@ -246,7 +255,6 @@ void smpi_init_options(){
   simgrid::config::alias("smpi/privatization", {"smpi/privatize_global_variables", "smpi/privatize-global-variables"});
   simgrid::config::alias("smpi/reduce_scatter", {"smpi/reduce-scatter"});
   _smpi_options_initialized=true;
-
 }
 
 void smpi_check_options()