From: Arnaud Giersch Date: Wed, 28 Sep 2011 09:56:01 +0000 (+0200) Subject: Add all- (or X-) comp. iterations, counting empty iterations too. X-Git-Tag: exp_20120216~34 X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/commitdiff_plain/6b7dedf20c9bd5bca561df7ca9d664939ca66161?ds=inline Add all- (or X-) comp. iterations, counting empty iterations too. --- diff --git a/main.cpp b/main.cpp index ea84f78..6417250 100644 --- a/main.cpp +++ b/main.cpp @@ -29,7 +29,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(main); #include "tracing.h" #include "version.h" -#define DATA_DESCR_WIDTH 37 +#define DATA_DESCR_WIDTH 39 namespace { // Failure exit status @@ -52,6 +52,7 @@ namespace { statistics loads; statistics comps; statistics comp_iterations; + statistics all_comp_iterations; statistics data_send_amount; statistics data_recv_amount; statistics data_send_count; @@ -80,6 +81,7 @@ static int simulation_main(int argc, char* argv[]) loads.push(proc->get_real_load()); comps.push(proc->get_comp_amount()); comp_iterations.push(proc->get_comp_iter()); + all_comp_iterations.push(proc->get_all_comp_iter()); data_send_amount.push(proc->get_data_send_amount()); data_recv_amount.push(proc->get_data_recv_amount()); data_send_count.push(proc->get_data_send_count()); @@ -174,7 +176,7 @@ static void install_signal_handler() #define PR_STATS(descr, st) \ XBT_INFO("| %.*s: %g / %g / %g", DATA_DESCR_WIDTH, \ - descr " (total/avg./stddev)................................", \ + descr " (total/avg./stddev).............................", \ st.get_sum(), st.get_mean(), st.get_stddev()) int main(int argc, char* argv[]) @@ -316,6 +318,7 @@ int main(int argc, char* argv[]) PR_STATS("Load", loads); PR_STATS("Computation", comps); PR_STATS("Comp. iterations", comp_iterations); + PR_STATS("X-Comp. iterations", all_comp_iterations); PR_STATS("Data send amount", data_send_amount); PR_STATS("Data recv amount", data_recv_amount); PR_STATS("Data send count", data_send_count); diff --git a/process.cpp b/process.cpp index 5d0f98b..07372dc 100644 --- a/process.cpp +++ b/process.cpp @@ -64,7 +64,7 @@ process::process(int argc, char* argv[]) close_received = false; finalizing = false; - comp_iter = lb_iter = 0; + all_comp_iter = comp_iter = lb_iter = 0; lb_thread = new_msg_thread("loba", std::bind(&process::load_balance_loop, this)); @@ -93,8 +93,8 @@ process::~process() "received_load is %g, but should be 0.0 !", received_load); if (opt::log_rate < 0) return; - XBT_INFO("Final load after %d:%d iterations: %g", - lb_iter, comp_iter, real_load); + XBT_INFO("Final load after %d:%d:%d iterations: %g", + lb_iter, comp_iter, all_comp_iter, real_load); 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); @@ -144,7 +144,8 @@ void process::load_balance_loop() // nothing to do with opt::bookkeeping if (opt::log_rate && lb_iter % opt::log_rate == 0) { - XBT_INFO("(%u:%u) current load: %g", lb_iter, comp_iter, real_load); + XBT_INFO("(%u:%u:%u) current load: %g", + lb_iter, comp_iter, all_comp_iter, real_load); XBT_VERB("... expected load: %g", expected_load); } @@ -194,6 +195,7 @@ void process::compute_loop() std::bind(&process::data_send, this, _1)); mutex.release(); + ++all_comp_iter; if (real_load == 0.0) continue; diff --git a/process.h b/process.h index 275238c..9ea0521 100644 --- a/process.h +++ b/process.h @@ -35,6 +35,7 @@ public: double get_real_load() const { return real_load; } double get_comp_amount() const { return acc.comp_amount; } unsigned get_comp_iter() const { return comp_iter; } + unsigned get_all_comp_iter() const { return all_comp_iter; } double get_data_send_amount() const { return acc.data_send.amount; } double get_data_recv_amount() const { return acc.data_recv.amount; } unsigned get_data_send_count() const { return acc.data_send.count; } @@ -98,6 +99,8 @@ private: unsigned lb_iter; // counter of load-balancing iterations unsigned comp_iter; // counter of computation iterations + unsigned all_comp_iter; // counter of computation iterations + // (counting empty iterations too) double prev_load_broadcast; // used to ensure that we do not send // a same information messages