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("")
+ << "or, if negative, 100 * (nhosts / -value) / avg_load\n";
std::clog << o("-G") << "toggle exit on detection of convergence"
<< " [" << opt_helper::on_off(opt::exit_on_convergence) << "]\n";
std::clog << o("-t value")
int process::process_counter = 0;
double process::total_load_average;
+double process::average_load_ratio;
double process::load_diff_threshold;
std::atomic<int> process::convergence_counter(0);
total_load_init += real_load;
total_load_running += real_load;
total_load_average = total_load_running / process_counter;
+ if (opt::avg_load_ratio >= 0.0)
+ average_load_ratio = opt::avg_load_ratio;
+ else
+ average_load_ratio = 100.0 *
+ (process_counter / -opt::avg_load_ratio) / total_load_average;
load_diff_threshold = (opt::load_ratio_threshold +
- opt::avg_load_ratio * total_load_average) / 100.0;
+ average_load_ratio * total_load_average) / 100.0;
proc_mutex->release();
ctrl_close_pending = data_close_pending = neigh.size();
lb_iter, comp_iter, all_comp_iter, real_load);
if (convergence >= 0.0)
XBT_INFO("Convergence within %g%% was achieved at time %g",
- opt::avg_load_ratio, convergence);
+ average_load_ratio, convergence);
else
XBT_INFO("Convergence within %g%% was not achieved",
- opt::avg_load_ratio);
+ average_load_ratio);
XBT_VERB("Expected load was: %g", expected_load);
XBT_VERB("Total computation for this process: %g", get_comp_amount());
print_loads(true, xbt_log_priority_debug);
static int process_counter;
static double total_load_average;
+ static double average_load_ratio;
static double load_diff_threshold;
static std::atomic<int> convergence_counter;