X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/90559b37332c0f396c09fd1c75326cfbdbbe5dc1..ec1ff601331bbc2a69a3d7501f468e2238be2a5e:/src/surf/cpu_ti.cpp diff --git a/src/surf/cpu_ti.cpp b/src/surf/cpu_ti.cpp index 766ed5d367..8e89a04bd6 100644 --- a/src/surf/cpu_ti.cpp +++ b/src/surf/cpu_ti.cpp @@ -414,18 +414,9 @@ CpuTiModel::~CpuTiModel() xbt_heap_free(tiActionHeap_); } -Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, - xbt_dynar_t speedPeak, - double speedScale, - tmgr_trace_t speedTrace, - int core, - tmgr_trace_t stateTrace) +Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) { - xbt_assert(core==1,"Multi-core not handled with this model yet"); - xbt_assert(xbt_dynar_getfirst_as(speedPeak, double) > 0.0, - "Speed has to be >0.0. Did you forget to specify the mandatory speed attribute?"); - CpuTi *cpu = new CpuTi(this, host, speedPeak, speedScale, speedTrace, core, stateTrace); - return cpu; + return new CpuTi(this, host, speedPerPstate, core); } double CpuTiModel::next_occuring_event(double now) @@ -458,7 +449,7 @@ void CpuTiModel::updateActionsState(double now, double /*delta*/) action->finish(); /* set the remains to 0 due to precision problems when updating the remaining amount */ action->setRemains(0); - action->setState(SURF_ACTION_DONE); + action->setState(Action::State::done); /* update remaining amount of all actions */ action->cpu_->updateRemainingAmount(surf_get_clock()); } @@ -467,62 +458,45 @@ void CpuTiModel::updateActionsState(double now, double /*delta*/) /************ * Resource * ************/ -CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPeak, - double speedScale, tmgr_trace_t speedTrace, int core, - tmgr_trace_t stateTrace) - : Cpu(model, host, NULL, core, 0, speedScale) +CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) + : Cpu(model, host, speedPerPstate, core) { xbt_assert(core==1,"Multi-core not handled by this model yet"); - m_core = core; - - p_speed.scale = speedScale; - availTrace_ = new CpuTiTgmr(speedTrace, speedScale); + coresAmount_ = core; actionSet_ = new ActionTiList(); - xbt_dynar_get_cpy(speedPeak, 0, &p_speed.peak); - XBT_DEBUG("CPU create: peak=%f", p_speed.peak); - - if (stateTrace) - p_stateEvent = future_evt_set->add_trace(stateTrace, 0.0, this); + xbt_dynar_get_cpy(speedPerPstate, 0, &speed_.peak); + XBT_DEBUG("CPU create: peak=%f", speed_.peak); - if (speedTrace && xbt_dynar_length(speedTrace->event_list) > 1) { - s_tmgr_event_t val; - // add a fake trace event if periodicity == 0 - xbt_dynar_get_cpy(speedTrace->event_list, - xbt_dynar_length(speedTrace->event_list) - 1, &val); - if (val.delta == 0) { - p_speed.event = - future_evt_set->add_trace(tmgr_empty_trace_new(), availTrace_->lastTime_, this); - } - } + speedIntegratedTrace_ = new CpuTiTgmr(NULL, 1/*scale*/); } CpuTi::~CpuTi() { modified(false); - delete availTrace_; + delete speedIntegratedTrace_; delete actionSet_; } -void CpuTi::set_speed_trace(tmgr_trace_t trace) +void CpuTi::setSpeedTrace(tmgr_trace_t trace) { - if (availTrace_) - delete availTrace_; + if (speedIntegratedTrace_) + delete speedIntegratedTrace_; - availTrace_ = new CpuTiTgmr(trace, p_speed.scale); + speedIntegratedTrace_ = new CpuTiTgmr(trace, speed_.scale); /* add a fake trace event if periodicity == 0 */ if (trace && xbt_dynar_length(trace->event_list) > 1) { s_tmgr_event_t val; xbt_dynar_get_cpy(trace->event_list, xbt_dynar_length(trace->event_list) - 1, &val); if (val.delta == 0) - p_speed.event = future_evt_set->add_trace(tmgr_empty_trace_new(), 0.0, this); + speed_.event = future_evt_set->add_trace(tmgr_empty_trace_new(), 0.0, this); } } void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) { - if (event == p_speed.event) { + if (event == speed_.event) { tmgr_trace_t speedTrace; CpuTiTgmr *trace; s_tmgr_event_t val; @@ -533,19 +507,19 @@ void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) modified(true); - speedTrace = availTrace_->speedTrace_; + speedTrace = speedIntegratedTrace_->speedTrace_; xbt_dynar_get_cpy(speedTrace->event_list, xbt_dynar_length(speedTrace->event_list) - 1, &val); - delete availTrace_; - p_speed.scale = val.value; + delete speedIntegratedTrace_; + speed_.scale = val.value; trace = new CpuTiTgmr(TRACE_FIXED, val.value); XBT_DEBUG("value %f", val.value); - availTrace_ = trace; + speedIntegratedTrace_ = trace; - tmgr_trace_event_unref(&p_speed.event); + tmgr_trace_event_unref(&speed_.event); - } else if (event == p_stateEvent) { + } else if (event == stateEvent_) { if (value > 0) { if(isOff()) xbt_dynar_push_as(host_that_restart, char*, (char *)getName()); @@ -559,11 +533,11 @@ void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) ; it != itend ; ++it) { CpuTiAction *action = &*it; - if (action->getState() == SURF_ACTION_RUNNING - || action->getState() == SURF_ACTION_READY - || action->getState() == SURF_ACTION_NOT_IN_THE_SYSTEM) { + if (action->getState() == Action::State::running + || action->getState() == Action::State::ready + || action->getState() == Action::State::not_in_the_system) { action->setFinishTime(date); - action->setState(SURF_ACTION_FAILED); + action->setState(Action::State::failed); if (action->indexHeap_ >= 0) { CpuTiAction *heap_act = (CpuTiAction*) xbt_heap_remove(static_cast(getModel())->tiActionHeap_, action->indexHeap_); @@ -573,7 +547,7 @@ void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) } } } - tmgr_trace_event_unref(&p_stateEvent); + tmgr_trace_event_unref(&stateEvent_); } else { xbt_die("Unknown event!\n"); @@ -621,15 +595,15 @@ void CpuTi::updateActionsFinishTime(double now) (action->getRemains()) * sum_priority * action->getPriority(); - total_area /= p_speed.peak; + total_area /= speed_.peak; - action->setFinishTime(availTrace_->solve(now, total_area)); + action->setFinishTime(speedIntegratedTrace_->solve(now, total_area)); /* verify which event will happen before (max_duration or finish time) */ if (action->getMaxDuration() != NO_MAX_DURATION && - action->getStartTime() + action->getMaxDuration() < action->m_finish) + action->getStartTime() + action->getMaxDuration() < action->finishTime_) min_finish = action->getStartTime() + action->getMaxDuration(); else - min_finish = action->m_finish; + min_finish = action->finishTime_; } else { /* put the max duration time on heap */ if (action->getMaxDuration() != NO_MAX_DURATION) @@ -649,7 +623,7 @@ void CpuTi::updateActionsFinishTime(double now) XBT_DEBUG ("Update finish time: Cpu(%s) Action: %p, Start Time: %f Finish Time: %f Max duration %f", getName(), action, action->getStartTime(), - action->m_finish, + action->finishTime_, action->getMaxDuration()); } /* remove from modified cpu */ @@ -663,7 +637,7 @@ bool CpuTi::isUsed() double CpuTi::getAvailableSpeed() { - p_speed.scale = availTrace_->getPowerScale(surf_get_clock()); + speed_.scale = speedIntegratedTrace_->getPowerScale(surf_get_clock()); return Cpu::getAvailableSpeed(); } @@ -676,7 +650,7 @@ void CpuTi::updateRemainingAmount(double now) return; /* compute the integration area */ - double area_total = availTrace_->integrate(lastUpdate_, now) * p_speed.peak; + double area_total = speedIntegratedTrace_->integrate(lastUpdate_, now) * speed_.peak; XBT_DEBUG("Flops total: %f, Last update %f", area_total, lastUpdate_); for(ActionTiList::iterator it(actionSet_->begin()), itend(actionSet_->end()) ; it != itend ; ++it) { @@ -698,12 +672,12 @@ void CpuTi::updateRemainingAmount(double now) continue; /* skip action that are finishing now */ - if (action->m_finish >= 0 && action->m_finish <= now) + if (action->finishTime_ >= 0 && action->finishTime_ <= now) continue; /* update remaining */ action->updateRemains(area_total / (sumPriority_ * action->getPriority())); - XBT_DEBUG("Update remaining action(%p) remaining %f", action, action->m_remains); + XBT_DEBUG("Update remaining action(%p) remaining %f", action, action->remains_); } lastUpdate_ = now; } @@ -728,13 +702,13 @@ CpuAction *CpuTi::sleep(double duration) XBT_IN("(%s,%g)", getName(), duration); CpuTiAction *action = new CpuTiAction(static_cast(getModel()), 1.0, isOff(), this); - action->m_maxDuration = duration; + action->maxDuration_ = duration; action->suspended_ = 2; if (duration == NO_MAX_DURATION) { /* Move to the *end* of the corresponding action set. This convention is used to speed up update_resource_state */ action->getStateSet()->erase(action->getStateSet()->iterator_to(*action)); - action->p_stateSet = static_cast(getModel())->runningActionSetThatDoesNotNeedBeingChecked_; + action->stateSet_ = static_cast(getModel())->runningActionSetThatDoesNotNeedBeingChecked_; action->getStateSet()->push_back(*action); } @@ -774,7 +748,7 @@ void CpuTiAction::updateIndexHeap(int i) indexHeap_ = i; } -void CpuTiAction::setState(e_surf_action_state_t state) +void CpuTiAction::setState(Action::State state) { CpuAction::setState(state); cpu_->modified(true); @@ -782,8 +756,8 @@ void CpuTiAction::setState(e_surf_action_state_t state) int CpuTiAction::unref() { - m_refcount--; - if (!m_refcount) { + refcount_--; + if (!refcount_) { if (action_hook.is_linked()) getStateSet()->erase(getStateSet()->iterator_to(*this)); /* remove from action_set */ @@ -800,7 +774,7 @@ int CpuTiAction::unref() void CpuTiAction::cancel() { - this->setState(SURF_ACTION_FAILED); + this->setState(Action::State::failed); xbt_heap_remove(getModel()->getActionHeap(), this->indexHeap_); cpu_->modified(true); return; @@ -833,7 +807,7 @@ void CpuTiAction::setMaxDuration(double duration) XBT_IN("(%p,%g)", this, duration); - m_maxDuration = duration; + maxDuration_ = duration; if (duration >= 0) min_finish = (getStartTime() + getMaxDuration()) < getFinishTime() ? @@ -856,7 +830,7 @@ void CpuTiAction::setMaxDuration(double duration) void CpuTiAction::setPriority(double priority) { XBT_IN("(%p,%g)", this, priority); - m_priority = priority; + priority_ = priority; cpu_->modified(true); XBT_OUT(); } @@ -866,7 +840,7 @@ double CpuTiAction::getRemains() XBT_IN("(%p)", this); cpu_->updateRemainingAmount(surf_get_clock()); XBT_OUT(); - return m_remains; + return remains_; } }