X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/86ae43c89569bc50f6b8c0882d0f90f321af05d7..15475b4614f5e32f863ed1f3caf97614ad3eae02:/src/surf/cpu_cas01.c diff --git a/src/surf/cpu_cas01.c b/src/surf/cpu_cas01.c index 8c18d28c86..3755de922a 100644 --- a/src/surf/cpu_cas01.c +++ b/src/surf/cpu_cas01.c @@ -10,9 +10,10 @@ surf_model_t surf_cpu_model = NULL; lmm_system_t cpu_maxmin_system = NULL; e_UM_t cpu_update_mechanism = UM_UNDEFINED; +static int cpu_selective_update = 0; + static xbt_swag_t cpu_modified_cpu = NULL; static xbt_heap_t cpu_action_heap = NULL; -extern int sg_maxmin_selective_update; #undef GENERIC_LMM_ACTION #undef GENERIC_ACTION @@ -597,8 +598,8 @@ static double cpu_action_get_remains(surf_action_t action) /* update remains before return it */ if(cpu_update_mechanism == UM_LAZY) cpu_update_remains(ACTION_GET_CPU(action), surf_get_clock()); - return action->remains; XBT_OUT(); + return action->remains; } static e_surf_resource_state_t cpu_get_state(void *cpu) @@ -649,7 +650,7 @@ static void cpu_finalize(void) if(cpu_modified_cpu) xbt_swag_free(cpu_modified_cpu); } -static void surf_cpu_model_init_internal(const char* name) +static void surf_cpu_model_init_internal() { s_surf_action_t action; s_cpu_Cas01_t cpu; @@ -659,7 +660,7 @@ static void surf_cpu_model_init_internal(const char* name) cpu_running_action_set_that_does_not_need_being_checked = xbt_swag_new(xbt_swag_offset(action, state_hookup)); - surf_cpu_model->name = name; + surf_cpu_model->name = "cpu"; surf_cpu_model->action_unref = cpu_action_unref; surf_cpu_model->action_cancel = cpu_action_cancel; @@ -667,19 +668,14 @@ static void surf_cpu_model_init_internal(const char* name) surf_cpu_model->model_private->resource_used = cpu_resource_used; - if(cpu_update_mechanism == UM_LAZY) + if(cpu_update_mechanism == UM_LAZY) { surf_cpu_model->model_private->share_resources = cpu_share_resources_lazy; - else if (cpu_update_mechanism == UM_FULL) - surf_cpu_model->model_private->share_resources = cpu_share_resources_full; - else - xbt_die("Invalide update mechanism!"); - - if(cpu_update_mechanism == UM_LAZY) surf_cpu_model->model_private->update_actions_state = cpu_update_actions_state_lazy; - else if(cpu_update_mechanism == UM_FULL) + } else if (cpu_update_mechanism == UM_FULL) { + surf_cpu_model->model_private->share_resources = cpu_share_resources_full; surf_cpu_model->model_private->update_actions_state = cpu_update_actions_state_full; - else - xbt_die("Incompatible optimization mode"); + } else + xbt_die("Invalid update mechanism!"); surf_cpu_model->model_private->update_resource_state = cpu_update_resource_state; @@ -706,8 +702,7 @@ static void surf_cpu_model_init_internal(const char* name) surf_cpu_model->extension.cpu.add_traces = cpu_add_traces_cpu; if (!cpu_maxmin_system) { - sg_maxmin_selective_update = 1; - cpu_maxmin_system = lmm_system_new(); + cpu_maxmin_system = lmm_system_new(cpu_selective_update); } if(cpu_update_mechanism == UM_LAZY){ cpu_action_heap = xbt_heap_new(8, NULL); @@ -737,18 +732,16 @@ static void surf_cpu_model_init_internal(const char* name) void surf_cpu_model_init_Cas01() { char *optim = xbt_cfg_get_string(_surf_cfg_set, "cpu/optim"); - char *model = xbt_cfg_get_string(_surf_cfg_set, "cpu/model"); - - if(!strcmp(model,"Cas01_fullupdate")) { - XBT_WARN("[*Deprecated*. Use --cfg=cpu/model:Cas01 with option --cfg=cpu/optim:Full instead.]"); - } else if(!strcmp(model,"CpuTI")) { - XBT_WARN("[*Deprecated*. Use --cfg=cpu/model:Cas01 with option --cfg=cpu/optim:TI instead.]"); - } + int select = xbt_cfg_get_int(_surf_cfg_set, "cpu/maxmin_selective_update"); if(!strcmp(optim,"Full")) { cpu_update_mechanism = UM_FULL; + cpu_selective_update = select; } else if (!strcmp(optim,"Lazy")) { cpu_update_mechanism = UM_LAZY; + cpu_selective_update = 1; + xbt_assert((select==1) || (xbt_cfg_is_default_value(_surf_cfg_set,"cpu/maxmin_selective_update")), + "Disabling selective update while using the lazy update mechanism is dumb!"); } else if (!strcmp(optim,"TI")) { surf_cpu_model_init_ti(); return; @@ -758,7 +751,7 @@ void surf_cpu_model_init_Cas01() if (surf_cpu_model) return; - surf_cpu_model_init_internal("CPU"); + surf_cpu_model_init_internal(); cpu_define_callbacks(); xbt_dynar_push(model_list, &surf_cpu_model); }