X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/90a471de6cd70b41223dd16a09fafe6ac3e18269..a63523f78485f8c04a2edba7fb2b1f5b31204509:/src/surf/cpu_ti.cpp diff --git a/src/surf/cpu_ti.cpp b/src/surf/cpu_ti.cpp index c6e5c23c21..8ab9009066 100644 --- a/src/surf/cpu_ti.cpp +++ b/src/surf/cpu_ti.cpp @@ -28,15 +28,13 @@ void cpu_ti_action_update_index_heap(void *action, int i) CpuTiTrace::CpuTiTrace(tmgr_trace_t speedTrace) { - s_tmgr_event_t val; - unsigned int cpt; double integral = 0; double time = 0; int i = 0; - timePoints_ = static_cast(xbt_malloc0(sizeof(double) * (xbt_dynar_length(speedTrace->event_list) + 1))); - integral_ = static_cast(xbt_malloc0(sizeof(double) * (xbt_dynar_length(speedTrace->event_list) + 1))); - nbPoints_ = xbt_dynar_length(speedTrace->event_list) + 1; - xbt_dynar_foreach(speedTrace->event_list, cpt, val) { + nbPoints_ = speedTrace->event_list.size() + 1; + timePoints_ = new double[nbPoints_]; + integral_ = new double[nbPoints_]; + for (auto val : speedTrace->event_list) { timePoints_[i] = time; integral_[i] = integral; integral += val.delta * val.value; @@ -49,8 +47,8 @@ CpuTiTrace::CpuTiTrace(tmgr_trace_t speedTrace) CpuTiTrace::~CpuTiTrace() { - xbt_free(timePoints_); - xbt_free(integral_); + delete [] timePoints_; + delete [] integral_; } CpuTiTgmr::~CpuTiTgmr() @@ -241,11 +239,9 @@ double CpuTiTrace::solveSimple(double a, double amount) */ double CpuTiTgmr::getPowerScale(double a) { - s_tmgr_event_t val; - double reduced_a = a - floor(a / lastTime_) * lastTime_; int point = trace_->binarySearch(trace_->timePoints_, reduced_a, 0, trace_->nbPoints_ - 1); - xbt_dynar_get_cpy(speedTrace_->event_list, point, &val); + s_tmgr_event_t val = speedTrace_->event_list.at(point); return val.value; } @@ -259,8 +255,6 @@ double CpuTiTgmr::getPowerScale(double a) CpuTiTgmr::CpuTiTgmr(tmgr_trace_t speedTrace, double value) { double total_time = 0.0; - s_tmgr_event_t val; - unsigned int cpt; trace_ = 0; /* no availability file, fixed trace */ @@ -272,8 +266,8 @@ CpuTiTgmr::CpuTiTgmr(tmgr_trace_t speedTrace, double value) } /* only one point available, fixed trace */ - if (xbt_dynar_length(speedTrace->event_list) == 1) { - xbt_dynar_get_cpy(speedTrace->event_list, 0, &val); + if (speedTrace->event_list.size() == 1) { + s_tmgr_event_t val = speedTrace->event_list.front(); type_ = TRACE_FIXED; value_ = val.value; return; @@ -283,7 +277,7 @@ CpuTiTgmr::CpuTiTgmr(tmgr_trace_t speedTrace, double value) speedTrace_ = speedTrace; /* count the total time of trace file */ - xbt_dynar_foreach(speedTrace->event_list, cpt, val) { + for (auto val: speedTrace->event_list) { total_time += val.delta; } trace_ = new CpuTiTrace(speedTrace); @@ -361,7 +355,7 @@ CpuTiModel::~CpuTiModel() xbt_heap_free(tiActionHeap_); } -Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) +Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, std::vector* speedPerPstate, int core) { return new CpuTi(this, host, speedPerPstate, core); } @@ -403,7 +397,7 @@ void CpuTiModel::updateActionsState(double now, double /*delta*/) /************ * Resource * ************/ -CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) +CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, std::vector *speedPerPstate, int core) : Cpu(model, host, speedPerPstate, core) { xbt_assert(core==1,"Multi-core not handled by this model yet"); @@ -411,7 +405,7 @@ CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPerPs actionSet_ = new ActionTiList(); - xbt_dynar_get_cpy(speedPerPstate, 0, &speed_.peak); + speed_.peak = speedPerPstate->front(); XBT_DEBUG("CPU create: peak=%f", speed_.peak); speedIntegratedTrace_ = new CpuTiTgmr(nullptr, 1/*scale*/); @@ -431,9 +425,8 @@ void CpuTi::setSpeedTrace(tmgr_trace_t trace) 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 (trace && trace->event_list.size() > 1) { + s_tmgr_event_t val = trace->event_list.back(); if (val.delta < 1e-12) speed_.event = future_evt_set->add_trace(tmgr_empty_trace_new(), 0.0, this); } @@ -444,7 +437,6 @@ void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) if (event == speed_.event) { tmgr_trace_t speedTrace; CpuTiTgmr *trace; - s_tmgr_event_t val; XBT_DEBUG("Finish trace date: value %f", value); /* update remaining of actions and put in modified cpu swag */ @@ -453,7 +445,7 @@ void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) modified(true); speedTrace = speedIntegratedTrace_->speedTrace_; - xbt_dynar_get_cpy(speedTrace->event_list, xbt_dynar_length(speedTrace->event_list) - 1, &val); + s_tmgr_event_t val = speedTrace->event_list.back(); delete speedIntegratedTrace_; speed_.scale = val.value; @@ -467,7 +459,7 @@ void CpuTi::apply_event(tmgr_trace_iterator_t event, double value) } else if (event == stateEvent_) { if (value > 0) { if(isOff()) - xbt_dynar_push_as(host_that_restart, char*, (char *)getName()); + host_that_restart.push_back(getHost()); turnOn(); } else { turnOff();