Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add debuging informations.
[simgrid.git] / src / surf / surf.c
index 83f6614..89b92c3 100644 (file)
@@ -5,12 +5,15 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#include <ctype.h>
+
 #include "surf_private.h"
 #include "xbt/module.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_kernel, surf,
                                "Logging specific to SURF (kernel)");
 
+int use_sdp_solver=0;
 
 /* Additional declarations for Windows potability. */
 
@@ -74,7 +77,7 @@ const char* __surf_get_initial_path(void)
 
        for(i = 0; i<MAX_DRIVE;i++)
        {
-               if(root[0] == disk_drives_letter_table[i][0])
+               if(toupper(root[0]) == disk_drives_letter_table[i][0])
                        return disk_drives_letter_table[i];
        }
 
@@ -139,7 +142,15 @@ double generic_maxmin_share_resources2(xbt_swag_t running_actions,
   double value = -1;
 #define VARIABLE(action) (*((lmm_variable_t*)(((char *) (action)) + (offset))))
 
-  lmm_solve(sys);
+  if(!use_sdp_solver)
+    lmm_solve(sys);
+  else {
+#ifdef HAVE_SDP
+    sdp_solve(sys);
+#else
+    xbt_assert0(0, "No CSDP found! You cannot use this model!");
+#endif
+  }
 
   xbt_swag_foreach(action, running_actions) {
     value = lmm_variable_getvalue(VARIABLE(action));
@@ -157,6 +168,7 @@ double generic_maxmin_share_resources2(xbt_swag_t running_actions,
   } else
     min = action->max_duration;
 
+  DEBUG5("Found an action (%p: duration = %f, remains = %f, value = %f) ! %f",action, action->max_duration, action->remains, value, min); 
 
   for (action = xbt_swag_getNext(action, running_actions->offset);
        action;
@@ -164,12 +176,18 @@ double generic_maxmin_share_resources2(xbt_swag_t running_actions,
     value = lmm_variable_getvalue(VARIABLE(action));
     if (value > 0) {
       value = action->remains / value;
-      if (value < min)
+      if (value < min) {
        min = value;
+       DEBUG2("Updating min (value) with %p: %f",action, min);
+      }
     }
-    if ((action->max_duration >= 0) && (action->max_duration < min))
+    if ((action->max_duration >= 0) && (action->max_duration < min)) {
       min = action->max_duration;
+      DEBUG2("Updating min (duration) with %p: %f",action, min);
+    }
   }
+  DEBUG1("min value : %f",min);
+
 #undef VARIABLE
   return min;
 }