X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fbd4fe2f3be7345d4e37fe02ce25b4a3a9f24a2f..f57edc1d5b4f497883b451fc85d2d653d27a8247:/src/surf/cpu_ti.c diff --git a/src/surf/cpu_ti.c b/src/surf/cpu_ti.c index 30a42b0787..876688ddae 100644 --- a/src/surf/cpu_ti.c +++ b/src/surf/cpu_ti.c @@ -15,7 +15,6 @@ #include "cpu_ti_private.h" #include "xbt/heap.h" - XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_ti, surf, "Logging specific to the SURF CPU TRACE INTEGRATION module"); @@ -144,7 +143,7 @@ static surf_cpu_ti_tgmr_t cpu_ti_parse_trace(tmgr_trace_t power_trace, } -static cpu_ti_t cpu_ti_new(char *name, double power_peak, +static void* cpu_ti_create_resource(char *name, double power_peak, double power_scale, tmgr_trace_t power_trace, int core, @@ -156,6 +155,7 @@ static cpu_ti_t cpu_ti_new(char *name, double power_peak, 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_assert(core==1,"Multi-core not handled with this model yet"); xbt_assert(!surf_cpu_resource_by_name(name), "Host '%s' declared several times in the platform file", name); @@ -193,30 +193,14 @@ static cpu_ti_t cpu_ti_new(char *name, double power_peak, static void parse_cpu_ti_init(void) { - double power_peak = 0.0; - double power_scale = 0.0; - int core = 0; - tmgr_trace_t power_trace = NULL; - e_surf_resource_state_t state_initial = SURF_RESOURCE_OFF; - tmgr_trace_t state_trace = NULL; - - power_peak = get_cpu_power(A_surfxml_host_power); - surf_parse_get_double(&power_scale, A_surfxml_host_availability); - power_trace = tmgr_trace_new(A_surfxml_host_availability_file); - surf_parse_get_int(&core, A_surfxml_host_core); - - 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) - state_initial = SURF_RESOURCE_ON; - if (A_surfxml_host_state == A_surfxml_host_state_OFF) - state_initial = SURF_RESOURCE_OFF; - state_trace = tmgr_trace_new(A_surfxml_host_state_file); - - cpu_ti_new(xbt_strdup(A_surfxml_host_id), power_peak, power_scale, - power_trace, core, state_initial, state_trace, - current_property_set); + cpu_ti_create_resource(struct_host->V_host_id, + struct_host->V_host_power_peak, + struct_host->V_host_power_scale, + struct_host->V_host_power_trace, + struct_host->V_host_core, + struct_host->V_host_state_initial, + struct_host->V_host_state_trace, + current_property_set); current_property_set = NULL; } @@ -746,19 +730,6 @@ static double cpu_ti_get_available_speed(void *cpu) return CPU->power_scale; } -static void cpu_ti_create_resource(char *name, double power_peak, - double power_scale, - tmgr_trace_t power_trace, - int core, - e_surf_resource_state_t state_initial, - tmgr_trace_t state_trace, - xbt_dict_t cpu_properties) -{ - 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; @@ -1103,24 +1074,21 @@ static double surf_cpu_ti_solve_trace_simple(surf_cpu_ti_trace_t trace, static int surf_cpu_ti_binary_search(double *array, double a, int low, int high) { - xbt_assert(low a) - return mid; - - if (array[mid] < a) - low = mid + 1; - else - high = mid - 1; + do { + mid = low + (high - low) / 2; + XBT_DEBUG("a %lf low %d high %d mid %d value %lf", a, low, high, mid, + array[mid]); + + if (array[mid] > a) + high = mid; + else + low = mid; } - return mid; + while (low < high - 1); + + return low; }