A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
kill an unused parameter in the trace_mgr
[simgrid.git]
/
src
/
surf
/
cpu_ti.cpp
diff --git
a/src/surf/cpu_ti.cpp
b/src/surf/cpu_ti.cpp
index
3a23bf8
..
d422089
100644
(file)
--- a/
src/surf/cpu_ti.cpp
+++ b/
src/surf/cpu_ti.cpp
@@
-5,8
+5,9
@@
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "cpu_ti.hpp"
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "cpu_ti.hpp"
-#include "trace_mgr_private.h"
#include "xbt/heap.h"
#include "xbt/heap.h"
+#include "src/surf/trace_mgr.hpp"
+#include "src/surf/platform.hpp"
#ifndef SURF_MODEL_CPUTI_H_
#define SURF_MODEL_CPUTI_H_
#ifndef SURF_MODEL_CPUTI_H_
#define SURF_MODEL_CPUTI_H_
@@
-125,9
+126,8
@@
double CpuTiTgmr::integrate(double a, double b)
}
/**
}
/**
- * \brief Auxiliary function to calculate the integral between a and b.
- * It simply calculates the integral at point a and b and returns the difference
- * between them.
+ * \brief Auxiliary function to compute the integral between a and b.
+ * It simply computes the integrals at point a and b and returns the difference between them.
* \param trace Trace structure
* \param a Initial point
* \param b Final point
* \param trace Trace structure
* \param a Initial point
* \param b Final point
@@
-139,7
+139,7
@@
double CpuTiTrace::integrateSimple(double a, double b)
}
/**
}
/**
- * \brief Auxiliary function to c
alcula
te the integral at point a.
+ * \brief Auxiliary function to c
ompu
te the integral at point a.
* \param trace Trace structure
* \param a point
* \return Integral
* \param trace Trace structure
* \param a point
* \return Integral
@@
-167,7
+167,7
@@
double CpuTiTrace::integrateSimplePoint(double a)
}
/**
}
/**
-* \brief C
alculate
the time needed to execute "amount" on cpu.
+* \brief C
omputes
the time needed to execute "amount" on cpu.
*
* Here, amount can span multiple trace periods
*
*
* Here, amount can span multiple trace periods
*
@@
-391,7
+391,9
@@
int CpuTiTrace::binarySearch(double *array, double a, int low, int high)
static void cpu_ti_define_callbacks()
{
static void cpu_ti_define_callbacks()
{
- sg_platf_postparse_add_cb(simgrid::surf::cpu_add_traces);
+ simgrid::surf::on_postparse.connect([]() {
+ surf_cpu_model_pm->addTraces();
+ });
}
/*********
}
/*********
@@
-435,20
+437,20
@@
CpuTiModel::~CpuTiModel()
xbt_heap_free(p_tiActionHeap);
}
xbt_heap_free(p_tiActionHeap);
}
-Cpu *CpuTiModel::createCpu(
const char *name
,
+Cpu *CpuTiModel::createCpu(
simgrid::s4u::Host *host
,
xbt_dynar_t speedPeak,
int pstate,
double speedScale,
tmgr_trace_t speedTrace,
int core,
xbt_dynar_t speedPeak,
int pstate,
double speedScale,
tmgr_trace_t speedTrace,
int core,
-
e_surf_resource_state_t stateInitial
,
+
int initiallyOn
,
tmgr_trace_t stateTrace)
{
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?");
tmgr_trace_t stateTrace)
{
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,
name
, speedPeak, pstate, speedScale, speedTrace,
- core,
stateInitial
, stateTrace);
+ CpuTi *cpu = new CpuTi(this,
host
, speedPeak, pstate, speedScale, speedTrace,
+ core,
initiallyOn
, stateTrace);
return cpu;
}
return cpu;
}
@@
-502,7
+504,7
@@
void CpuTiModel::addTraces()
/* connect all traces relative to hosts */
xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
/* connect all traces relative to hosts */
xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
- CpuTi *cpu = static_cast<CpuTi*>(sg_host_
surfcpu(sg_host_by_name(elm))
);
+ CpuTi *cpu = static_cast<CpuTi*>(sg_host_
by_name(elm)->pimpl_cpu
);
xbt_assert(cpu, "Host %s undefined", elm);
xbt_assert(trace, "Trace %s undefined", trace_name);
xbt_assert(cpu, "Host %s undefined", elm);
xbt_assert(trace, "Trace %s undefined", trace_name);
@@
-513,12
+515,12
@@
void CpuTiModel::addTraces()
continue;
}
XBT_DEBUG("Add state trace: %s to CPU(%s)", trace_name, elm);
continue;
}
XBT_DEBUG("Add state trace: %s to CPU(%s)", trace_name, elm);
- cpu->p_stateEvent =
tmgr_history_add_trace(history, trace, 0.0,
0, cpu);
+ cpu->p_stateEvent =
future_evt_set->add_trace(trace, 0.
0, cpu);
}
xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
}
xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
- CpuTi *cpu = static_cast<CpuTi*>(sg_host_
surfcpu(sg_host_by_name(elm))
);
+ CpuTi *cpu = static_cast<CpuTi*>(sg_host_
by_name(elm)->pimpl_cpu
);
xbt_assert(cpu, "Host %s undefined", elm);
xbt_assert(trace, "Trace %s undefined", trace_name);
xbt_assert(cpu, "Host %s undefined", elm);
xbt_assert(trace, "Trace %s undefined", trace_name);
@@
-535,11
+537,8
@@
void CpuTiModel::addTraces()
xbt_dynar_get_cpy(trace->s_list.event_list,
xbt_dynar_length(trace->s_list.event_list) - 1, &val);
if (val.delta == 0) {
xbt_dynar_get_cpy(trace->s_list.event_list,
xbt_dynar_length(trace->s_list.event_list) - 1, &val);
if (val.delta == 0) {
- tmgr_trace_t empty_trace;
- empty_trace = tmgr_empty_trace_new();
cpu->p_speedEvent =
cpu->p_speedEvent =
- tmgr_history_add_trace(history, empty_trace,
- cpu->p_availTrace->m_lastTime, 0, cpu);
+ future_evt_set->add_trace(tmgr_empty_trace_new(), cpu->p_availTrace->m_lastTime, cpu);
}
}
}
}
}
}
@@
-548,51
+547,45
@@
void CpuTiModel::addTraces()
/************
* Resource *
************/
/************
* Resource *
************/
-CpuTi::CpuTi(CpuTiModel *model,
const char *name
, xbt_dynar_t speedPeak,
+CpuTi::CpuTi(CpuTiModel *model,
simgrid::s4u::Host *host
, xbt_dynar_t speedPeak,
int pstate, double speedScale, tmgr_trace_t speedTrace, int core,
int pstate, double speedScale, tmgr_trace_t speedTrace, int core,
-
e_surf_resource_state_t stateInitial
, tmgr_trace_t stateTrace)
- : Cpu(model,
name, core, 0, speedScale, stateInitial
)
+
int initiallyOn
, tmgr_trace_t stateTrace)
+ : Cpu(model,
host, NULL, pstate, core, 0, speedScale, initiallyOn
)
{
{
- p_speedEvent = NULL;
- m_speedScale = speedScale;
+ xbt_assert(core==1,"Multi-core not handled by this model yet");
m_core = core;
m_core = core;
- tmgr_trace_t empty_trace;
- s_tmgr_event_t val;
- xbt_assert(core==1,"Multi-core not handled with this model yet");
- XBT_DEBUG("speed scale %f", speedScale);
+
+ m_speedScale = speedScale;
p_availTrace = new CpuTiTgmr(speedTrace, speedScale);
p_actionSet = new ActionTiList();
p_availTrace = new CpuTiTgmr(speedTrace, speedScale);
p_actionSet = new ActionTiList();
- m_lastUpdate = 0;
-
xbt_dynar_get_cpy(speedPeak, 0, &m_speedPeak);
XBT_DEBUG("CPU create: peak=%f", m_speedPeak);
if (stateTrace)
xbt_dynar_get_cpy(speedPeak, 0, &m_speedPeak);
XBT_DEBUG("CPU create: peak=%f", m_speedPeak);
if (stateTrace)
- p_stateEvent = tmgr_history_add_trace(history, stateTrace, 0.0, 0, this);
+ p_stateEvent = future_evt_set->add_trace(stateTrace, 0.0, this);
+
if (speedTrace && xbt_dynar_length(speedTrace->s_list.event_list) > 1) {
if (speedTrace && xbt_dynar_length(speedTrace->s_list.event_list) > 1) {
+ s_tmgr_event_t val;
// add a fake trace event if periodicity == 0
xbt_dynar_get_cpy(speedTrace->s_list.event_list,
xbt_dynar_length(speedTrace->s_list.event_list) - 1, &val);
if (val.delta == 0) {
// add a fake trace event if periodicity == 0
xbt_dynar_get_cpy(speedTrace->s_list.event_list,
xbt_dynar_length(speedTrace->s_list.event_list) - 1, &val);
if (val.delta == 0) {
- empty_trace = tmgr_empty_trace_new();
p_speedEvent =
p_speedEvent =
- tmgr_history_add_trace(history, empty_trace,
- p_availTrace->m_lastTime, 0, this);
+ future_evt_set->add_trace(tmgr_empty_trace_new(), p_availTrace->m_lastTime, this);
}
}
}
}
-}
;
+}
CpuTi::~CpuTi()
{
CpuTi::~CpuTi()
{
- this->die();
modified(false);
delete p_availTrace;
delete p_actionSet;
}
modified(false);
delete p_availTrace;
delete p_actionSet;
}
-void CpuTi::updateState(tmgr_trace_
event
_t event_type,
+void CpuTi::updateState(tmgr_trace_
iterator
_t event_type,
double value, double date)
{
CpuTiAction *action;
double value, double date)
{
CpuTiAction *action;
@@
-626,11
+619,11
@@
void CpuTi::updateState(tmgr_trace_event_t event_type,
} else if (event_type == p_stateEvent) {
if (value > 0) {
} else if (event_type == p_stateEvent) {
if (value > 0) {
- if(
getState() == SURF_RESOURCE_OFF
)
+ if(
isOff()
)
xbt_dynar_push_as(host_that_restart, char*, (char *)getName());
xbt_dynar_push_as(host_that_restart, char*, (char *)getName());
-
setState(SURF_RESOURCE_ON
);
+
turnOn(
);
} else {
} else {
-
setState(SURF_RESOURCE_OFF
);
+
turnOff(
);
/* put all action running on cpu to failed */
for(ActionTiList::iterator it(p_actionSet->begin()), itend(p_actionSet->end())
/* put all action running on cpu to failed */
for(ActionTiList::iterator it(p_actionSet->begin()), itend(p_actionSet->end())
@@
-665,8
+658,8
@@
void CpuTi::updateActionsFinishTime(double now)
CpuTiAction *action;
double sum_priority = 0.0, total_area, min_finish = -1;
CpuTiAction *action;
double sum_priority = 0.0, total_area, min_finish = -1;
-
/* update rema
ning amount of actions */
-updateRemainingAmount(now);
+
/* update remai
ning amount of actions */
+
updateRemainingAmount(now);
for(ActionTiList::iterator it(p_actionSet->begin()), itend(p_actionSet->end())
; it != itend ; ++it) {
for(ActionTiList::iterator it(p_actionSet->begin()), itend(p_actionSet->end())
; it != itend ; ++it) {
@@
-735,7
+728,7
@@
updateRemainingAmount(now);
action->m_finish,
action->getMaxDuration());
}
action->m_finish,
action->getMaxDuration());
}
-/* remove from modified cpu */
+
/* remove from modified cpu */
modified(false);
}
modified(false);
}
@@
-750,11
+743,7
@@
double CpuTi::getAvailableSpeed()
return Cpu::getAvailableSpeed();
}
return Cpu::getAvailableSpeed();
}
-/**
-* \brief Update the remaining amount of actions
-*
-* \param now Current time
-*/
+/** @brief Update the remaining amount of actions */
void CpuTi::updateRemainingAmount(double now)
{
double area_total;
void CpuTi::updateRemainingAmount(double now)
{
double area_total;
@@
-764,7
+753,7
@@
void CpuTi::updateRemainingAmount(double now)
if (m_lastUpdate >= now)
return;
if (m_lastUpdate >= now)
return;
-
/* calcule the surface
*/
+
/* compute the integration area
*/
area_total = p_availTrace->integrate(m_lastUpdate, now) * m_speedPeak;
XBT_DEBUG("Flops total: %f, Last update %f", area_total,
m_lastUpdate);
area_total = p_availTrace->integrate(m_lastUpdate, now) * m_speedPeak;
XBT_DEBUG("Flops total: %f, Last update %f", area_total,
m_lastUpdate);
@@
-805,7
+794,7
@@
void CpuTi::updateRemainingAmount(double now)
CpuAction *CpuTi::execute(double size)
{
XBT_IN("(%s,%g)", getName(), size);
CpuAction *CpuTi::execute(double size)
{
XBT_IN("(%s,%g)", getName(), size);
- CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), size,
getState() != SURF_RESOURCE_ON
, this);
+ CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), size,
isOff()
, this);
p_actionSet->push_back(*action);
p_actionSet->push_back(*action);
@@
-820,7
+809,7
@@
CpuAction *CpuTi::sleep(double duration)
duration = MAX(duration, sg_surf_precision);
XBT_IN("(%s,%g)", getName(), duration);
duration = MAX(duration, sg_surf_precision);
XBT_IN("(%s,%g)", getName(), duration);
- CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), 1.0,
getState() != SURF_RESOURCE_ON
, this);
+ CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), 1.0,
isOff()
, this);
action->m_maxDuration = duration;
action->m_suspended = 2;
action->m_maxDuration = duration;
action->m_suspended = 2;
@@
-859,8
+848,6
@@
CpuTiAction::CpuTiAction(CpuTiModel *model_, double cost, bool failed,
CpuTi *cpu)
: CpuAction(model_, cost, failed)
{
CpuTi *cpu)
: CpuAction(model_, cost, failed)
{
- m_suspended = 0; /* Should be useless because of the
- calloc but it seems to help valgrind... */
p_cpu = cpu;
m_indexHeap = -1;
p_cpu->modified(true);
p_cpu = cpu;
m_indexHeap = -1;
p_cpu->modified(true);
@@
-924,11
+911,6
@@
void CpuTiAction::resume()
XBT_OUT();
}
XBT_OUT();
}
-bool CpuTiAction::isSuspended()
-{
- return m_suspended == 1;
-}
-
void CpuTiAction::setMaxDuration(double duration)
{
double min_finish;
void CpuTiAction::setMaxDuration(double duration)
{
double min_finish;