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
model-checker : new test unit for snapshot comparison
[simgrid.git]
/
src
/
surf
/
cpu_ti.c
diff --git
a/src/surf/cpu_ti.c
b/src/surf/cpu_ti.c
index
7c1a1a6
..
34a301c
100644
(file)
--- a/
src/surf/cpu_ti.c
+++ b/
src/surf/cpu_ti.c
@@
-14,6
+14,7
@@
#include "trace_mgr_private.h"
#include "cpu_ti_private.h"
#include "xbt/heap.h"
#include "trace_mgr_private.h"
#include "cpu_ti_private.h"
#include "xbt/heap.h"
+#include "surf/surf_resource.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_ti, surf,
"Logging specific to the SURF CPU TRACE INTEGRATION module");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_ti, surf,
"Logging specific to the SURF CPU TRACE INTEGRATION module");
@@
-49,10
+50,8
@@
static int surf_cpu_ti_binary_search(double *array, double a, int low,
static void surf_cpu_ti_free_trace(surf_cpu_ti_trace_t trace)
{
static void surf_cpu_ti_free_trace(surf_cpu_ti_trace_t trace)
{
- if (trace->time_points)
- xbt_free(trace->time_points);
- if (trace->integral)
- xbt_free(trace->integral);
+ xbt_free(trace->time_points);
+ xbt_free(trace->integral);
xbt_free(trace);
}
xbt_free(trace);
}
@@
-74,12
+73,12
@@
static surf_cpu_ti_trace_t surf_cpu_ti_trace_new(tmgr_trace_t power_trace)
trace = xbt_new0(s_surf_cpu_ti_trace_t, 1);
trace->time_points =
xbt_malloc0(sizeof(double) *
trace = xbt_new0(s_surf_cpu_ti_trace_t, 1);
trace->time_points =
xbt_malloc0(sizeof(double) *
- (xbt_dynar_length(power_trace->event_list) + 1));
+ (xbt_dynar_length(power_trace->
s_list.
event_list) + 1));
trace->integral =
xbt_malloc0(sizeof(double) *
trace->integral =
xbt_malloc0(sizeof(double) *
- (xbt_dynar_length(power_trace->event_list) + 1));
- trace->nb_points = xbt_dynar_length(power_trace->event_list);
- xbt_dynar_foreach(power_trace->event_list, cpt, val) {
+ (xbt_dynar_length(power_trace->
s_list.
event_list) + 1));
+ trace->nb_points = xbt_dynar_length(power_trace->
s_list.
event_list);
+ xbt_dynar_foreach(power_trace->
s_list.
event_list, cpt, val) {
trace->time_points[i] = time;
trace->integral[i] = integral;
integral += val.delta * val.value;
trace->time_points[i] = time;
trace->integral[i] = integral;
integral += val.delta * val.value;
@@
-117,8
+116,8
@@
static surf_cpu_ti_tgmr_t cpu_ti_parse_trace(tmgr_trace_t power_trace,
}
/* only one point available, fixed trace */
}
/* only one point available, fixed trace */
- if (xbt_dynar_length(power_trace->event_list) == 1) {
- xbt_dynar_get_cpy(power_trace->event_list, 0, &val);
+ if (xbt_dynar_length(power_trace->
s_list.
event_list) == 1) {
+ xbt_dynar_get_cpy(power_trace->
s_list.
event_list, 0, &val);
trace->type = TRACE_FIXED;
trace->value = val.value;
return trace;
trace->type = TRACE_FIXED;
trace->value = val.value;
return trace;
@@
-128,7
+127,7
@@
static surf_cpu_ti_tgmr_t cpu_ti_parse_trace(tmgr_trace_t power_trace,
trace->power_trace = power_trace;
/* count the total time of trace file */
trace->power_trace = power_trace;
/* count the total time of trace file */
- xbt_dynar_foreach(power_trace->event_list, cpt, val) {
+ xbt_dynar_foreach(power_trace->
s_list.
event_list, cpt, val) {
total_time += val.delta;
}
trace->trace = surf_cpu_ti_trace_new(power_trace);
total_time += val.delta;
}
trace->trace = surf_cpu_ti_trace_new(power_trace);
@@
-173,10
+172,10
@@
static void* cpu_ti_create_resource(const char *name, double power_peak,
if (state_trace)
cpu->state_event =
tmgr_history_add_trace(history, state_trace, 0.0, 0, cpu);
if (state_trace)
cpu->state_event =
tmgr_history_add_trace(history, state_trace, 0.0, 0, cpu);
- if (power_trace && xbt_dynar_length(power_trace->event_list) > 1) {
+ if (power_trace && xbt_dynar_length(power_trace->
s_list.
event_list) > 1) {
/* add a fake trace event if periodicity == 0 */
/* add a fake trace event if periodicity == 0 */
- xbt_dynar_get_cpy(power_trace->event_list,
- xbt_dynar_length(power_trace->event_list) - 1, &val);
+ xbt_dynar_get_cpy(power_trace->
s_list.
event_list,
+ xbt_dynar_length(power_trace->
s_list.
event_list) - 1, &val);
if (val.delta == 0) {
empty_trace = tmgr_empty_trace_new();
cpu->power_event =
if (val.delta == 0) {
empty_trace = tmgr_empty_trace_new();
cpu->power_event =
@@
-192,13
+191,13
@@
static void* cpu_ti_create_resource(const char *name, double power_peak,
static void parse_cpu_ti_init(sg_platf_host_cbarg_t host)
{
static void parse_cpu_ti_init(sg_platf_host_cbarg_t host)
{
- cpu_ti_create_resource(host->
V_host_
id,
- host->
V_host_
power_peak,
- host->
V_host_
power_scale,
- host->
V_host_
power_trace,
- host->
V_host_core
,
- host->
V_host_state_initial
,
- host->
V_host_
state_trace,
+ cpu_ti_create_resource(host->id,
+ host->power_peak,
+ host->power_scale,
+ host->power_trace,
+ host->
core_amount
,
+ host->
initial_state
,
+ host->state_trace,
host->properties);
}
host->properties);
}
@@
-245,10
+244,10
@@
static void add_traces_cpu_ti(void)
cpu->avail_trace = cpu_ti_parse_trace(trace, cpu->power_scale);
/* add a fake trace event if periodicity == 0 */
cpu->avail_trace = cpu_ti_parse_trace(trace, cpu->power_scale);
/* add a fake trace event if periodicity == 0 */
- if (trace && xbt_dynar_length(trace->event_list) > 1) {
+ if (trace && xbt_dynar_length(trace->
s_list.
event_list) > 1) {
s_tmgr_event_t val;
s_tmgr_event_t val;
- xbt_dynar_get_cpy(trace->event_list,
- xbt_dynar_length(trace->event_list) - 1, &val);
+ 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();
if (val.delta == 0) {
tmgr_trace_t empty_trace;
empty_trace = tmgr_empty_trace_new();
@@
-263,7
+262,7
@@
static void add_traces_cpu_ti(void)
static void cpu_ti_define_callbacks()
{
sg_platf_host_add_cb(parse_cpu_ti_init);
static void cpu_ti_define_callbacks()
{
sg_platf_host_add_cb(parse_cpu_ti_init);
- s
urfxml_add_callback(ETag_surfxml_platform_cb_list, &
add_traces_cpu_ti);
+ s
g_platf_postparse_add_cb(
add_traces_cpu_ti);
}
static int cpu_ti_resource_used(void *resource_id)
}
static int cpu_ti_resource_used(void *resource_id)
@@
-314,7
+313,6
@@
static void cpu_ti_action_state_set(surf_action_t action,
*/
static void cpu_ti_update_remaining_amount(cpu_ti_t cpu, double now)
{
*/
static void cpu_ti_update_remaining_amount(cpu_ti_t cpu, double now)
{
-#define GENERIC_ACTION(action) action->generic_action
double area_total;
surf_action_cpu_ti_t action;
double area_total;
surf_action_cpu_ti_t action;
@@
-330,13
+328,14
@@
static void cpu_ti_update_remaining_amount(cpu_ti_t cpu, double now)
cpu->last_update);
xbt_swag_foreach(action, cpu->action_set) {
cpu->last_update);
xbt_swag_foreach(action, cpu->action_set) {
+ surf_action_t generic = (surf_action_t)action;
/* action not running, skip it */
/* action not running, skip it */
- if (
GENERIC_ACTION(action).
state_set !=
+ if (
generic->
state_set !=
surf_cpu_model->states.running_action_set)
continue;
/* bogus priority, skip it */
surf_cpu_model->states.running_action_set)
continue;
/* bogus priority, skip it */
- if (
GENERIC_ACTION(action).
priority <= 0)
+ if (
generic->
priority <= 0)
continue;
/* action suspended, skip it */
continue;
/* action suspended, skip it */
@@
-344,20
+343,20
@@
static void cpu_ti_update_remaining_amount(cpu_ti_t cpu, double now)
continue;
/* action don't need update */
continue;
/* action don't need update */
- if (
GENERIC_ACTION(action).
start >= now)
+ if (
generic->
start >= now)
continue;
/* skip action that are finishing now */
continue;
/* skip action that are finishing now */
- if (
GENERIC_ACTION(action).
finish >= 0
- &&
GENERIC_ACTION(action).
finish <= now)
+ if (
generic->
finish >= 0
+ &&
generic->
finish <= now)
continue;
/* update remaining */
continue;
/* update remaining */
- double_update(&(
GENERIC_ACTION(action).
remains),
+ double_update(&(
generic->
remains),
area_total / (cpu->sum_priority *
area_total / (cpu->sum_priority *
-
GENERIC_ACTION(action).
priority));
+
generic->
priority));
XBT_DEBUG("Update remaining action(%p) remaining %lf", action,
XBT_DEBUG("Update remaining action(%p) remaining %lf", action,
-
GENERIC_ACTION(action).
remains);
+
generic->
remains);
}
cpu->last_update = now;
#undef GENERIC_ACTION
}
cpu->last_update = now;
#undef GENERIC_ACTION
@@
-507,8
+506,8
@@
static void cpu_ti_update_resource_state(void *id,
xbt_swag_insert(cpu, cpu_ti_modified_cpu);
power_trace = cpu->avail_trace->power_trace;
xbt_swag_insert(cpu, cpu_ti_modified_cpu);
power_trace = cpu->avail_trace->power_trace;
- xbt_dynar_get_cpy(power_trace->event_list,
- xbt_dynar_length(power_trace->event_list) - 1, &val);
+ xbt_dynar_get_cpy(power_trace->
s_list.
event_list,
+ xbt_dynar_length(power_trace->
s_list.
event_list) - 1, &val);
/* free old trace */
surf_cpu_ti_free_tmgr(cpu->avail_trace);
cpu->power_scale = val.value;
/* free old trace */
surf_cpu_ti_free_tmgr(cpu->avail_trace);
cpu->power_scale = val.value;
@@
-682,8
+681,8
@@
static double cpu_ti_action_get_remains(surf_action_t action)
cpu_ti_update_remaining_amount((cpu_ti_t)
((surf_action_cpu_ti_t) action)->cpu,
surf_get_clock());
cpu_ti_update_remaining_amount((cpu_ti_t)
((surf_action_cpu_ti_t) action)->cpu,
surf_get_clock());
- return action->remains;
XBT_OUT();
XBT_OUT();
+ return action->remains;
}
static e_surf_resource_state_t cpu_ti_get_state(void *cpu)
}
static e_surf_resource_state_t cpu_ti_get_state(void *cpu)
@@
-715,7
+714,7
@@
static double surf_cpu_ti_get_power_scale(surf_cpu_ti_tgmr_t trace,
point =
surf_cpu_ti_binary_search(trace->trace->time_points, reduced_a, 0,
trace->trace->nb_points - 1);
point =
surf_cpu_ti_binary_search(trace->trace->time_points, reduced_a, 0,
trace->trace->nb_points - 1);
- xbt_dynar_get_cpy(trace->power_trace->event_list, point, &val);
+ xbt_dynar_get_cpy(trace->power_trace->
s_list.
event_list, point, &val);
return val.value;
}
return val.value;
}
@@
-766,7
+765,7
@@
static void surf_cpu_ti_model_init_internal(void)
cpu_ti_modified_cpu =
xbt_swag_new(xbt_swag_offset(cpu, modified_cpu_hookup));
cpu_ti_modified_cpu =
xbt_swag_new(xbt_swag_offset(cpu, modified_cpu_hookup));
- surf_cpu_model->name = "
CPU_TI
";
+ surf_cpu_model->name = "
cpu_ti
";
surf_cpu_model->action_unref = cpu_ti_action_unref;
surf_cpu_model->action_cancel = cpu_ti_action_cancel;
surf_cpu_model->action_unref = cpu_ti_action_unref;
surf_cpu_model->action_cancel = cpu_ti_action_cancel;
@@
-805,8
+804,7
@@
static void surf_cpu_ti_model_init_internal(void)
void surf_cpu_model_init_ti()
{
void surf_cpu_model_init_ti()
{
- if (surf_cpu_model)
- return;
+ xbt_assert(!surf_cpu_model,"CPU model already initialized. This should not happen.");
surf_cpu_ti_model_init_internal();
cpu_ti_define_callbacks();
xbt_dynar_push(model_list, &surf_cpu_model);
surf_cpu_ti_model_init_internal();
cpu_ti_define_callbacks();
xbt_dynar_push(model_list, &surf_cpu_model);