X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9fc9b3239f3f2a3a5441fe5c8bac82c1ffa3c9d0..7fb4337fa68b21ac48b0160cc9461c5a87199598:/src/surf/ptask_L07.cpp diff --git a/src/surf/ptask_L07.cpp b/src/surf/ptask_L07.cpp index a5f933953c..82a7e710a6 100644 --- a/src/surf/ptask_L07.cpp +++ b/src/surf/ptask_L07.cpp @@ -20,17 +20,14 @@ XBT_LOG_EXTERNAL_CATEGORY(xbt_cfg); /**************************************/ /*** Resource Creation & Destruction **/ /**************************************/ -void surf_host_model_init_ptask_L07(void) +void surf_host_model_init_ptask_L07() { XBT_CINFO(xbt_cfg,"Switching to the L07 model to handle parallel tasks."); xbt_assert(!surf_cpu_model_pm, "CPU model type already defined"); xbt_assert(!surf_network_model, "network model type already defined"); - // Define the callbacks to parse the XML - simgrid::surf::on_link.connect(netlink_parse_init); - surf_host_model = new simgrid::surf::HostL07Model(); - xbt_dynar_push(all_existing_models, &surf_host_model); + all_existing_models->push_back(surf_host_model); } @@ -42,7 +39,7 @@ HostL07Model::HostL07Model() : HostModel() { 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, NULL)); + routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE, nullptr)); } HostL07Model::~HostL07Model() { @@ -57,9 +54,9 @@ CpuL07Model::CpuL07Model(HostL07Model *hmodel,lmm_system_t sys) maxminSystem_ = sys; } CpuL07Model::~CpuL07Model() { - surf_cpu_model_pm = NULL; + surf_cpu_model_pm = nullptr; lmm_system_free(maxminSystem_); - maxminSystem_ = NULL; + maxminSystem_ = nullptr; } NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys) : NetworkModel() @@ -69,8 +66,8 @@ NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys) } NetworkL07Model::~NetworkL07Model() { - surf_network_model = NULL; - maxminSystem_ = NULL; // Avoid multi-free + surf_network_model = nullptr; + maxminSystem_ = nullptr; // Avoid multi-free } @@ -79,22 +76,17 @@ double HostL07Model::next_occuring_event(double /*now*/) L07Action *action; ActionList *running_actions = getRunningActionSet(); - double min = this->shareResourcesMaxMin(running_actions, - maxminSystem_, - bottleneck_solve); + double min = shareResourcesMaxMin(running_actions, maxminSystem_, bottleneck_solve); - for(ActionList::iterator it(running_actions->begin()), itend(running_actions->end()) - ; it != itend ; ++it) { - action = static_cast(&*it); + for(ActionList::iterator it(running_actions->begin()), itend(running_actions->end()); it != itend ; ++it) { + action = static_cast(&*it); if (action->m_latency > 0) { if (min < 0) { min = action->m_latency; - XBT_DEBUG("Updating min (value) with %p (start %f): %f", action, - action->getStartTime(), min); + XBT_DEBUG("Updating min (value) with %p (start %f): %f", action, action->getStartTime(), min); } else if (action->m_latency < min) { min = action->m_latency; - XBT_DEBUG("Updating min (latency) with %p (start %f): %f", action, - action->getStartTime(), min); + XBT_DEBUG("Updating min (latency) with %p (start %f): %f", action, action->getStartTime(), min); } } } @@ -143,23 +135,22 @@ void HostL07Model::updateActionsState(double /*now*/, double delta) { if ((action->getRemains() <= 0) && (lmm_get_variable_weight(action->getVariable()) > 0)) { action->finish(); - action->setState(SURF_ACTION_DONE); + action->setState(Action::State::done); } else if ((action->getMaxDuration() != NO_MAX_DURATION) && (action->getMaxDuration() <= 0)) { action->finish(); - action->setState(SURF_ACTION_DONE); + action->setState(Action::State::done); } else { /* Need to check that none of the model has failed */ - lmm_constraint_t cnst = NULL; + lmm_constraint_t cnst = nullptr; int i = 0; while ((cnst = lmm_get_cnst_from_var(maxminSystem_, action->getVariable(), i++))) { void *constraint_id = lmm_constraint_id(cnst); - - if (static_cast(constraint_id)->isOff()) { + if (static_cast(constraint_id)->isOff()) { XBT_DEBUG("Action (%p) Failed!!", action); action->finish(); - action->setState(SURF_ACTION_FAILED); + action->setState(Action::State::failed); break; } } @@ -169,14 +160,13 @@ void HostL07Model::updateActionsState(double /*now*/, double delta) { } Action *HostL07Model::executeParallelTask(int host_nb, sg_host_t *host_list, - double *flops_amount, double *bytes_amount, - double rate) { + double *flops_amount, double *bytes_amount,double rate) { return new L07Action(this, host_nb, host_list, flops_amount, bytes_amount, rate); } -L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, - double *flops_amount, double *bytes_amount, double rate) +L07Action::L07Action(Model *model, int host_nb, sg_host_t *host_list, + double *flops_amount, double *bytes_amount, double rate) : CpuAction(model, 1, 0) { int nb_link = 0; @@ -188,8 +178,8 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, this->p_netcardList->push_back(host_list[i]->pimpl_netcard); /* Compute the number of affected resources... */ - if(bytes_amount != NULL) { - xbt_dict_t ptask_parallel_task_link_set = xbt_dict_new_homogeneous(NULL); + if(bytes_amount != nullptr) { + xbt_dict_t ptask_parallel_task_link_set = xbt_dict_new_homogeneous(nullptr); for (int i = 0; i < host_nb; i++) { for (int j = 0; j < host_nb; j++) { @@ -202,7 +192,7 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, latency = MAX(latency, lat); for (auto link : *route) - xbt_dict_set(ptask_parallel_task_link_set, link->getName(), link, NULL); + xbt_dict_set(ptask_parallel_task_link_set, link->getName(), link, nullptr); delete route; } } @@ -222,7 +212,7 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, this->m_latency = latency; this->m_rate = rate; - this->p_variable = lmm_variable_new(model->getMaxminSystem(), this, 1.0, + this->variable_ = lmm_variable_new(model->getMaxminSystem(), this, 1.0, (rate > 0 ? rate : -1.0), host_nb + nb_link); @@ -233,7 +223,7 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, lmm_expand(model->getMaxminSystem(), host_list[i]->pimpl_cpu->getConstraint(), this->getVariable(), flops_amount[i]); - if(bytes_amount != NULL) { + if(bytes_amount != nullptr) { for (int i = 0; i < host_nb; i++) { for (int j = 0; j < host_nb; j++) { @@ -241,7 +231,7 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, continue; std::vector *route = new std::vector(); - routing_platf->getRouteAndLatency((*p_netcardList)[i], (*p_netcardList)[j], route, NULL); + routing_platf->getRouteAndLatency((*p_netcardList)[i], (*p_netcardList)[j], route, nullptr); for (auto link : *route) lmm_expand_add(model->getMaxminSystem(), link->getConstraint(), this->getVariable(), bytes_amount[i * host_nb + j]); @@ -258,7 +248,7 @@ L07Action::L07Action(Model *model, int host_nb, sg_host_t*host_list, xbt_free(host_list); } -Action *NetworkL07Model::communicate(NetCard *src, NetCard *dst, double size, double rate) +Action *NetworkL07Model::communicate(kernel::routing::NetCard *src, kernel::routing::NetCard *dst, double size, double rate) { sg_host_t*host_list = xbt_new0(sg_host_t, 2); double *flops_amount = xbt_new0(double, 2); @@ -271,7 +261,7 @@ Action *NetworkL07Model::communicate(NetCard *src, NetCard *dst, double size, do return p_hostModel->executeParallelTask(2, host_list, flops_amount, bytes_amount, rate); } -Cpu *CpuL07Model::createCpu(simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) +Cpu *CpuL07Model::createCpu(simgrid::s4u::Host *host, std::vector *speedPerPstate, int core) { return new CpuL07(this, host, speedPerPstate, core); } @@ -286,15 +276,13 @@ Link* NetworkL07Model::createLink(const char *name, double bandwidth, double lat * Resource * ************/ -CpuL07::CpuL07(CpuL07Model *model, simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) - : Cpu(model, host, speedPerPstate, core, xbt_dynar_get_as(speedPerPstate,0,double)) +CpuL07::CpuL07(CpuL07Model *model, simgrid::s4u::Host *host, std::vector *speedPerPstate, int core) + : Cpu(model, host, speedPerPstate, core) { - p_constraint = lmm_constraint_new(model->getMaxminSystem(), this, xbt_dynar_get_as(speedPerPstate,0,double)); + constraint_ = lmm_constraint_new(model->getMaxminSystem(), this, speedPerPstate->front()); } -CpuL07::~CpuL07() -{ -} +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) @@ -317,15 +305,14 @@ Action *CpuL07::execution_start(double size) host_list[0] = getHost(); flops_amount[0] = size; - return static_cast(getModel())->p_hostModel - ->executeParallelTask( 1, host_list, flops_amount, NULL, -1); + return static_cast(getModel())->p_hostModel->executeParallelTask(1, host_list, flops_amount, nullptr, -1); } Action *CpuL07::sleep(double duration) { L07Action *action = static_cast(execution_start(1.0)); - action->m_maxDuration = duration; - action->m_suspended = 2; + action->maxDuration_ = duration; + action->suspended_ = 2; lmm_update_variable_weight(getModel()->getMaxminSystem(), action->getVariable(), 0.0); return action; @@ -337,17 +324,14 @@ bool CpuL07::isUsed(){ /** @brief take into account changes of speed (either load or max) */ void CpuL07::onSpeedChange() { - lmm_variable_t var = NULL; - lmm_element_t elem = NULL; + lmm_variable_t var = nullptr; + lmm_element_t elem = nullptr; lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), speed_.peak * speed_.scale); - while ((var = lmm_get_var_from_cnst - (getModel()->getMaxminSystem(), getConstraint(), &elem))) { + while ((var = lmm_get_var_from_cnst (getModel()->getMaxminSystem(), getConstraint(), &elem))) { Action *action = static_cast(lmm_variable_id(var)); - lmm_update_variable_bound(getModel()->getMaxminSystem(), - action->getVariable(), - speed_.scale * speed_.peak); + lmm_update_variable_bound(getModel()->getMaxminSystem(), action->getVariable(), speed_.scale * speed_.peak); } Cpu::onSpeedChange(); @@ -407,9 +391,9 @@ void LinkL07::updateBandwidth(double value) void LinkL07::updateLatency(double value) { - lmm_variable_t var = NULL; + lmm_variable_t var = nullptr; L07Action *action; - lmm_element_t elem = NULL; + lmm_element_t elem = nullptr; m_latency.peak = value; while ((var = lmm_get_var_from_cnst(getModel()->getMaxminSystem(), getConstraint(), &elem))) { @@ -436,7 +420,7 @@ void L07Action::updateBound() int hostNb = p_netcardList->size(); - if (p_communicationAmount != NULL) { + if (p_communicationAmount != nullptr) { for (i = 0; i < hostNb; i++) { for (j = 0; j < hostNb; j++) { @@ -453,21 +437,20 @@ void L07Action::updateBound() } lat_bound = sg_tcp_gamma / (2.0 * lat_current); XBT_DEBUG("action (%p) : lat_bound = %g", this, lat_bound); - if ((m_latency == 0.0) && (m_suspended == 0)) { + if ((m_latency == 0.0) && (suspended_ == 0)) { if (m_rate < 0) lmm_update_variable_bound(getModel()->getMaxminSystem(), getVariable(), lat_bound); else - lmm_update_variable_bound(getModel()->getMaxminSystem(), getVariable(), - std::min(m_rate, lat_bound)); + lmm_update_variable_bound(getModel()->getMaxminSystem(), getVariable(), std::min(m_rate, lat_bound)); } } int L07Action::unref() { - m_refcount--; - if (!m_refcount) { + refcount_--; + if (!refcount_) { if (action_hook.is_linked()) - p_stateSet->erase(p_stateSet->iterator_to(*this)); + stateSet_->erase(stateSet_->iterator_to(*this)); if (getVariable()) lmm_variable_free(getModel()->getMaxminSystem(), getVariable()); delete this;