int pstate, double speedScale, tmgr_trace_t speedTrace, int core,
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)),
- core, xbt_dynar_get_as(speedPeak, pstate, double), speedScale,
+ 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;
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();