X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e18a7b043d161b29d0bf3f5743cb7a570241576a..d5c57ec2bead03b27b08d4136fb968e79aa3d233:/src/surf/network_ib.cpp diff --git a/src/surf/network_ib.cpp b/src/surf/network_ib.cpp index 7d7c3249a9..1dc1b1e5f1 100644 --- a/src/surf/network_ib.cpp +++ b/src/surf/network_ib.cpp @@ -7,8 +7,8 @@ #include #include "simgrid/sg_config.h" +#include "src/kernel/lmm/maxmin.hpp" #include "src/surf/HostImpl.hpp" -#include "src/surf/maxmin_private.hpp" #include "src/surf/network_ib.hpp" #include "src/surf/xml/platf.hpp" #include @@ -104,7 +104,7 @@ namespace surf { NetworkIBModel::NetworkIBModel() : NetworkSmpiModel() { - const char* IB_factors_string = xbt_cfg_get_string("smpi/IB-penalty-factors"); + std::string IB_factors_string = xbt_cfg_get_string("smpi/IB-penalty-factors"); std::vector radical_elements; boost::split(radical_elements, IB_factors_string, boost::is_any_of(";")); @@ -174,7 +174,7 @@ void NetworkIBModel::computeIBfactors(IBNode* root) if (not double_equals(penalized_bw, rate_before_update, sg_surf_precision)) { XBT_DEBUG("%d->%d action %p penalty updated : bw now %f, before %f , initial rate %f", root->id, (*it)->destination->id, (*it)->action, penalized_bw, (*it)->action->getBound(), (*it)->init_rate); - lmm_update_variable_bound(maxminSystem_, (*it)->action->getVariable(), penalized_bw); + maxminSystem_->update_variable_bound((*it)->action->getVariable(), penalized_bw); } else { XBT_DEBUG("%d->%d action %p penalty not updated : bw %f, initial rate %f", root->id, (*it)->destination->id, (*it)->action, penalized_bw, (*it)->init_rate); @@ -183,18 +183,18 @@ void NetworkIBModel::computeIBfactors(IBNode* root) XBT_DEBUG("Finished computing IB penalties"); } -void NetworkIBModel::updateIBfactors_rec(IBNode* root, bool* updatedlist) +void NetworkIBModel::updateIBfactors_rec(IBNode* root, std::vector& updatedlist) { - if (updatedlist[root->id] == 0) { + if (not updatedlist[root->id]) { XBT_DEBUG("IB - Updating rec %d", root->id); computeIBfactors(root); - updatedlist[root->id] = 1; + updatedlist[root->id] = true; for (std::vector::iterator it = root->ActiveCommsUp.begin(); it != root->ActiveCommsUp.end(); ++it) { - if (updatedlist[(*it)->destination->id] != 1) + if (not updatedlist[(*it)->destination->id]) updateIBfactors_rec((*it)->destination, updatedlist); } for (std::map::iterator it = root->ActiveCommsDown.begin(); it != root->ActiveCommsDown.end(); ++it) { - if (updatedlist[it->first->id] != 1) + if (not updatedlist[it->first->id]) updateIBfactors_rec(it->first, updatedlist); } } @@ -205,7 +205,6 @@ void NetworkIBModel::updateIBfactors(NetworkAction* action, IBNode* from, IBNode if (from == to) // disregard local comms (should use loopback) return; - bool* updated = (bool*)xbt_malloc0(active_nodes.size() * sizeof(bool)); ActiveComm* comm = nullptr; if (remove) { if (to->ActiveCommsDown[from] == 1) @@ -233,11 +232,10 @@ void NetworkIBModel::updateIBfactors(NetworkAction* action, IBNode* from, IBNode to->nbActiveCommsDown++; } XBT_DEBUG("IB - Updating %d", from->id); + std::vector updated(active_nodes.size(), false); updateIBfactors_rec(from, updated); XBT_DEBUG("IB - Finished updating %d", from->id); - if (comm) - delete comm; - xbt_free(updated); + delete comm; } } }