-
- xbt_cfg_register_boolean("network/crosstraffic", "yes", _sg_cfg_cb__surf_network_crosstraffic,
- "Activate the interferences between uploads and downloads for fluid max-min models (LV08, CM02)");
-
- //For smpi/bw_factor and smpi/lat_factor
- // SMPI model can be used without enable_smpi, so keep this out of the ifdef.
- xbt_cfg_register_string("smpi/bw-factor",
- "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", nullptr,
- "Bandwidth factors for smpi. Format: 'threshold0:value0;threshold1:value1;...;thresholdN:valueN', meaning if(size >=thresholdN ) return valueN.");
- xbt_cfg_register_alias("smpi/bw-factor","smpi/bw_factor");
-
- xbt_cfg_register_string("smpi/lat-factor",
- "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", nullptr, "Latency factors for smpi.");
- xbt_cfg_register_alias("smpi/lat-factor","smpi/lat_factor");
-
- xbt_cfg_register_string("smpi/IB-penalty-factors", "0.965;0.925;1.35", nullptr,
- "Correction factor to communications using Infiniband model with contention (default value based on Stampede cluster profiling)");
- xbt_cfg_register_alias("smpi/IB-penalty-factors","smpi/IB_penalty_factors");
-
-#if HAVE_SMPI
- xbt_cfg_register_double("smpi/host-speed", 20000.0, nullptr, "Speed of the host running the simulation (in flop/s). Used to bench the operations.");
- xbt_cfg_register_alias("smpi/host-speed","smpi/running_power");
- xbt_cfg_register_alias("smpi/host-speed","smpi/running-power");
-
- xbt_cfg_register_boolean("smpi/display-timing", "no", nullptr, "Whether we should display the timing after simulation.");
- xbt_cfg_register_alias("smpi/display-timing", "smpi/display_timing");
-
- xbt_cfg_register_boolean("smpi/simulate-computation", "yes", nullptr, "Whether the computational part of the simulated application should be simulated.");
- xbt_cfg_register_alias("smpi/simulate-computation","smpi/simulate_computation");
-
- xbt_cfg_register_string("smpi/shared-malloc", "global", nullptr,
- "Whether SMPI_SHARED_MALLOC is enabled. Disable it for debugging purposes.");
- xbt_cfg_register_alias("smpi/shared-malloc", "smpi/use-shared-malloc");
- xbt_cfg_register_alias("smpi/shared-malloc", "smpi/use_shared_malloc");
- xbt_cfg_register_double("smpi/shared-malloc-blocksize", 1UL << 20, nullptr, "Size of the bogus file which will be created for global shared allocations");
-
- xbt_cfg_register_double("smpi/cpu-threshold", 1e-6, nullptr, "Minimal computation time (in seconds) not discarded, or -1 for infinity.");
- xbt_cfg_register_alias("smpi/cpu-threshold", "smpi/cpu_threshold");
-
- xbt_cfg_register_int("smpi/async-small-thresh", 0, nullptr,
- "Maximal size of messages that are to be sent asynchronously, without waiting for the receiver");
- xbt_cfg_register_alias("smpi/async-small-thresh","smpi/async_small_thresh");
- xbt_cfg_register_alias("smpi/async-small-thresh","smpi/async_small_thres");
-
- xbt_cfg_register_boolean("smpi/trace-call-location", "no", nullptr, "Should filename and linenumber of MPI calls be traced?");
-
- xbt_cfg_register_int("smpi/send-is-detached-thresh", 65536, nullptr,
- "Threshold of message size where MPI_Send stops behaving like MPI_Isend and becomes MPI_Ssend");
- xbt_cfg_register_alias("smpi/send-is-detached-thresh","smpi/send_is_detached_thresh");
- xbt_cfg_register_alias("smpi/send-is-detached-thresh","smpi/send_is_detached_thres");
-
- const char* default_privatization = std::getenv("SMPI_PRIVATIZATION");
- if (default_privatization == nullptr)
- default_privatization = "no";
-
- xbt_cfg_register_string("smpi/privatize-global-variables", default_privatization, nullptr, "Whether we should privatize global variable at runtime (no, yes, mmap, dlopen).");
-
- xbt_cfg_register_alias("smpi/privatize-global-variables", "smpi/privatize_global_variables");
-
- xbt_cfg_register_boolean("smpi/grow-injected-times", "yes", nullptr, "Whether we want to make the injected time in MPI_Iprobe and MPI_Test grow, to allow faster simulation. This can make simulation less precise, though.");
-
-#if HAVE_PAPI
- xbt_cfg_register_string("smpi/papi-events", nullptr, nullptr, "This switch enables tracking the specified counters with PAPI");
-#endif
- xbt_cfg_register_string("smpi/comp-adjustment-file", nullptr, nullptr, "A file containing speedups or slowdowns for some parts of the code.");
- xbt_cfg_register_string("smpi/os", "0:0:0:0:0", nullptr, "Small messages timings (MPI_Send minimum time for small messages)");
- xbt_cfg_register_string("smpi/ois", "0:0:0:0:0", nullptr, "Small messages timings (MPI_Isend minimum time for small messages)");
- xbt_cfg_register_string("smpi/or", "0:0:0:0:0", nullptr, "Small messages timings (MPI_Recv minimum time for small messages)");
-
- xbt_cfg_register_double("smpi/iprobe-cpu-usage", 1, nullptr, "Maximum usage of CPUs by MPI_Iprobe() calls. We've observed that MPI_Iprobes consume significantly less power than the maximum of a specific application. This value is then (Iprobe_Usage/Max_Application_Usage).");
-
- xbt_cfg_register_string("smpi/coll-selector", "default", nullptr, "Which collective selector to use");
- xbt_cfg_register_alias("smpi/coll-selector","smpi/coll_selector");
- xbt_cfg_register_string("smpi/gather", nullptr, nullptr, "Which collective to use for gather");
- xbt_cfg_register_string("smpi/allgather", nullptr, nullptr, "Which collective to use for allgather");
- xbt_cfg_register_string("smpi/barrier", nullptr, nullptr, "Which collective to use for barrier");
- xbt_cfg_register_string("smpi/reduce_scatter",nullptr, nullptr, "Which collective to use for reduce_scatter");
- xbt_cfg_register_alias("smpi/reduce_scatter","smpi/reduce-scatter");
- xbt_cfg_register_string("smpi/scatter", nullptr, nullptr, "Which collective to use for scatter");
- xbt_cfg_register_string("smpi/allgatherv", nullptr, nullptr, "Which collective to use for allgatherv");
- xbt_cfg_register_string("smpi/allreduce", nullptr, nullptr, "Which collective to use for allreduce");
- xbt_cfg_register_string("smpi/alltoall", nullptr, nullptr, "Which collective to use for alltoall");
- xbt_cfg_register_string("smpi/alltoallv", nullptr, nullptr,"Which collective to use for alltoallv");
- xbt_cfg_register_string("smpi/bcast", nullptr, nullptr, "Which collective to use for bcast");
- xbt_cfg_register_string("smpi/reduce", nullptr, nullptr, "Which collective to use for reduce");
-#endif // HAVE_SMPI
-
- /* Storage */
-
- sg_storage_max_file_descriptors = 1024;
- simgrid::config::bindFlag(sg_storage_max_file_descriptors, "storage/max_file_descriptors",
- "Maximum number of concurrently opened files per host. Default is 1024");
-
- /* Others */
-
- xbt_cfg_register_boolean("exception/cutpath", "no", nullptr,
- "Whether to cut all path information from call traces, used e.g. in exceptions.");
-
- xbt_cfg_register_boolean("clean-atexit", "yes", _sg_cfg_cb_clean_atexit,
- "Whether to cleanup SimGrid at exit. Disable it if your code segfaults after its end.");
- xbt_cfg_register_alias("clean-atexit","clean_atexit");
-
- if (surf_path.empty()) {
- /* retrieves the current directory of the current process */
- const char *initial_path = __surf_get_initial_path();
- xbt_assert((initial_path), "__surf_get_initial_path() failed! Can't resolve current Windows directory");
-
- xbt_cfg_setdefault_string("path", initial_path);
- }
-
- _sg_cfg_init_status = 1;
-
- sg_config_cmd_line(argc, argv);
-
- xbt_mallocator_initialization_is_done(SIMIX_context_is_parallel());
- } else {
- XBT_WARN("Call to sg_config_init() after initialization ignored");
- }
+ simgrid::config::declare_flag<std::string>("contexts/synchro", "Synchronization mode to use when running contexts in "
+ "parallel (either futex, posix or busy_wait)",
+ 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::alias("smpi/bw-factor", {"smpi/bw_factor"});
+
+ 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");
+ simgrid::config::alias("smpi/lat-factor", {"smpi/lat_factor"});
+ simgrid::config::declare_flag<std::string>("smpi/IB-penalty-factors",
+ "Correction factor to communications using Infiniband model with "
+ "contention (default value based on Stampede cluster profiling)",
+ "0.965;0.925;1.35");
+ simgrid::config::alias("smpi/IB-penalty-factors", {"smpi/IB_penalty_factors"});
+ /* Others */
+
+ simgrid::config::declare_flag<bool>(
+ "exception/cutpath", "Whether to cut all path information from call traces, used e.g. in exceptions.", false);
+
+ if (surf_path.empty())
+ simgrid::config::set_default<std::string>("path", "./");
+
+ _sg_cfg_init_status = 1;
+
+ sg_config_cmd_line(argc, argv);
+
+ xbt_mallocator_initialization_is_done(SIMIX_context_is_parallel());