X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a3dc65af4638c81b13d4c46f3cda4a267da7f618..403af5e6247ce6452b721f418a5b41e4548efac4:/src/surf/cpu_cas01.cpp diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index 6edd4e9f2d..40d145e9cd 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2011, 2013-2016. The SimGrid Team. +/* Copyright (c) 2009-2011, 2013-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -19,8 +19,7 @@ void surf_cpu_model_init_Cas01() xbt_assert(not surf_cpu_model_pm); xbt_assert(not surf_cpu_model_vm); - char *optim = xbt_cfg_get_string("cpu/optim"); - if (not strcmp(optim, "TI")) { + if (xbt_cfg_get_string("cpu/optim") == "TI") { surf_cpu_model_init_ti(); return; } @@ -37,19 +36,19 @@ namespace surf { CpuCas01Model::CpuCas01Model() : simgrid::surf::CpuModel() { - char *optim = xbt_cfg_get_string("cpu/optim"); + std::string optim = xbt_cfg_get_string("cpu/optim"); bool select = xbt_cfg_get_boolean("cpu/maxmin-selective-update"); - if (not strcmp(optim, "Full")) { - updateMechanism_ = UM_FULL; + if (optim == "Full") { + setUpdateMechanism(UM_FULL); selectiveUpdate_ = select; - } else if (not strcmp(optim, "Lazy")) { - updateMechanism_ = UM_LAZY; + } else if (optim == "Lazy") { + setUpdateMechanism(UM_LAZY); selectiveUpdate_ = true; xbt_assert(select || (xbt_cfg_is_default_value("cpu/maxmin-selective-update")), "Disabling selective update while using the lazy update mechanism is dumb!"); } else { - xbt_die("Unsupported optimization (%s) for this model", optim); + xbt_die("Unsupported optimization (%s) for this model", optim.c_str()); } p_cpuRunningActionSetThatDoesNotNeedBeingChecked = new ActionList(); @@ -179,11 +178,11 @@ CpuAction *CpuCas01::sleep(double duration) if (duration > 0) duration = MAX(duration, sg_surf_precision); - XBT_IN("(%s,%g)", cname(), duration); + XBT_IN("(%s,%g)", getCname(), duration); CpuCas01Action* action = new CpuCas01Action(model(), 1.0, isOff(), speed_.scale * speed_.peak, constraint()); // FIXME: sleep variables should not consume 1.0 in lmm_expand - action->maxDuration_ = duration; + action->setMaxDuration(duration); action->suspended_ = 2; if (duration < 0) { // NO_MAX_DURATION /* Move to the *end* of the corresponding action set. This convention is used to speed up update_resource_state */ @@ -209,13 +208,14 @@ CpuAction *CpuCas01::sleep(double duration) **********/ CpuCas01Action::CpuCas01Action(Model* model, double cost, bool failed, double speed, lmm_constraint_t constraint, int requestedCore) - : CpuAction(model, cost, failed, lmm_variable_new(model->getMaxminSystem(), this, 1.0, speed, 1)) + : CpuAction(model, cost, failed, + lmm_variable_new(model->getMaxminSystem(), this, 1.0 / requestedCore, requestedCore * speed, 1)) , requestedCore_(requestedCore) { if (model->getUpdateMechanism() == UM_LAZY) { - indexHeap_ = -1; - lastUpdate_ = surf_get_clock(); - lastValue_ = 0.0; + updateIndexHeap(-1); + refreshLastUpdate(); + setLastValue(0.0); } lmm_expand(model->getMaxminSystem(), constraint, getVariable(), 1.0); }