From 4070ccac91e53f3e724eb56602addf609ffee081 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Tue, 18 Oct 2011 15:52:02 +0200 Subject: [PATCH] Count supernumerary comp. iterations. --- main.cpp | 3 +++ process.cpp | 15 +++++++++++++++ process.h | 1 + 3 files changed, 19 insertions(+) diff --git a/main.cpp b/main.cpp index dd8b661..7a5ccce 100644 --- a/main.cpp +++ b/main.cpp @@ -53,6 +53,7 @@ namespace { statistics comps; statistics comp_iterations; statistics all_comp_iterations; + statistics iter_deviation; statistics data_send_amount; statistics data_recv_amount; statistics data_send_count; @@ -84,6 +85,7 @@ static int simulation_main(int argc, char* argv[]) comps.push(proc->get_comp_amount()); comp_iterations.push(proc->get_comp_iter()); all_comp_iterations.push(proc->get_all_comp_iter()); + iter_deviation.push(proc->get_iter_deviation()); 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()); @@ -331,6 +333,7 @@ int main(int argc, char* argv[]) PR_STATS("Computation", comps); PR_STATS("Comp. iterations", comp_iterations); PR_STATS("X-Comp. iterations", all_comp_iterations); + PR_STATS("Supernumer. comp. iter.", iter_deviation); PR_STATS("Idle duration", idle_duration); PR_STATS("Data send amount", data_send_amount); PR_STATS("Data recv amount", data_recv_amount); diff --git a/process.cpp b/process.cpp index e6c7bc2..48dac1d 100644 --- a/process.cpp +++ b/process.cpp @@ -121,6 +121,21 @@ process::~process() print_loads(true, xbt_log_priority_debug); } +double process::get_iter_deviation() const +{ + double average_cost = opt::comp_cost(total_load_average); + // Do not count idle periods + double comp_iter_opt = acc.comp_amount / average_cost; +/* + // Add iterations that could have been achieved while beeing idle + // (kept for documentation) + double self_speed = MSG_get_host_speed(MSG_host_self()); + double average_duration = average_cost / self_speed; + comp_iter_opt += idle_duration / average_duration; +*/ + return comp_iter - comp_iter_opt; +} + int process::run() { if (opt::log_rate >= 0) { diff --git a/process.h b/process.h index f2e5a45..c31d213 100644 --- a/process.h +++ b/process.h @@ -36,6 +36,7 @@ public: 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_iter_deviation() const; 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; } -- 2.39.5