X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0753f73209089c7573361567dfe25851dab20a70..19df82877ce519ee7ce4b9daee206ad6939f4710:/src/surf/ptask_L07.cpp diff --git a/src/surf/ptask_L07.cpp b/src/surf/ptask_L07.cpp index 435475c33d..3ca0d7c0c9 100644 --- a/src/surf/ptask_L07.cpp +++ b/src/surf/ptask_L07.cpp @@ -7,6 +7,7 @@ #include #include +#include #include "ptask_L07.hpp" @@ -39,8 +40,6 @@ HostL07Model::HostL07Model() : HostModel() { maxminSystem_->solve_fun = &bottleneck_solve; surf_network_model = new NetworkL07Model(this,maxminSystem_); surf_cpu_model_pm = new CpuL07Model(this,maxminSystem_); - - routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE, nullptr)); } HostL07Model::~HostL07Model() = default; @@ -60,6 +59,7 @@ NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys) , hostModel_(hmodel) { maxminSystem_ = sys; + loopback_ = createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE); } NetworkL07Model::~NetworkL07Model() { @@ -165,27 +165,25 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t *host_list, /* Compute the number of affected resources... */ if(bytes_amount != nullptr) { - xbt_dict_t ptask_parallel_task_link_set = xbt_dict_new_homogeneous(nullptr); + std::unordered_set affected_links; for (int i = 0; i < host_nb; i++) { for (int j = 0; j < host_nb; j++) { if (bytes_amount[i * host_nb + j] > 0) { double lat=0.0; - std::vector *route = new std::vector(); + std::vector route; - routing_platf->getRouteAndLatency((*netcardList_)[i], (*netcardList_)[j], route, &lat); + routing_platf->getRouteAndLatency((*netcardList_)[i], (*netcardList_)[j], &route, &lat); latency = MAX(latency, lat); - for (auto link : *route) - xbt_dict_set(ptask_parallel_task_link_set, link->getName(), link, nullptr); - delete route; + for (auto link : route) + affected_links.insert(link->getName()); } } } - nb_link = xbt_dict_length(ptask_parallel_task_link_set); - xbt_dict_free(&ptask_parallel_task_link_set); + nb_link = affected_links.size(); } for (int i = 0; i < host_nb; i++) @@ -215,14 +213,12 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t *host_list, if (bytes_amount[i * host_nb + j] == 0.0) continue; - std::vector *route = new std::vector(); + std::vector route; - routing_platf->getRouteAndLatency((*netcardList_)[i], (*netcardList_)[j], route, nullptr); + routing_platf->getRouteAndLatency((*netcardList_)[i], (*netcardList_)[j], &route, nullptr); - for (auto link : *route) + for (auto link : route) lmm_expand_add(model->getMaxminSystem(), link->getConstraint(), this->getVariable(), bytes_amount[i * host_nb + j]); - - delete route; } } } @@ -252,27 +248,27 @@ Cpu *CpuL07Model::createCpu(simgrid::s4u::Host *host, std::vector *spee return new CpuL07(this, host, speedPerPstate, core); } -Link* NetworkL07Model::createLink(const char *name, double bandwidth, double latency, - e_surf_link_sharing_policy_t policy, xbt_dict_t properties) +Link* NetworkL07Model::createLink(const char* name, double bandwidth, double latency, + e_surf_link_sharing_policy_t policy) { - return new LinkL07(this, name, properties, bandwidth, latency, policy); + return new LinkL07(this, name, bandwidth, latency, policy); } /************ * Resource * ************/ -CpuL07::CpuL07(CpuL07Model *model, simgrid::s4u::Host *host, std::vector *speedPerPstate, int core) - : Cpu(model, host, speedPerPstate, core) +CpuL07::CpuL07(CpuL07Model* model, simgrid::s4u::Host* host, std::vector* speedPerPstate, int core) + : Cpu(model, host, lmm_constraint_new(model->getMaxminSystem(), this, speedPerPstate->front()), speedPerPstate, + core) { - constraint_ = lmm_constraint_new(model->getMaxminSystem(), this, speedPerPstate->front()); } CpuL07::~CpuL07()=default; -LinkL07::LinkL07(NetworkL07Model *model, const char* name, xbt_dict_t props, double bandwidth, double latency, - e_surf_link_sharing_policy_t policy) - : Link(model, name, props, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth)) +LinkL07::LinkL07(NetworkL07Model* model, const char* name, double bandwidth, double latency, + e_surf_link_sharing_policy_t policy) + : Link(model, name, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth)) { bandwidth_.peak = bandwidth; latency_.peak = latency; @@ -412,11 +408,10 @@ void L07Action::updateBound() if (communicationAmount_[i * hostNb + j] > 0) { double lat = 0.0; - std::vector *route = new std::vector(); - routing_platf->getRouteAndLatency((*netcardList_)[i], (*netcardList_)[j], route, &lat); + std::vector route; + routing_platf->getRouteAndLatency((*netcardList_)[i], (*netcardList_)[j], &route, &lat); lat_current = MAX(lat_current, lat * communicationAmount_[i * hostNb + j]); - delete route; } } }