delete p_cpuRunningActionSetThatDoesNotNeedBeingChecked;
}
-Cpu *CpuCas01Model::createCpu(const char *name, xbt_dynar_t speedPeak,
+Cpu *CpuCas01Model::createCpu(simgrid::Host *host, xbt_dynar_t speedPeak,
int pstate, double speedScale,
tmgr_trace_t speedTrace, int core,
e_surf_resource_state_t state_initial,
- tmgr_trace_t state_trace,
- xbt_dict_t cpu_properties)
+ tmgr_trace_t state_trace)
{
xbt_assert(xbt_dynar_getfirst_as(speedPeak, double) > 0.0,
"Speed has to be >0.0. Did you forget to specify the mandatory power attribute?");
xbt_assert(core > 0, "Invalid number of cores %d. Must be larger than 0", core);
- Cpu *cpu = new CpuCas01(this, name, speedPeak, pstate, speedScale, speedTrace, core, state_initial, state_trace, cpu_properties);
+ Cpu *cpu = new CpuCas01(this, host, speedPeak, pstate, speedScale, speedTrace, core, state_initial, state_trace);
return cpu;
}
/************
* Resource *
************/
-CpuCas01::CpuCas01(CpuCas01Model *model, const char *name, xbt_dynar_t speedPeak,
+CpuCas01::CpuCas01(CpuCas01Model *model, simgrid::Host *host, xbt_dynar_t speedPeak,
int pstate, double speedScale, tmgr_trace_t speedTrace, int core,
- e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace,
- xbt_dict_t properties)
-: Cpu(model, name, properties,
- lmm_constraint_new(model->getMaxminSystem(), this, core * speedScale * xbt_dynar_get_as(speedPeak, pstate, double)),
- core, xbt_dynar_get_as(speedPeak, pstate, double), speedScale,
+ e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace)
+: Cpu(model, host,
+ lmm_constraint_new(model->getMaxminSystem(), this, core * speedScale * xbt_dynar_get_as(speedPeak, pstate, double)),
+ speedPeak, pstate,
+ core, xbt_dynar_get_as(speedPeak, pstate, double), speedScale,
stateInitial) {
p_speedEvent = NULL;
- // Copy the power peak array:
- p_speedPeakList = xbt_dynar_new(sizeof(double), nullptr);
- unsigned long n = xbt_dynar_length(speedPeak);
- for (unsigned long i = 0; i != n; ++i) {
- double value = xbt_dynar_get_as(speedPeak, i, double);
- xbt_dynar_push(p_speedPeakList, &value);
- }
-
- m_pstate = pstate;
-
XBT_DEBUG("CPU create: peak=%f, pstate=%d", m_speedPeak, m_pstate);
m_core = core;
p_stateEvent = tmgr_history_add_trace(history, stateTrace, 0.0, 0, this);
}
-CpuCas01::~CpuCas01(){
+CpuCas01::~CpuCas01()
+{
if (getModel() == surf_cpu_model_pm)
xbt_dynar_free(&p_speedPeakList);
}
return p_speedPeakList;
}
-int CpuCas01::getPState()
-{
- return m_pstate;
-}
-
bool CpuCas01::isUsed()
{
return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
return m_speedPeak;
}
-double CpuCas01::getPowerPeakAt(int pstate_index)
-{
- xbt_dynar_t plist = p_speedPeakList;
- xbt_assert((pstate_index <= (int)xbt_dynar_length(plist)), "Invalid parameters (pstate index out of bounds)");
-
- return xbt_dynar_get_as(plist, pstate_index, double);
-}
-
-int CpuCas01::getNbPstates()
-{
- return xbt_dynar_length(p_speedPeakList);
-}
-
-void CpuCas01::setPstate(int pstate_index)
-{
- xbt_dynar_t plist = p_speedPeakList;
- xbt_assert((pstate_index <= (int)xbt_dynar_length(plist)), "Invalid parameters (pstate index out of bounds)");
-
- double new_pstate = xbt_dynar_get_as(plist, pstate_index, double);
- m_pstate = pstate_index;
- m_speedPeak = new_pstate;
-}
-
-int CpuCas01::getPstate()
-{
- return m_pstate;
-}
-
/**********
* Action *
**********/
lmm_variable_new(model->getMaxminSystem(), this,
1.0, speed, 1))
{
- m_suspended = 0;
if (model->getUpdateMechanism() == UM_LAZY) {
m_indexHeap = -1;
m_lastUpdate = surf_get_clock();