Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Start using optimization mode flag in network.
[simgrid.git] / src / surf / network_im.c
index b5fc462..bf2125f 100644 (file)
@@ -804,6 +804,15 @@ static surf_action_t im_net_communicate(const char *src_name,
       break;
     }
   }
+  if (sg_network_crosstraffic == 1) {
+    xbt_dynar_foreach(back_route, i, link) {
+      if (link->lmm_resource.state_current == SURF_RESOURCE_OFF) {
+        failed = 1;
+        break;
+      }
+    }
+  }
+
   action =
       surf_action_new(sizeof(s_surf_action_network_CM02_im_t), size,
                       surf_network_model, failed);
@@ -1129,6 +1138,18 @@ static void im_surf_network_model_init_internal(void)
   }
 }
 
+static void set_update_mechanism(void) {
+  char *optim = xbt_cfg_get_string(_surf_cfg_set, "network/optim");
+
+  if(!strcmp(optim,"Full")) {
+    network_update_mechanism = UM_FULL;
+  } else if (!strcmp(optim,"Lazy")) {
+    network_update_mechanism = UM_LAZY;
+  } else {
+    xbt_die("Unsupported optimization (%s) for this model",optim);
+  }
+}
+
 /************************************************************************/
 /* New model based on LV08 and experimental results of MPI ping-pongs   */
 /************************************************************************/
@@ -1137,6 +1158,8 @@ void surf_network_model_init_SMPI(void)
 
   if (surf_network_model)
     return;
+  set_update_mechanism();
+
   im_surf_network_model_init_internal();
   im_latency_factor_callback = &smpi_latency_factor;
   im_bandwidth_factor_callback = &smpi_bandwidth_factor;
@@ -1147,7 +1170,6 @@ void surf_network_model_init_SMPI(void)
 
   xbt_cfg_setdefault_double(_surf_cfg_set, "network/sender_gap", 10e-6);
   xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
-
 }
 
 /************************************************************************/
@@ -1155,22 +1177,24 @@ 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;
+  char *model = xbt_cfg_get_string(_surf_cfg_set, "network/model");
 
   if (surf_network_model)
     return;
+
+  if(!strcmp(model,"LV08_fullupdate")) {
+    XBT_WARN("[*Deprecated*. Use --cfg=network/model:LV08 with option --cfg=network/optim:Full instead.]");
+  }
+  set_update_mechanism();
+
   im_surf_network_model_init_internal();
   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", 10.4);
-  xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",
-                            0.92);
-  xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);
+  xbt_cfg_setdefault_double(_surf_cfg_set, "network/latency_factor", 10.4); // 13.01 when callibration is done without phase effects
+  xbt_cfg_setdefault_double(_surf_cfg_set, "network/bandwidth_factor",0.92);// 0.97 when callibration is done without phase effects
+  xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775);       // 20537 when callibration is done without phase effects
 }
 
 /***************************************************************************/
@@ -1189,6 +1213,8 @@ void surf_network_model_init_CM02(void)
 
   if (surf_network_model)
     return;
+
+  set_update_mechanism();
   im_surf_network_model_init_internal();
   im_net_define_callbacks();
   xbt_dynar_push(model_list, &surf_network_model);
@@ -1203,6 +1229,8 @@ void surf_network_model_init_Reno(void)
 {
   if (surf_network_model)
     return;
+
+  set_update_mechanism();
   im_surf_network_model_init_internal();
   im_net_define_callbacks();
 
@@ -1222,6 +1250,8 @@ void surf_network_model_init_Reno2(void)
 {
   if (surf_network_model)
     return;
+
+  set_update_mechanism();
   im_surf_network_model_init_internal();
   im_net_define_callbacks();
 
@@ -1241,6 +1271,8 @@ void surf_network_model_init_Vegas(void)
 {
   if (surf_network_model)
     return;
+
+  set_update_mechanism();
   im_surf_network_model_init_internal();
   im_net_define_callbacks();