-/* Copyright (c) 2006-2018. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2006-2019. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
for (auto& host : available_hosts) {
std::vector<simgrid::s4u::ActorPtr> 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);
}