From: Arnaud Giersch Date: Tue, 2 Apr 2019 09:43:01 +0000 (+0200) Subject: Constify Cpu::speed_per_pstate_. X-Git-Tag: v3.22.1~30 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/8b853cf697928f829717bb60bd9c1cadaf2beb8e Constify Cpu::speed_per_pstate_. --- diff --git a/include/simgrid/kernel/routing/NetZoneImpl.hpp b/include/simgrid/kernel/routing/NetZoneImpl.hpp index 21a278807c..eaad97d52b 100644 --- a/include/simgrid/kernel/routing/NetZoneImpl.hpp +++ b/include/simgrid/kernel/routing/NetZoneImpl.hpp @@ -60,7 +60,7 @@ public: s4u::NetZone* get_iface() { return &piface_; } /** @brief Make a host within that NetZone */ - simgrid::s4u::Host* create_host(const char* name, std::vector* speed_per_pstate, int core_count, + simgrid::s4u::Host* create_host(const char* name, const std::vector& speed_per_pstate, int core_count, std::map* props); /** @brief Creates a new route in this NetZone */ virtual void add_bypass_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst, diff --git a/src/kernel/routing/NetZoneImpl.cpp b/src/kernel/routing/NetZoneImpl.cpp index 28898105ef..b87a8dd20e 100644 --- a/src/kernel/routing/NetZoneImpl.cpp +++ b/src/kernel/routing/NetZoneImpl.cpp @@ -92,8 +92,8 @@ int NetZoneImpl::get_host_count() return count; } -simgrid::s4u::Host* NetZoneImpl::create_host(const char* name, std::vector* speedPerPstate, int coreAmount, - std::map* props) +simgrid::s4u::Host* NetZoneImpl::create_host(const char* name, const std::vector& speed_per_pstate, + int coreAmount, std::map* props) { simgrid::s4u::Host* res = new simgrid::s4u::Host(name); @@ -102,7 +102,7 @@ simgrid::s4u::Host* NetZoneImpl::create_host(const char* name, std::vectorpimpl_netpoint = new NetPoint(name, NetPoint::Type::Host, this); - surf_cpu_model_pm->create_cpu(res, speedPerPstate, coreAmount); + surf_cpu_model_pm->create_cpu(res, speed_per_pstate, coreAmount); if (props != nullptr) for (auto const& kv : *props) diff --git a/src/plugins/vm/s4u_VirtualMachine.cpp b/src/plugins/vm/s4u_VirtualMachine.cpp index f16253c407..0a927afca0 100644 --- a/src/plugins/vm/s4u_VirtualMachine.cpp +++ b/src/plugins/vm/s4u_VirtualMachine.cpp @@ -44,7 +44,7 @@ VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host for (int i = 0; i < physical_host->get_pstate_count(); i++) speeds.push_back(physical_host->get_pstate_speed(i)); - surf_cpu_model_vm->create_cpu(this, &speeds, core_amount); + surf_cpu_model_vm->create_cpu(this, speeds, core_amount); if (physical_host->get_pstate() != 0) set_pstate(physical_host->get_pstate()); } diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index a82c95663c..114e9e1a4f 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -76,7 +76,7 @@ CpuCas01Model::~CpuCas01Model() surf_cpu_model_pm = nullptr; } -Cpu* CpuCas01Model::create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) +Cpu* CpuCas01Model::create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) { return new CpuCas01(this, host, speed_per_pstate, core); } @@ -84,9 +84,10 @@ Cpu* CpuCas01Model::create_cpu(simgrid::s4u::Host* host, std::vector* sp /************ * Resource * ************/ -CpuCas01::CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, std::vector* speedPerPstate, int core) - : Cpu(model, host, model->get_maxmin_system()->constraint_new(this, core * speedPerPstate->front()), speedPerPstate, - core) +CpuCas01::CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, + int core) + : Cpu(model, host, model->get_maxmin_system()->constraint_new(this, core * speed_per_pstate.front()), + speed_per_pstate, core) { } diff --git a/src/surf/cpu_cas01.hpp b/src/surf/cpu_cas01.hpp index 23aa4aaf19..67ed574834 100644 --- a/src/surf/cpu_cas01.hpp +++ b/src/surf/cpu_cas01.hpp @@ -28,7 +28,7 @@ public: CpuCas01Model& operator=(const CpuCas01Model&) = delete; ~CpuCas01Model() override; - Cpu* create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) override; + Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) override; }; /************ @@ -37,7 +37,7 @@ public: class CpuCas01 : public Cpu { public: - CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core); + CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core); CpuCas01(const CpuCas01&) = delete; CpuCas01& operator=(const CpuCas01&) = delete; ~CpuCas01() override; diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index db1bd195e6..445243559f 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -51,35 +51,28 @@ void CpuModel::update_actions_state_full(double /*now*/, double delta) /************ * Resource * ************/ -Cpu::Cpu(kernel::resource::Model* model, simgrid::s4u::Host* host, std::vector* speedPerPstate, int core) - : Cpu(model, host, nullptr /*constraint*/, speedPerPstate, core) +Cpu::Cpu(kernel::resource::Model* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, + int core) + : Cpu(model, host, nullptr /*constraint*/, speed_per_pstate, core) { } Cpu::Cpu(kernel::resource::Model* model, simgrid::s4u::Host* host, kernel::lmm::Constraint* constraint, - std::vector* speedPerPstate, int core) - : Resource(model, host->get_cname(), constraint), core_count_(core), host_(host) + const std::vector& speed_per_pstate, int core) + : Resource(model, host->get_cname(), constraint) + , core_count_(core) + , host_(host) + , speed_per_pstate_(speed_per_pstate) { xbt_assert(core > 0, "Host %s must have at least one core, not 0.", host->get_cname()); - speed_.peak = speedPerPstate->front(); + speed_.peak = speed_per_pstate_.front(); speed_.scale = 1; host->pimpl_cpu = this; xbt_assert(speed_.scale > 0, "Speed of host %s must be >0", host->get_cname()); - - // Copy the power peak array: - for (double const& value : *speedPerPstate) { - speed_per_pstate_.push_back(value); - } -} - -Cpu::~Cpu() -{ - if (get_model() == surf_cpu_model_pm) - speed_per_pstate_.clear(); } -int Cpu::get_pstate_count() +int Cpu::get_pstate_count() const { return speed_per_pstate_.size(); } @@ -98,12 +91,12 @@ void Cpu::set_pstate(int pstate_index) on_speed_change(); } -int Cpu::get_pstate() +int Cpu::get_pstate() const { return pstate_; } -double Cpu::get_pstate_peak_speed(int pstate_index) +double Cpu::get_pstate_peak_speed(int pstate_index) const { xbt_assert((pstate_index <= static_cast(speed_per_pstate_.size())), "Invalid parameters (pstate index out of bounds)"); @@ -111,7 +104,7 @@ double Cpu::get_pstate_peak_speed(int pstate_index) return speed_per_pstate_[pstate_index]; } -double Cpu::get_speed(double load) +double Cpu::get_speed(double load) const { return load * speed_.peak; } diff --git a/src/surf/cpu_interface.hpp b/src/surf/cpu_interface.hpp index 16ecdfd10f..7ae6e58c23 100644 --- a/src/surf/cpu_interface.hpp +++ b/src/surf/cpu_interface.hpp @@ -37,7 +37,7 @@ public: * This ignores any potential external load coming from a trace. * @param core The number of core of this Cpu */ - virtual Cpu* create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) = 0; + virtual Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) = 0; void update_actions_state_lazy(double now, double delta) override; void update_actions_state_full(double now, double delta) override; @@ -62,8 +62,8 @@ public: * @param speedPerPstate Processor speed (in flop per second) for each pstate * @param core The number of core of this Cpu */ - Cpu(simgrid::kernel::resource::Model * model, simgrid::s4u::Host * host, kernel::lmm::Constraint * constraint, - std::vector * speedPerPstate, int core); + Cpu(simgrid::kernel::resource::Model* model, simgrid::s4u::Host* host, kernel::lmm::Constraint* constraint, + const std::vector& speed_per_pstate, int core); /** * @brief Cpu constructor @@ -73,12 +73,11 @@ public: * @param speedPerPstate Processor speed (in flop per second) for each pstate * @param core The number of core of this Cpu */ - Cpu(simgrid::kernel::resource::Model * model, simgrid::s4u::Host * host, std::vector * speedPerPstate, + Cpu(simgrid::kernel::resource::Model* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core); Cpu(const Cpu&) = delete; Cpu& operator=(const Cpu&) = delete; - ~Cpu(); /** * @brief Execute some quantity of computation @@ -117,7 +116,7 @@ public: * * If you want to know the amount of flops currently delivered, use load = get_load()*get_speed_ratio() */ - virtual double get_speed(double load); + virtual double get_speed(double load) const; protected: /** @brief Take speed changes (either load or max) into account */ @@ -131,11 +130,11 @@ public: virtual double get_speed_ratio(); /** @brief Get the peak processor speed (in flops/s), at the specified pstate */ - virtual double get_pstate_peak_speed(int pstate_index); + virtual double get_pstate_peak_speed(int pstate_index) const; - virtual int get_pstate_count(); + virtual int get_pstate_count() const; virtual void set_pstate(int pstate_index); - virtual int get_pstate(); + virtual int get_pstate() const; simgrid::s4u::Host* get_host() { return host_; } @@ -144,7 +143,7 @@ private: simgrid::s4u::Host* host_; int pstate_ = 0; /*< Current pstate (index in the speed_per_pstate_)*/ - std::vector speed_per_pstate_; /*< List of supported CPU capacities (pstate related) */ + const std::vector speed_per_pstate_; /*< List of supported CPU capacities (pstate related) */ public: /*< @brief Setup the trace file with availability events (peak speed changes due to external load). diff --git a/src/surf/cpu_ti.cpp b/src/surf/cpu_ti.cpp index c29102b845..2ef2169027 100644 --- a/src/surf/cpu_ti.cpp +++ b/src/surf/cpu_ti.cpp @@ -312,7 +312,7 @@ CpuTiModel::~CpuTiModel() surf_cpu_model_pm = nullptr; } -Cpu* CpuTiModel::create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) +Cpu* CpuTiModel::create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) { return new CpuTi(this, host, speed_per_pstate, core); } @@ -351,12 +351,12 @@ void CpuTiModel::update_actions_state(double now, double /*delta*/) /************ * Resource * ************/ -CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, std::vector *speedPerPstate, int core) - : Cpu(model, host, speedPerPstate, core) +CpuTi::CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) + : Cpu(model, host, speed_per_pstate, core) { xbt_assert(core == 1, "Multi-core not handled by this model yet"); - speed_.peak = speedPerPstate->front(); + speed_.peak = speed_per_pstate.front(); XBT_DEBUG("CPU create: peak=%f", speed_.peak); speed_integrated_trace_ = new CpuTiTmgr(nullptr, 1 /*scale*/); diff --git a/src/surf/cpu_ti.hpp b/src/surf/cpu_ti.hpp index 2b3dff1f50..f3cafa7a0f 100644 --- a/src/surf/cpu_ti.hpp +++ b/src/surf/cpu_ti.hpp @@ -102,7 +102,7 @@ typedef boost::intrusive::list ActionTiList; ************/ class CpuTi : public Cpu { public: - CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core); + CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core); CpuTi(const CpuTi&) = delete; CpuTi& operator&(const CpuTi&) = delete; ~CpuTi() override; @@ -147,7 +147,7 @@ public: CpuTiModel(const CpuTiModel&) = delete; CpuTiModel& operator=(const CpuTiModel&) = delete; ~CpuTiModel() override; - Cpu* create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) override; + Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) override; double next_occuring_event(double now) override; void update_actions_state(double now, double delta) override; diff --git a/src/surf/ptask_L07.cpp b/src/surf/ptask_L07.cpp index 9a4715ddff..e29624146c 100644 --- a/src/surf/ptask_L07.cpp +++ b/src/surf/ptask_L07.cpp @@ -218,7 +218,7 @@ kernel::resource::Action* NetworkL07Model::communicate(s4u::Host* src, s4u::Host return res; } -Cpu* CpuL07Model::create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) +Cpu* CpuL07Model::create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) { return new CpuL07(this, host, speed_per_pstate, core); } @@ -233,8 +233,8 @@ kernel::resource::LinkImpl* NetworkL07Model::create_link(const std::string& name * Resource * ************/ -CpuL07::CpuL07(CpuL07Model* model, simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) - : Cpu(model, host, model->get_maxmin_system()->constraint_new(this, speed_per_pstate->front()), speed_per_pstate, +CpuL07::CpuL07(CpuL07Model* model, simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) + : Cpu(model, host, model->get_maxmin_system()->constraint_new(this, speed_per_pstate.front()), speed_per_pstate, core) { } diff --git a/src/surf/ptask_L07.hpp b/src/surf/ptask_L07.hpp index 76bb0bb039..edc2fb2c2e 100644 --- a/src/surf/ptask_L07.hpp +++ b/src/surf/ptask_L07.hpp @@ -53,7 +53,7 @@ public: CpuL07Model& operator=(const CpuL07Model&) = delete; ~CpuL07Model(); - Cpu* create_cpu(simgrid::s4u::Host* host, std::vector* speed_per_pstate, int core) override; + Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector& speed_per_pstate, int core) override; HostL07Model *hostModel_; }; @@ -77,7 +77,7 @@ public: class CpuL07 : public Cpu { public: - CpuL07(CpuL07Model* model, s4u::Host* host, std::vector* speed_per_pstate, int core); + CpuL07(CpuL07Model* model, s4u::Host* host, const std::vector& speed_per_pstate, int core); CpuL07(const CpuL07&) = delete; CpuL07& operator=(const CpuL07&) = delete; ~CpuL07() override; diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 1e04af4a01..bbea3482b0 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -74,7 +74,7 @@ void sg_platf_new_host(simgrid::kernel::routing::HostCreationArgs* args) } simgrid::s4u::Host* host = - routing_get_current()->create_host(args->id, &args->speed_per_pstate, args->core_amount, &props); + routing_get_current()->create_host(args->id, args->speed_per_pstate, args->core_amount, &props); host->pimpl_->storage_ = mount_list; mount_list.clear(); @@ -481,9 +481,9 @@ void sg_platf_new_peer(simgrid::kernel::routing::PeerCreationArgs* peer) simgrid::kernel::routing::VivaldiZone* as = dynamic_cast(current_routing); xbt_assert(as, " tag can only be used in Vivaldi netzones."); - std::vector speedPerPstate; - speedPerPstate.push_back(peer->speed); - simgrid::s4u::Host* host = as->create_host(peer->id.c_str(), &speedPerPstate, 1, nullptr); + std::vector speed_per_pstate; + speed_per_pstate.push_back(peer->speed); + simgrid::s4u::Host* host = as->create_host(peer->id.c_str(), speed_per_pstate, 1, nullptr); as->set_peer_link(host->pimpl_netpoint, peer->bw_in, peer->bw_out, peer->coord);