From: Navarrop Date: Fri, 2 Dec 2011 12:09:05 +0000 (+0100) Subject: Argh I was confused between UM_FULL and UM_LAZY. This commit sets it right. X-Git-Tag: exp_20120216~237^2~34 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6e946bc777de0b8e23df72df530b2ff194261d8b Argh I was confused between UM_FULL and UM_LAZY. This commit sets it right. --- diff --git a/src/surf/cpu_im.c b/src/surf/cpu_im.c index 659349ff92..8088d27396 100644 --- a/src/surf/cpu_im.c +++ b/src/surf/cpu_im.c @@ -9,7 +9,7 @@ surf_model_t surf_cpu_model = NULL; lmm_system_t cpu_maxmin_system = NULL; -e_UM_t update_mechanism = UM_LAZY; +e_UM_t cpu_update_mechanism = UM_FULL; #undef GENERIC_LMM_ACTION #undef GENERIC_ACTION @@ -87,7 +87,7 @@ static void* cpu_im_create_resource(const char *name, double power_peak, cpu->core * cpu->power_scale * cpu->power_peak); xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu); - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) cpu->action_set = xbt_swag_new(xbt_swag_offset(action, cpu_list_hookup)); return cpu; @@ -159,7 +159,7 @@ static int cpu_im_action_unref(surf_action_t action) if (((surf_action_lmm_t) action)->variable) lmm_variable_free(cpu_im_maxmin_system, ((surf_action_lmm_t) action)->variable); - if(update_mechanism == UM_FULL){ + if(cpu_update_mechanism == UM_LAZY){ /* remove from heap */ xbt_heap_remove(cpu_im_action_heap, ((surf_action_cpu_Cas01_im_t) action)->index_heap); @@ -179,7 +179,7 @@ static int cpu_im_action_unref(surf_action_t action) static void cpu_im_action_cancel(surf_action_t action) { surf_action_state_set(action, SURF_ACTION_FAILED); - if(update_mechanism == UM_FULL){ + if(cpu_update_mechanism == UM_LAZY){ xbt_heap_remove(cpu_im_action_heap, ((surf_action_cpu_Cas01_im_t) action)->index_heap); xbt_swag_remove(action, @@ -379,7 +379,7 @@ static void cpu_im_update_resource_state(void *id, lmm_update_variable_bound(cpu_im_maxmin_system, GENERIC_LMM_ACTION(action).variable, cpu->power_scale * cpu->power_peak); } - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) xbt_swag_insert(cpu, cpu_im_modified_cpu); if (tmgr_trace_event_free(event_type)) cpu->power_event = NULL; @@ -433,7 +433,7 @@ static surf_action_t cpu_im_execute(void *cpu, double size) GENERIC_LMM_ACTION(action).variable = lmm_variable_new(cpu_im_maxmin_system, action, GENERIC_ACTION(action).priority, CPU->power_scale * CPU->power_peak, 1); - if(update_mechanism == UM_FULL){ + if(cpu_update_mechanism == UM_LAZY){ action->index_heap = -1; action->cpu = CPU; xbt_swag_insert(CPU, cpu_im_modified_cpu); @@ -467,7 +467,7 @@ static surf_action_t cpu_im_action_sleep(void *cpu, double duration) lmm_update_variable_weight(cpu_im_maxmin_system, GENERIC_LMM_ACTION(action).variable, 0.0); - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) xbt_swag_insert(cpu, cpu_im_modified_cpu); XBT_OUT(); return (surf_action_t) action; @@ -481,7 +481,7 @@ static void cpu_im_action_suspend(surf_action_t action) ((surf_action_lmm_t) action)->variable, 0.0); ((surf_action_lmm_t) action)->suspended = 1; - if(update_mechanism == UM_FULL){ + if(cpu_update_mechanism == UM_LAZY){ xbt_heap_remove(cpu_im_action_heap, ((surf_action_cpu_Cas01_im_t) action)->index_heap); xbt_swag_insert(ACTION_GET_CPU(action), cpu_im_modified_cpu); @@ -499,7 +499,7 @@ static void cpu_im_action_resume(surf_action_t action) ((surf_action_lmm_t) action)->variable, action->priority); ((surf_action_lmm_t) action)->suspended = 0; - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) xbt_swag_insert(ACTION_GET_CPU(action), cpu_im_modified_cpu); } XBT_OUT(); @@ -517,7 +517,7 @@ static void cpu_im_action_set_max_duration(surf_action_t action, action->max_duration = duration; /* insert cpu in modified_cpu set to notice the max duration change */ - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) xbt_swag_insert(ACTION_GET_CPU(action), cpu_im_modified_cpu); XBT_OUT(); } @@ -531,7 +531,7 @@ static void cpu_im_action_set_priority(surf_action_t action, ((surf_action_lmm_t) action)->variable, priority); - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) xbt_swag_insert(ACTION_GET_CPU(action), cpu_im_modified_cpu); XBT_OUT(); } @@ -550,7 +550,7 @@ static double cpu_im_action_get_remains(surf_action_t action) { XBT_IN("(%p)", action); /* update remains before return it */ - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) cpu_im_update_remains(ACTION_GET_CPU(action), surf_get_clock()); return action->remains; XBT_OUT(); @@ -652,7 +652,7 @@ static void surf_cpu_im_model_init_internal(const char* name) sg_maxmin_selective_update = 1; cpu_im_maxmin_system = lmm_system_new(); } - if(update_mechanism == UM_FULL){ + if(cpu_update_mechanism == UM_LAZY){ cpu_im_action_heap = xbt_heap_new(8, NULL); xbt_heap_set_update_callback(cpu_im_action_heap, cpu_im_action_update_index_heap); @@ -681,9 +681,9 @@ void surf_cpu_model_init_Cas01_im() { char* name; if( strcmp(xbt_cfg_get_string(_surf_cfg_set, "cpu/model"),"Cas01")) - update_mechanism = UM_FULL; + cpu_update_mechanism = UM_LAZY; else - update_mechanism = UM_LAZY; + cpu_update_mechanism = UM_FULL; if (surf_cpu_model) return; @@ -695,9 +695,9 @@ void surf_cpu_model_init_Cas01_im() double generic_share_resources(double now) { surf_action_cpu_Cas01_im_t action; - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) return cpu_im_share_resources(now); - else if (update_mechanism == UM_LAZY) + else if (cpu_update_mechanism == UM_FULL) { return generic_maxmin_share_resources(surf_cpu_model->states.running_action_set, xbt_swag_offset(*action, generic_lmm_action.variable), @@ -749,9 +749,9 @@ static void cpu_update_actions_state(double now, double delta) void generic_update_actions_state(double now, double delta) { - if(update_mechanism == UM_FULL) + if(cpu_update_mechanism == UM_LAZY) cpu_im_update_actions_state(now, delta); - else if(update_mechanism == UM_LAZY) + else if(cpu_update_mechanism == UM_FULL) { cpu_update_actions_state(now, delta); } diff --git a/src/surf/network_im.c b/src/surf/network_im.c index 164d55fb2b..8c33ec3f6f 100644 --- a/src/surf/network_im.c +++ b/src/surf/network_im.c @@ -45,6 +45,8 @@ int sg_network_fullduplex = 0; xbt_dict_t gap_lookup = NULL; +e_UM_t network_update_mechanism = UM_FULL; + typedef struct network_link_CM02_im { s_surf_resource_lmm_t lmm_resource; /* must remain first to be added to a trace */ @@ -62,7 +64,6 @@ static xbt_swag_t im_net_modified_set = NULL; static xbt_heap_t im_net_action_heap = NULL; xbt_swag_t keep_track = NULL; extern int sg_maxmin_selective_update; -extern e_UM_t update_mechanism; #ifdef HAVE_SMPI static void gap_append(double size, const link_CM02_im_t link, surf_action_network_CM02_im_t action); @@ -225,8 +226,7 @@ static void im_net_parse_link_init(sg_platf_link_cbarg_t link) link->state, link->state_trace, link->policy, - NULL); /* FIXME: We need to deep copy the properties or - * we won't be able to free it */ + link->properties); xbt_free(link_id); } else{ @@ -321,7 +321,7 @@ static int im_net_action_unref(surf_action_t action) lmm_variable_free(network_im_maxmin_system, ((surf_action_network_CM02_im_t) action)->variable); } - if(update_mechanism == UM_FULL){// remove action from the heap + if(network_update_mechanism == UM_LAZY){// remove action from the heap heap_remove((surf_action_network_CM02_im_t) action); xbt_swag_remove(action, im_net_modified_set); } @@ -341,7 +341,7 @@ static int im_net_action_unref(surf_action_t action) static void im_net_action_cancel(surf_action_t action) { surf_network_model->action_state_set(action, SURF_ACTION_FAILED); - if(update_mechanism == UM_FULL){// remove action from the heap + if(network_update_mechanism == UM_LAZY){// remove action from the heap xbt_swag_remove(action, im_net_modified_set); heap_remove((surf_action_network_CM02_im_t) action); } @@ -361,7 +361,7 @@ static int im_net_get_link_latency_limited(surf_action_t action) double im_net_action_get_remains(surf_action_t action) { - if(update_mechanism == UM_FULL)/* update remains before return it */ + if(network_update_mechanism == UM_LAZY)/* update remains before return it */ update_action_remaining(surf_get_clock()); return action->remains; } @@ -515,9 +515,9 @@ static double im_net_share_resources(double now) static double generic_net_share_resources(double now) { - if(update_mechanism == UM_FULL) + if(network_update_mechanism == UM_LAZY) return im_net_share_resources(now); - else if (update_mechanism == UM_LAZY) + else if (network_update_mechanism == UM_FULL) { return net_share_resources(now); } else { @@ -641,9 +641,9 @@ static void im_net_update_actions_state(double now, double delta) static void generic_net_update_actions_state(double now, double delta) { - if(update_mechanism == UM_FULL) + if(network_update_mechanism == UM_LAZY) im_net_update_actions_state(now,delta); - else if (update_mechanism == UM_LAZY) + else if (network_update_mechanism == UM_FULL) { net_update_actions_state(now,delta); } else { @@ -814,7 +814,7 @@ static surf_action_t im_net_communicate(const char *src_name, xbt_swag_insert(action, action->generic_action.state_set); action->rate = rate; - if(update_mechanism == UM_FULL){ + if(network_update_mechanism == UM_LAZY){ action->index_heap = -1; action->latency = 0.0; action->weight = 0.0; @@ -868,7 +868,7 @@ static surf_action_t im_net_communicate(const char *src_name, action->variable = lmm_variable_new(network_im_maxmin_system, action, 0.0, -1.0, constraints_per_variable); - if(update_mechanism == UM_FULL){ + if(network_update_mechanism == UM_LAZY){ // add to the heap the event when the latency is payed XBT_DEBUG("Added action (%p) one latency event at date %f", action, action->latency + action->last_update); heap_insert(action, action->latency + action->last_update, LATENCY); @@ -962,7 +962,7 @@ static void im_net_action_suspend(surf_action_t action) ((surf_action_network_CM02_im_t) action)->variable, 0.0); - if(update_mechanism == UM_FULL)// remove action from the heap + if(network_update_mechanism == UM_LAZY)// remove action from the heap heap_remove((surf_action_network_CM02_im_t) action); } @@ -975,7 +975,7 @@ static void im_net_action_resume(surf_action_t action) ((surf_action_network_CM02_im_t) action)->weight); ((surf_action_network_CM02_im_t) action)->suspended = 0; - if(update_mechanism == UM_FULL)// remove action from the heap + if(network_update_mechanism == UM_LAZY)// remove action from the heap heap_remove((surf_action_network_CM02_im_t) action); } } @@ -988,7 +988,7 @@ static int im_net_action_is_suspended(surf_action_t action) void im_net_action_set_max_duration(surf_action_t action, double duration) { action->max_duration = duration; - if(update_mechanism == UM_FULL)// remove action from the heap + if(network_update_mechanism == UM_LAZY)// remove action from the heap heap_remove((surf_action_network_CM02_im_t) action); } @@ -1007,7 +1007,7 @@ static void im_net_finalize(void) lmm_system_free(network_im_maxmin_system); network_im_maxmin_system = NULL; - if(update_mechanism == UM_FULL){ + if(network_update_mechanism == UM_LAZY){ xbt_heap_free(im_net_action_heap); xbt_swag_free(im_net_modified_set); } @@ -1120,7 +1120,7 @@ static void im_surf_network_model_init_internal(void) SURF_RESOURCE_ON, NULL, SURF_LINK_FATPIPE, NULL)); - if(update_mechanism == UM_FULL){ + if(network_update_mechanism == UM_LAZY){ sg_maxmin_selective_update = 1; im_net_action_heap = xbt_heap_new(8,NULL); xbt_heap_set_update_callback(im_net_action_heap, im_net_action_update_index_heap); @@ -1155,6 +1155,10 @@ void surf_network_model_init_SMPI(void) /************************************************************************/ void im_surf_network_model_init_LegrandVelho(void) { + if( strcmp(xbt_cfg_get_string(_surf_cfg_set, "network/model"),"LV08")) + network_update_mechanism = UM_LAZY; + else + network_update_mechanism = UM_FULL; if (surf_network_model) return; @@ -1189,6 +1193,10 @@ void surf_network_model_init_CM02(void) im_net_define_callbacks(); xbt_dynar_push(model_list, &surf_network_model); network_im_solve = lmm_solve; + + xbt_cfg_setdefault_double(_surf_cfg_set, "network/latency_factor", 1.0); + xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor", 1.0); + xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 0.0); } void surf_network_model_init_Reno(void)