s_tmgr_event_t val;
cpu_ti_t cpu = xbt_new0(s_cpu_ti_t, 1);
s_surf_action_cpu_ti_t ti_action;
- xbt_assert1(!surf_model_resource_by_name(surf_cpu_model, name),
+ xbt_assert(!surf_cpu_resource_by_name(name),
"Host '%s' declared several times in the platform file",
name);
- xbt_assert0(core==1,"Multi-core not handled with this model yet");
+ xbt_assert(core==1,"Multi-core not handled with this model yet");
cpu->action_set =
xbt_swag_new(xbt_swag_offset(ti_action, cpu_list_hookup));
cpu->generic_resource.model = surf_cpu_model;
cpu->generic_resource.name = name;
cpu->generic_resource.properties = cpu_properties;
cpu->power_peak = power_peak;
- xbt_assert0(cpu->power_peak > 0, "Power has to be >0");
+ xbt_assert(cpu->power_peak > 0, "Power has to be >0");
XBT_DEBUG("power scale %lf", power_scale);
cpu->power_scale = power_scale;
cpu->avail_trace = cpu_ti_parse_trace(power_trace, power_scale);
cpu->avail_trace->last_time, 0, cpu);
}
}
- xbt_dict_set(surf_model_resource_set(surf_cpu_model), name, cpu,
- surf_resource_free);
+ xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu);
return cpu;
}
power_trace = tmgr_trace_new(A_surfxml_host_availability_file);
surf_parse_get_int(&core, A_surfxml_host_core);
- xbt_assert0((A_surfxml_host_state == A_surfxml_host_state_ON) ||
+ xbt_assert((A_surfxml_host_state == A_surfxml_host_state_ON) ||
(A_surfxml_host_state == A_surfxml_host_state_OFF),
"Invalid state");
if (A_surfxml_host_state == A_surfxml_host_state_ON)
/* connect all traces relative to hosts */
xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
- cpu_ti_t cpu = surf_model_resource_by_name(surf_cpu_model, elm);
+ cpu_ti_t cpu = surf_cpu_resource_by_name(elm);
- xbt_assert1(cpu, "Host %s undefined", elm);
- xbt_assert1(trace, "Trace %s undefined", trace_name);
+ xbt_assert(cpu, "Host %s undefined", elm);
+ xbt_assert(trace, "Trace %s undefined", trace_name);
if (cpu->state_event) {
XBT_DEBUG("Trace already configured for this CPU(%s), ignoring it",
xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name);
- cpu_ti_t cpu = surf_model_resource_by_name(surf_cpu_model, elm);
+ cpu_ti_t cpu = surf_cpu_resource_by_name(elm);
- xbt_assert1(cpu, "Host %s undefined", elm);
- xbt_assert1(trace, "Trace %s undefined", trace_name);
+ xbt_assert(cpu, "Host %s undefined", elm);
+ xbt_assert(trace, "Trace %s undefined", trace_name);
XBT_DEBUG("Add power trace: %s to CPU(%s)", trace_name, elm);
if (cpu->avail_trace)
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, 0, &val);
+ xbt_dynar_get_cpy(trace->power_trace->event_list, point, &val);
return val.value;
}
tmgr_trace_t state_trace,
xbt_dict_t cpu_properties)
{
- xbt_assert0(core==1,"Multi-core not handled with this model yet");
+ xbt_assert(core==1,"Multi-core not handled with this model yet");
cpu_ti_new(name, power_peak, power_scale, power_trace, core,
state_initial, state_trace, cpu_properties);
}
static void cpu_ti_finalize(void)
{
- void *cpu;
- xbt_dict_cursor_t cursor;
+ void **cpu;
+ xbt_lib_cursor_t cursor;
char *key;
- xbt_dict_foreach(surf_model_resource_set(surf_cpu_model), cursor, key,
- cpu) {
- cpu_ti_t CPU = cpu;
- xbt_swag_free(CPU->action_set);
- surf_cpu_ti_free_tmgr(CPU->avail_trace);
+
+ xbt_lib_foreach(host_lib, cursor, key, cpu){
+ if(cpu[SURF_CPU_LEVEL])
+ {
+ cpu_ti_t CPU = cpu[SURF_CPU_LEVEL];
+ xbt_swag_free(CPU->action_set);
+ surf_cpu_ti_free_tmgr(CPU->avail_trace);
+ }
}
surf_model_exit(surf_cpu_model);
static int surf_cpu_ti_binary_search(double *array, double a, int low,
int high)
{
- int mid = low + (high - low) / 2;
- XBT_DEBUG("a %lf low %d high %d mid %d value %lf", a, low, high, mid,
- array[mid]);
- /* a == array[mid] */
- if (array[mid] == a)
- return mid;
- /* a is between mid and mid+1 */
- if (array[mid] < a && array[mid + 1] > a)
- return mid;
-
- if (array[mid] < a)
- return surf_cpu_ti_binary_search(array, a, mid + 1, high);
- else
- return surf_cpu_ti_binary_search(array, a, low, mid - 1);
+ xbt_assert(low<high,"Wrong parameters: low (%d) should be smaller than high (%d)",low,high);
+
+ int mid;
+ while(low<high) {
+ mid = low + (high - low) / 2;
+ XBT_DEBUG("a %lf low %d high %d mid %d value %lf", a, low, high, mid,
+ array[mid]);
+ /* a == array[mid] */
+ if (array[mid] == a)
+ return mid;
+ /* a is between mid and mid+1 */
+ if (array[mid] < a && array[mid + 1] > a)
+ return mid;
+
+ if (array[mid] < a)
+ low = mid + 1;
+ else
+ high = mid - 1;
+ }
+ return mid;
}