X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/149c63f36e15b8500b1e826bda5138318ff7ba2b..2533f01016c86410b430bf2f242ed2ffec647e25:/src/smpi/internals/smpi_config.cpp?ds=sidebyside diff --git a/src/smpi/internals/smpi_config.cpp b/src/smpi/internals/smpi_config.cpp index 7bd5640a18..d38ea1bc92 100644 --- a/src/smpi/internals/smpi_config.cpp +++ b/src/smpi/internals/smpi_config.cpp @@ -1,13 +1,15 @@ -/* Copyright (c) 2008-2020. 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 /* DBL_MAX */ #include /* trim */ #include @@ -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 _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 _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 _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 _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> Tokenizer; + using Tokenizer = boost::tokenizer>; std::getline(fstream, line); // Skip the header line while (std::getline(fstream, line)) { Tokenizer tok(line); @@ -110,9 +118,17 @@ simgrid::config::Flag _smpi_cfg_comp_adjustment_file{"smpi/comp-adj #endif simgrid::config::Flag _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 _smpi_cfg_display_alloc("smpi/display-allocs", + "Whether we should display a memory allocations analysis after simulation.", + false); + +simgrid::config::Flag _smpi_cfg_list_leaks("smpi/list-leaks", + "Whether we should display the n first MPI handle leaks (addresses and type only) after simulation", + -1); + double smpi_cfg_host_speed(){ return _smpi_cfg_host_speed; } @@ -157,6 +173,10 @@ bool smpi_cfg_trace_call_use_absolute_path(){ return _smpi_cfg_trace_call_use_absolute_path; } +bool smpi_cfg_display_alloc(){ + return _smpi_cfg_list_leaks != -1 ? true : _smpi_cfg_display_alloc; +} + std::string smpi_cfg_comp_adjustment_file(){ return _smpi_cfg_comp_adjustment_file; } @@ -175,6 +195,7 @@ void smpi_init_options(){ return; simgrid::config::declare_flag("smpi/display-timing", "Whether we should display the timing after simulation.", false); simgrid::config::declare_flag("smpi/keep-temps", "Whether we should keep the generated temporary files.", false); + simgrid::config::declare_flag("smpi/tmpdir", "tmp dir for dlopen files", "/tmp"); simgrid::config::declare_flag("smpi/coll-selector", "Which collective selector to use", "default"); simgrid::config::declare_flag("smpi/gather", "Which collective to use for gather", ""); @@ -235,16 +256,6 @@ void smpi_init_options(){ "smpi/ois", "Small messages timings (MPI_Isend minimum time for small messages)", "0:0:0:0:0"); simgrid::config::declare_flag( "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; }