Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
obey our naming conventions
[simgrid.git] / src / surf / cpu_interface.cpp
index 428f1a9..177c968 100644 (file)
@@ -12,8 +12,6 @@
 XBT_LOG_EXTERNAL_CATEGORY(surf_kernel);
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf, "Logging specific to the SURF cpu module");
 
-void_f_void_t surf_cpu_model_init_preparse = nullptr;
-
 simgrid::surf::CpuModel *surf_cpu_model_pm;
 simgrid::surf::CpuModel *surf_cpu_model_vm;
 
@@ -33,10 +31,8 @@ void CpuModel::updateActionsStateLazy(double now, double /*delta*/)
     XBT_CDEBUG(surf_kernel, "Something happened to action %p", action);
     if (TRACE_is_enabled()) {
       Cpu *cpu = static_cast<Cpu*>(lmm_constraint_id(lmm_get_cnst_from_var(getMaxminSystem(), action->getVariable(), 0)));
-      TRACE_surf_host_set_utilization(cpu->getName(), action->getCategory(),
-                                      lmm_variable_getvalue(action->getVariable()),
-                                      action->getLastUpdate(),
-                                      now - action->getLastUpdate());
+      TRACE_surf_host_set_utilization(cpu->cname(), action->getCategory(), lmm_variable_getvalue(action->getVariable()),
+                                      action->getLastUpdate(), now - action->getLastUpdate());
     }
 
     action->finish();
@@ -80,11 +76,8 @@ void CpuModel::updateActionsStateFull(double now, double delta)
     if (TRACE_is_enabled()) {
       Cpu *cpu = static_cast<Cpu*> (lmm_constraint_id(lmm_get_cnst_from_var(getMaxminSystem(), action->getVariable(), 0)) );
 
-      TRACE_surf_host_set_utilization(cpu->getName(),
-                                      action->getCategory(),
-                                      lmm_variable_getvalue(action->getVariable()),
-                                      now - delta,
-                                      delta);
+      TRACE_surf_host_set_utilization(cpu->cname(), action->getCategory(), lmm_variable_getvalue(action->getVariable()),
+                                      now - delta, delta);
       TRACE_last_timestamp_to_dump = now - delta;
     }
 
@@ -115,18 +108,16 @@ Cpu::Cpu(Model *model, simgrid::s4u::Host *host, std::vector<double> *speedPerPs
 {
 }
 
-Cpu::Cpu(Model *model, simgrid::s4u::Host *host, lmm_constraint_t constraint,
-    std::vector<double> * speedPerPstate, int core)
- : Resource(model, host->name().c_str(), constraint)
- , coresAmount_(core)
- , host_(host)
+Cpu::Cpu(Model* model, simgrid::s4u::Host* host, lmm_constraint_t constraint, std::vector<double>* speedPerPstate,
+         int core)
+    : Resource(model, host->cname(), constraint), coresAmount_(core), host_(host)
 {
-  xbt_assert(core > 0, "Host %s must have at least one core, not 0.", host->name().c_str());
+  xbt_assert(core > 0, "Host %s must have at least one core, not 0.", host->cname());
 
   speed_.peak = speedPerPstate->front();
   speed_.scale = 1;
   host->pimpl_cpu = this;
-  xbt_assert(speed_.scale > 0, "Speed of host %s must be >0", host->name().c_str());
+  xbt_assert(speed_.scale > 0, "Speed of host %s must be >0", host->cname());
 
   // Copy the power peak array:
   for (double value : *speedPerPstate) {
@@ -151,8 +142,8 @@ int Cpu::getNbPStates()
 void Cpu::setPState(int pstate_index)
 {
   xbt_assert(pstate_index <= static_cast<int>(speedPerPstate_.size()),
-      "Invalid parameters for CPU %s (pstate %d > length of pstates %d)", getName(), pstate_index,
-      static_cast<int>(speedPerPstate_.size()));
+             "Invalid parameters for CPU %s (pstate %d > length of pstates %d)", cname(), pstate_index,
+             static_cast<int>(speedPerPstate_.size()));
 
   double new_peak_speed = speedPerPstate_[pstate_index];
   pstate_ = pstate_index;
@@ -185,7 +176,7 @@ double Cpu::getAvailableSpeed()
 }
 
 void Cpu::onSpeedChange() {
-  TRACE_surf_host_set_speed(surf_get_clock(), getName(), coresAmount_ * speed_.scale * speed_.peak);
+  TRACE_surf_host_set_speed(surf_get_clock(), cname(), coresAmount_ * speed_.scale * speed_.peak);
 }
 
 int Cpu::coreCount()
@@ -195,13 +186,13 @@ int Cpu::coreCount()
 
 void Cpu::setStateTrace(tmgr_trace_t trace)
 {
-  xbt_assert(stateEvent_==nullptr,"Cannot set a second state trace to Host %s", host_->name().c_str());
+  xbt_assert(stateEvent_ == nullptr, "Cannot set a second state trace to Host %s", host_->cname());
 
   stateEvent_ = future_evt_set->add_trace(trace, 0.0, this);
 }
 void Cpu::setSpeedTrace(tmgr_trace_t trace)
 {
-  xbt_assert(speed_.event==nullptr,"Cannot set a second speed trace to Host %s", host_->name().c_str());
+  xbt_assert(speed_.event == nullptr, "Cannot set a second speed trace to Host %s", host_->cname());
 
   speed_.event = future_evt_set->add_trace(trace, 0.0, this);
 }
@@ -224,7 +215,7 @@ void CpuAction::updateRemainingLazy(double now)
 
     if (TRACE_is_enabled()) {
       Cpu *cpu = static_cast<Cpu*>(lmm_constraint_id(lmm_get_cnst_from_var(getModel()->getMaxminSystem(), getVariable(), 0)));
-      TRACE_surf_host_set_utilization(cpu->getName(), getCategory(), lastValue_, lastUpdate_, now - lastUpdate_);
+      TRACE_surf_host_set_utilization(cpu->cname(), getCategory(), lastValue_, lastUpdate_, now - lastUpdate_);
     }
     XBT_CDEBUG(surf_kernel, "Updating action(%p): remains is now %f", this, remains_);
   }
@@ -245,8 +236,14 @@ std::list<Cpu*> CpuAction::cpus() {
   lmm_system_t sys = getModel()->getMaxminSystem();
   int llen = lmm_get_number_of_cnst_from_var(sys, getVariable());
 
-  for(int i = 0; i<llen; i++)
-    retlist.push_back( (Cpu*)(lmm_constraint_id( lmm_get_cnst_from_var(sys, getVariable(), i) )) );
+  for (int i = 0; i < llen; i++) {
+    /* Beware of composite actions: ptasks put links and cpus together */
+    // extra pb: we cannot dynamic_cast from void*...
+    Resource* resource = static_cast<Resource*>(lmm_constraint_id(lmm_get_cnst_from_var(sys, getVariable(), i)));
+    Cpu* cpu           = dynamic_cast<Cpu*>(resource);
+    if (cpu != nullptr)
+      retlist.push_back(cpu);
+  }
 
   return retlist;
 }