Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
handle 0-size tasks.
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 14 Aug 2007 13:20:35 +0000 (13:20 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 14 Aug 2007 13:20:35 +0000 (13:20 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@4087 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/surf/maxmin.c
src/surf/workstation_KCCFLN05.c

index 9b98902..0f02192 100644 (file)
@@ -443,7 +443,14 @@ void lmm_solve(lmm_system_t sys)
   var_list = &(sys->variable_set);
   DEBUG1("Variable set : %d", xbt_swag_size(var_list));
   xbt_swag_foreach(var, var_list) {
+    int nb=0;
+    int i;
     var->value = 0.0;
+    for (i = 0; i < var->cnsts_number; i++) {
+      if(var->cnsts[i].value==0.0) nb++;
+    }
+    if((nb==var->cnsts_number) && (var->weight>0.0))
+      var->value = 1.0;
   }
 
   /* 
index 97e1e7b..9108c31 100644 (file)
@@ -675,10 +675,6 @@ static surf_action_t execute_parallel_task(int workstation_nb,
     if (computation_amount[i] > 0)
       nb_host++;
 
-
-  if (nb_link + nb_host == 0)  /* was workstation_nb... */
-    return NULL;
-
   action = xbt_new0(s_surf_action_workstation_KCCFLN05_t, 1);
   DEBUG3("Creating a parallel task (%p) with %d cpus and %d links.",
         action, nb_host, nb_link);
@@ -730,6 +726,11 @@ static surf_action_t execute_parallel_task(int workstation_nb,
     }
   }
 
+  if (nb_link + nb_host == 0) {
+    action->generic_action.cost = 1.0;
+    action->generic_action.remains = 0.0;
+  }
+
   return (surf_action_t) action;
 }