Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Argh I was confused between UM_FULL and UM_LAZY. This commit sets it right.
authorNavarrop <Pierre.Navarro@imag.fr>
Fri, 2 Dec 2011 12:09:05 +0000 (13:09 +0100)
committerNavarrop <Pierre.Navarro@imag.fr>
Fri, 16 Dec 2011 15:58:01 +0000 (16:58 +0100)
src/surf/cpu_im.c
src/surf/network_im.c

index 659349f..8088d27 100644 (file)
@@ -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);
   }
index 164d55f..8c33ec3 100644 (file)
@@ -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)