From: Christian Heinrich Date: Fri, 10 Aug 2018 09:38:24 +0000 (+0200) Subject: [SMPI/LB] Normalize load + notify heap of changes X-Git-Tag: v3_21~3^2~2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/d6d9a5c46beafecd99b08c67fb84c4cdcdb832a4 [SMPI/LB] Normalize load + notify heap of changes --- diff --git a/src/smpi/plugins/load_balancer/LoadBalancer.cpp b/src/smpi/plugins/load_balancer/LoadBalancer.cpp index a95a116a7b..dde6fa6ac8 100644 --- a/src/smpi/plugins/load_balancer/LoadBalancer.cpp +++ b/src/smpi/plugins/load_balancer/LoadBalancer.cpp @@ -83,11 +83,14 @@ void LoadBalancer::run() for (auto& host : available_hosts) { std::vector actors = host->get_all_actors(); heap_handle update_handle = usable_hosts.push(host); // Required to update elements in the heap - additional_load[host] = {update_handle, 0}; // Save the handle for later + additional_load[host] = {update_handle, 0}; // Save the handle for later + const double total_flops_computed = sg_host_get_computed_flops(host); for (auto& actor : actors) { - additional_load[host].load += actor_computation[actor->get_pid()]; + additional_load[host].load += actor_computation[actor->get_pid()] / total_flops_computed; // Normalize load - this allows comparison + // even between hosts with different frequencies XBT_DEBUG("Actor %li -> %f", actor->get_pid(), actor_computation[actor->get_pid()]); } + usable_hosts.increase(update_handle); XBT_DEBUG("Host %s initialized to %f", host->get_cname(), additional_load[host].load); }