-/* Copyright (c) 2013-2022. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2013-2023. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(cpu_ti, res_cpu, "CPU resource, Trace Integration model");
-namespace simgrid {
-namespace kernel {
-namespace resource {
+namespace simgrid::kernel::resource {
/*********
* Trace *
XBT_DEBUG("a %f ind %ld integral %f ind + 1 %f ind %f time +1 %f time %f", a, ind, integral, integral_[ind + 1],
integral_[ind], time_points_[ind + 1], time_points_[ind]);
- double_update(&a_aux, time_points_[ind], sg_maxmin_precision * sg_surf_precision);
+ double_update(&a_aux, time_points_[ind], sg_maxmin_precision * sg_precision_timing);
if (a_aux > 0)
integral +=
((integral_[ind + 1] - integral_[ind]) / (time_points_[ind + 1] - time_points_[ind])) * (a - time_points_[ind]);
XBT_DEBUG("Quotient: %g reduced_amount: %f reduced_a: %f", quotient, reduced_amount, reduced_a);
/* Now solve for new_amount which is <= trace_total */
- double reduced_b;
XBT_DEBUG("Solve integral: [%.2f, amount=%.2f]", reduced_a, reduced_amount);
- double amount_till_end = integrate(reduced_a, last_time_);
- if (amount_till_end > reduced_amount) {
- reduced_b = profile_->solve_simple(reduced_a, reduced_amount);
- } else {
- reduced_b = last_time_ + profile_->solve_simple(0.0, reduced_amount - amount_till_end);
- }
+ double amount_till_end = integrate(reduced_a, last_time_);
+ double reduced_b = amount_till_end > reduced_amount
+ ? profile_->solve_simple(reduced_a, reduced_amount)
+ : last_time_ + profile_->solve_simple(0.0, reduced_amount - amount_till_end);
/* Re-map to the original b and amount */
return last_time_ * floor(a / last_time_) + (quotient * last_time_) + reduced_b;
void CpuTiModel::update_actions_state(double now, double /*delta*/)
{
- while (not get_action_heap().empty() && double_equals(get_action_heap().top_date(), now, sg_surf_precision)) {
+ while (not get_action_heap().empty() && double_equals(get_action_heap().top_date(), now, sg_precision_timing)) {
auto* action = static_cast<CpuTiAction*>(get_action_heap().pop());
XBT_DEBUG("Action %p: finish", action);
action->finish(Action::State::FINISHED);
CpuAction* CpuTi::sleep(double duration)
{
if (duration > 0)
- duration = std::max(duration, sg_surf_precision);
+ duration = std::max(duration, sg_precision_timing);
XBT_IN("(%s,%g)", get_cname(), duration);
auto* action = new CpuTiAction(this, 1.0);
return get_remains_no_update();
}
-} // namespace resource
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::resource