Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Constify Cpu::speed_per_pstate_.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 2 Apr 2019 09:43:01 +0000 (11:43 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 2 Apr 2019 09:43:01 +0000 (11:43 +0200)
12 files changed:
include/simgrid/kernel/routing/NetZoneImpl.hpp
src/kernel/routing/NetZoneImpl.cpp
src/plugins/vm/s4u_VirtualMachine.cpp
src/surf/cpu_cas01.cpp
src/surf/cpu_cas01.hpp
src/surf/cpu_interface.cpp
src/surf/cpu_interface.hpp
src/surf/cpu_ti.cpp
src/surf/cpu_ti.hpp
src/surf/ptask_L07.cpp
src/surf/ptask_L07.hpp
src/surf/sg_platf.cpp

index 21a2788..eaad97d 100644 (file)
@@ -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<double>* speed_per_pstate, int core_count,
+  simgrid::s4u::Host* create_host(const char* name, const std::vector<double>& speed_per_pstate, int core_count,
                                   std::map<std::string, std::string>* props);
   /** @brief Creates a new route in this NetZone */
   virtual void add_bypass_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst,
index 2889810..b87a8dd 100644 (file)
@@ -92,8 +92,8 @@ int NetZoneImpl::get_host_count()
   return count;
 }
 
-simgrid::s4u::Host* NetZoneImpl::create_host(const char* name, std::vector<double>* speedPerPstate, int coreAmount,
-                                             std::map<std::string, std::string>* props)
+simgrid::s4u::Host* NetZoneImpl::create_host(const char* name, const std::vector<double>& speed_per_pstate,
+                                             int coreAmount, std::map<std::string, std::string>* props)
 {
   simgrid::s4u::Host* res = new simgrid::s4u::Host(name);
 
@@ -102,7 +102,7 @@ simgrid::s4u::Host* NetZoneImpl::create_host(const char* name, std::vector<doubl
 
   res->pimpl_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)
index f16253c..0a927af 100644 (file)
@@ -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());
 }
index a82c956..114e9e1 100644 (file)
@@ -76,7 +76,7 @@ CpuCas01Model::~CpuCas01Model()
   surf_cpu_model_pm = nullptr;
 }
 
-Cpu* CpuCas01Model::create_cpu(simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core)
+Cpu* CpuCas01Model::create_cpu(simgrid::s4u::Host* host, const std::vector<double>& 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<double>* sp
 /************
  * Resource *
  ************/
-CpuCas01::CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, std::vector<double>* 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<double>& speed_per_pstate,
+                   int core)
+    : Cpu(model, host, model->get_maxmin_system()->constraint_new(this, core * speed_per_pstate.front()),
+          speed_per_pstate, core)
 {
 }
 
index 23aa4aa..67ed574 100644 (file)
@@ -28,7 +28,7 @@ public:
   CpuCas01Model& operator=(const CpuCas01Model&) = delete;
   ~CpuCas01Model() override;
 
-  Cpu* create_cpu(simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core) override;
+  Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector<double>& 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<double>* speed_per_pstate, int core);
+  CpuCas01(CpuCas01Model* model, simgrid::s4u::Host* host, const std::vector<double>& speed_per_pstate, int core);
   CpuCas01(const CpuCas01&) = delete;
   CpuCas01& operator=(const CpuCas01&) = delete;
   ~CpuCas01() override;
index db1bd19..4452435 100644 (file)
@@ -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<double>* speedPerPstate, int core)
-    : Cpu(model, host, nullptr /*constraint*/, speedPerPstate, core)
+Cpu::Cpu(kernel::resource::Model* model, simgrid::s4u::Host* host, const std::vector<double>& 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<double>* speedPerPstate, int core)
-    : Resource(model, host->get_cname(), constraint), core_count_(core), host_(host)
+         const std::vector<double>& 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<int>(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;
 }
index 16ecdfd..7ae6e58 100644 (file)
@@ -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<double>* speed_per_pstate, int core) = 0;
+  virtual Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector<double>& 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<double> * speedPerPstate, int core);
+  Cpu(simgrid::kernel::resource::Model* model, simgrid::s4u::Host* host, kernel::lmm::Constraint* constraint,
+      const std::vector<double>& 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<double> * speedPerPstate,
+  Cpu(simgrid::kernel::resource::Model* model, simgrid::s4u::Host* host, const std::vector<double>& 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<double> speed_per_pstate_; /*< List of supported CPU capacities (pstate related) */
+  const std::vector<double> 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).
index c29102b..2ef2169 100644 (file)
@@ -312,7 +312,7 @@ CpuTiModel::~CpuTiModel()
   surf_cpu_model_pm = nullptr;
 }
 
-Cpu* CpuTiModel::create_cpu(simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core)
+Cpu* CpuTiModel::create_cpu(simgrid::s4u::Host* host, const std::vector<double>& 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<double> *speedPerPstate, int core)
-  : Cpu(model, host, speedPerPstate, core)
+CpuTi::CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, const std::vector<double>& 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*/);
index 2b3dff1..f3cafa7 100644 (file)
@@ -102,7 +102,7 @@ typedef boost::intrusive::list<CpuTiAction, ActionTiListOptions > ActionTiList;
  ************/
 class CpuTi : public Cpu {
 public:
-  CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core);
+  CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, const std::vector<double>& 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<double>* speed_per_pstate, int core) override;
+  Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector<double>& speed_per_pstate, int core) override;
   double next_occuring_event(double now) override;
   void update_actions_state(double now, double delta) override;
 
index 9a4715d..e296241 100644 (file)
@@ -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<double>* speed_per_pstate, int core)
+Cpu* CpuL07Model::create_cpu(simgrid::s4u::Host* host, const std::vector<double>& 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<double>* 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<double>& speed_per_pstate, int core)
+    : Cpu(model, host, model->get_maxmin_system()->constraint_new(this, speed_per_pstate.front()), speed_per_pstate,
           core)
 {
 }
index 76bb0bb..edc2fb2 100644 (file)
@@ -53,7 +53,7 @@ public:
   CpuL07Model& operator=(const CpuL07Model&) = delete;
   ~CpuL07Model();
 
-  Cpu* create_cpu(simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core) override;
+  Cpu* create_cpu(simgrid::s4u::Host* host, const std::vector<double>& 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<double>* speed_per_pstate, int core);
+  CpuL07(CpuL07Model* model, s4u::Host* host, const std::vector<double>& speed_per_pstate, int core);
   CpuL07(const CpuL07&) = delete;
   CpuL07& operator=(const CpuL07&) = delete;
   ~CpuL07() override;
index 1e04af4..bbea348 100644 (file)
@@ -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<simgrid::kernel::routing::VivaldiZone*>(current_routing);
   xbt_assert(as, "<peer> tag can only be used in Vivaldi netzones.");
 
-  std::vector<double> speedPerPstate;
-  speedPerPstate.push_back(peer->speed);
-  simgrid::s4u::Host* host = as->create_host(peer->id.c_str(), &speedPerPstate, 1, nullptr);
+  std::vector<double> 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);