+ std::clog << "\nSimulator output:\n";
+ std::clog << o("-l value")
+ << "print current load every n lb iterations, 0 to disable"
+ << " [" << opt::log_rate << "]\n";
+ std::clog << o("-v")
+ << "verbose: do not override the default logging parameters\n";
+
+ std::clog << "\nAutomatic deployment:\n";
+ std::clog << o("-T name")
+ << "enable automatic deployment with selected topology"
+ << " [" << opt::auto_depl::topology << "]\n";
+ if (opt::help_requested > 1)
+ so_list(opt::topologies);
+ std::clog << o("-L value")
+ << "total load with auto deployment, average if negative"
+ << " [" << opt::auto_depl::load << "]\n";
+ std::clog << o("-N value")
+ << "number of hosts to use with auto deployment, 0 for max."
+ << " [" << opt::auto_depl::nhosts << "]\n";
+ std::clog << o("-R")
+ << "toggle random initial load distribution"
+ << " [" << opt_helper::on_off(opt::auto_depl::random_distribution)
+ << "]\n";
+ std::clog << o("-r value")
+ << "random seed for initial load distribution, or 0, or 1"
+ << " [" << opt::auto_depl::random_seed << "]\n";
+ if (opt::help_requested > 1)
+ std::clog << o("") << "- use 0 for a seed based on current date\n"
+ << o("") << "- use 1 for a constant random\n";
+
+ std::clog << "\nLoad balancing algorithm:\n";
+ std::clog << o("-a name") << "load balancing algorithm"
+ << " [" << opt::loba_algo << "]\n";
+ if (opt::help_requested > 1)
+ so_list(opt::loba_algorithms);
+ std::clog << o("-b") << "toggle bookkeeping (\"virtual load\")"
+ << " [" << opt_helper::on_off(opt::bookkeeping) << "]\n";
+ std::clog << o("-E") << "toggle egocentric mode when bookkeeping"
+ << " [" << opt_helper::on_off(opt::egocentric) << "]\n";
+ if (opt::help_requested > 1)
+ std::clog << o("")
+ << "(a not so good idea introduced by git commit f5336c5)\n";
+ std::clog << o("-k value") << "divisor for algorithms *best*"
+ << " [" << opt::loba_best_divisor << "]\n";
+
+ std::clog << "\nLb. and comp. iterations:\n";
+ std::clog << o("-s value")
+ << "minimum duration between lb. iterations"
+ << " [" << opt::min_lb_iter_duration << "]\n";
+ std::clog << o("-S value")
+ << "minimum duration between comp. iterations"
+ << " [" << opt::min_comp_iter_duration << "]\n";
+ std::clog << o("-d value")
+ << "start comp. iterations after given number of lb. iter."
+ << " [" << opt::comp_iter_delay << "]\n";
+ std::clog << o("-D value")
+ << "start comp. iterations after given time"
+ << " [" << opt::comp_time_delay << "]\n";
+
+ std::clog << "\nComputations and communications:\n";
+ std::clog << o("-c [aN,...]a0")
+ << "polynomial factors for computation cost"
+ << " [" << opt::comp_cost.to_string() << "]\n";
+ std::clog << o("-C [aN,...]a0")
+ << "polynomial factors for communication cost"
+ << " [" << opt::comm_cost.to_string() << "]\n";
+ std::clog << o("-m value")
+ << "minimum data transfer amount"
+ << " [" << opt::min_transfer_amount << "]\n";
+ std::clog << o("-M value")
+ << "maximum data transfer amount, 0 for no limit"
+ << " [" << opt::max_transfer_amount << "]\n";
+ std::clog << o("-Z")
+ << "toggle transfer of integer data shares only"
+ << " [" << opt_helper::on_off(opt::integer_transfer) << "]\n";
+
+ std::clog << "\nEnd of the simulation:\n";
+ std::clog << o("-i value")
+ << "maximum number of lb. iterations, 0 for no limit"
+ << " [" << opt::lb_maxiter << "]\n";
+ std::clog << o("-I value")
+ << "maximum number of comp. iterations, 0 for no limit"
+ << " [" << opt::comp_maxiter << "]\n";
+ std::clog << o("-% value")
+ << "percent of the load average to assume the convergence"
+ << " [" << opt::avg_load_ratio << "]\n";
+ if (opt::help_requested > 1)
+ std::clog << o("")
+ << "- if negative: use 100 * (nhosts / -value) / avg_load\n";
+ std::clog << o("-g value")
+ << "number of consecutive detections of convergence to exit"
+ << " [" << opt::exit_on_convergence << "]\n";
+ if (opt::help_requested > 1)
+ std::clog << o("")
+ << "- use 0 to disable\n";
+ std::clog << o("-t value")
+ << "time limit (simulated time), 0 for no limit"
+ << " [" << opt::time_limit << "]\n";
+ std::clog << o("-e") << "toggle exit on reception of \"close\" message"
+ << " [" << opt_helper::on_off(opt::exit_on_close) << "]\n";
+
+ if (opt::help_requested < 3)
+ return;
+
+ std::clog << "\nHidden options:\n";
+ std::clog << o("-x value") << "value is an integer"
+ << " [" << opt::option_x << "]\n";
+ std::clog << o("-X value") << "value is a real number"
+ << " [" << opt::option_X << "]\n";
+
+ std::clog << "\nLogging support:\n"
+ << " See SimGrid documentation on:\n"
+ << " http://simgrid.gforge.inria.fr/doc/group__XBT__log.html#log_user\n"
+ << " Existing categories are:\n"
+ << " simu : root of following categories\n"
+ << " main : messages from global infrastructure\n"
+ << " depl : messages from auto deployment (inherited from main)\n"
+ << " comm : messages from asynchronous pipes\n"
+ << " proc : messages from base process class\n"
+ << " loba : messages from load-balancer\n"
+ << " thrd : messages from thread wrapper class\n";
+
+ // std::clog << "\nMiscellaneous low-level parameters\n";
+
+#undef so_list
+#undef so