X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/83a3f82cc260646073f39d2b0862e4ca9e6608e4..28a30c9d25c9555dd21935653d2386653b0f3fe8:/main.cpp?ds=sidebyside diff --git a/main.cpp b/main.cpp index a11ef4a..12f1ae2 100644 --- a/main.cpp +++ b/main.cpp @@ -61,6 +61,7 @@ namespace { statistics ctrl_recv_amount; statistics ctrl_send_count; statistics ctrl_recv_count; + statistics convergence; } @@ -90,6 +91,9 @@ static int simulation_main(int argc, char* argv[]) ctrl_recv_amount.push(proc->get_ctrl_recv_amount()); ctrl_send_count.push(proc->get_ctrl_send_count()); ctrl_recv_count.push(proc->get_ctrl_recv_count()); + double c = proc->get_convergence(); + if (c != -1) + convergence.push(c); // Synchronization barrier... // The goal is to circumvent a limitation in SimGrid (at least @@ -319,6 +323,7 @@ int main(int argc, char* argv[]) elapsed_time.stop(); if (!check_for_lost_load()) exit_status |= EXIT_FAILURE_LOAD; + XBT_INFO(",----[ Results ]"); PR_STATS("Load", loads); PR_STATS("Computation", comps); @@ -336,6 +341,22 @@ int main(int argc, char* argv[]) PR_VALUE("Total simulation time", "%g", simulation_time.duration()); PR_VALUE("Elapsed (wall clock) time", "%g", elapsed_time.duration()); XBT_INFO("`----"); + + double load_imbalance = 100.0 * loads.get_stddev() / loads.get_mean(); + double transfer_amount = + data_send_amount.get_sum() / opt::comm_cost(loads.get_sum()); + + XBT_INFO(",----[ Useful metrics ]"); + PR_VALUE("Final load imbalance", "%g %s", load_imbalance, + "percent of the load average"); + PR_VALUE("Data transfer amount", "%g %s", transfer_amount, + "times the total amount of data"); + PR_VALUE("Number of hosts that converged", "%u / %u", + convergence.get_count(), loads.get_count()); + PR_VALUE("Date of first host convergence", "%g", convergence.get_min()); + PR_VALUE("Date of last host convergence", "%g", convergence.get_max()); + XBT_INFO("`----"); + } if (exit_status) XBT_ERROR("Simulation failed (%#x).", exit_status);