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<double*>(xbt_malloc0(sizeof(double) * (xbt_dynar_length(speedTrace->event_list) + 1)));
- integral_ = static_cast<double*>(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_ = static_cast<double*>(xbt_malloc0(sizeof(double) * nbPoints_));
+ integral_ = static_cast<double*>(xbt_malloc0(sizeof(double) * nbPoints_));
+ for (auto val : speedTrace->event_list) {
timePoints_[i] = time;
integral_[i] = integral;
integral += val.delta * val.value;
*/
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;
}
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 */
}
/* 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;
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);
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);
}
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 */
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;
static std::unordered_map<const char *, simgrid::trace_mgr::trace*> trace_list;
-simgrid::trace_mgr::trace::trace()
-{
- event_list = xbt_dynar_new(sizeof(s_tmgr_event_t), nullptr);
-}
-
-simgrid::trace_mgr::trace::~trace()
-{
- xbt_dynar_free(&event_list);
-}
-simgrid::trace_mgr::future_evt_set::future_evt_set()
-{
-}
+simgrid::trace_mgr::trace::trace()=default;
+simgrid::trace_mgr::trace::~trace()=default;
+simgrid::trace_mgr::future_evt_set::future_evt_set()=default;
simgrid::trace_mgr::future_evt_set::~future_evt_set()
{
s_tmgr_event_t first_event;
first_event.delta=event.delta;
first_event.value=-1.0;
- xbt_dynar_push(trace->event_list, &first_event);
+ trace->event_list.push_back(first_event);
}
}
- xbt_dynar_push(trace->event_list, &event);
- last_event = (tmgr_event_t)xbt_dynar_get_ptr(trace->event_list, xbt_dynar_length(trace->event_list) - 1);
+ trace->event_list.push_back(event);
+ last_event = &(trace->event_list.back());
}
if (last_event)
last_event->delta = periodicity;
s_tmgr_event_t event;
event.delta = 0.0;
event.value = 0.0;
- xbt_dynar_push(trace->event_list, &event);
+ trace->event_list.push_back(event);
return trace;
}
trace_iterator->idx = 0;
trace_iterator->resource = resource;
- xbt_assert((trace_iterator->idx < xbt_dynar_length(trace->event_list)), "Your trace should have at least one event!");
+ xbt_assert((trace_iterator->idx < trace->event_list.size()), "Your trace should have at least one event!");
xbt_heap_push(p_heap, trace_iterator, start_time);
tmgr_trace_t trace = trace_iterator->trace;
*resource = trace_iterator->resource;
- tmgr_event_t event = (tmgr_event_t)xbt_dynar_get_ptr(trace->event_list, trace_iterator->idx);
+ tmgr_event_t event = &(trace->event_list.at(trace_iterator->idx));
*value = event->value;
- if (trace_iterator->idx < xbt_dynar_length(trace->event_list) - 1) {
+ if (trace_iterator->idx < trace->event_list.size() - 1) {
xbt_heap_push(p_heap, trace_iterator, event_date + event->delta);
trace_iterator->idx++;
} else if (event->delta > 0) { /* Last element, checking for periodicity */