-/* Copyright (c) 2008-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2008-2021. 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>
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.",
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);
#endif
simgrid::config::Flag<double> _smpi_cfg_auto_shared_malloc_thresh("smpi/auto-shared-malloc-thresh",
- "Threshold size for the automatic sharing of memory",
+ "Threshold size for the automatic sharing of memory",
0);
+simgrid::config::Flag<bool> _smpi_cfg_display_alloc("smpi/display-allocs",
+ "Whether we should display a memory allocations analysis after simulation.",
+ false);
+
double smpi_cfg_host_speed(){
return _smpi_cfg_host_speed;
}
return _smpi_cfg_trace_call_use_absolute_path;
}
+bool smpi_cfg_display_alloc(){
+ return _smpi_cfg_display_alloc;
+}
+
std::string smpi_cfg_comp_adjustment_file(){
return _smpi_cfg_comp_adjustment_file;
}
if(_smpi_options_initialized)
return;
simgrid::config::declare_flag<bool>("smpi/display-timing", "Whether we should display the timing after simulation.", false);
+ simgrid::config::declare_flag<int>("smpi/list-leaks", "Whether we should display the n first MPI handle leaks (addresses and type only) after simulation", 0);
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", "");
"smpi/ois", "Small messages timings (MPI_Isend minimum time for small messages)", "0:0:0:0:0");
simgrid::config::declare_flag<std::string>(
"smpi/or", "Small messages timings (MPI_Recv minimum time for small messages)", "0:0:0:0:0");
- simgrid::config::alias("smpi/display-timing", {"smpi/display_timing"});
- simgrid::config::alias("smpi/coll-selector", {"smpi/coll_selector"});
- simgrid::config::alias("smpi/simulate-computation", {"smpi/simulate_computation"});
- simgrid::config::alias("smpi/shared-malloc", {"smpi/use_shared_malloc", "smpi/use-shared-malloc"});
- simgrid::config::alias("smpi/host-speed", {"smpi/running_power", "smpi/running-power"});
- simgrid::config::alias("smpi/cpu-threshold", {"smpi/cpu_threshold"});
- simgrid::config::alias("smpi/async-small-thresh", {"smpi/async_small_thres", "smpi/async_small_thresh"});
- simgrid::config::alias("smpi/send-is-detached-thresh", {"smpi/send_is_detached_thres", "smpi/send_is_detached_thresh"});
- 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()