Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
in function SD_task_get_execution_time, return a time in second, actually, not in...
[simgrid.git] / src / simdag / sd_task.c
index 03c33f9..8ffbf91 100644 (file)
@@ -240,10 +240,10 @@ SD_workstation_t* SD_task_get_workstation_list(SD_task_t task)
 }
 
 /**
- * \brief Returns the total amount of a task
+ * \brief Returns the total amount of work contained in a task
  *
  * \param task a task
- * \return the total amount of this task
+ * \return the total amount of work (computation or data transfer) for this task
  * \see SD_task_get_remaining_amount()
  */
 double SD_task_get_amount(SD_task_t task)
@@ -254,10 +254,10 @@ double SD_task_get_amount(SD_task_t task)
 }
 
 /**
- * \brief Returns the remaining amount of a task
+ * \brief Returns the remaining amount work to do till the completion of a task
  *
  * \param task a task
- * \return the remaining amount of this task
+ * \return the remaining amount of work (computation or data transfer) of this task
  * \see SD_task_get_amount()
  */
 double SD_task_get_remaining_amount(SD_task_t task)
@@ -324,7 +324,7 @@ void SD_task_dump(SD_task_t task)
 void SD_task_dotty(SD_task_t task,void* out) {
   unsigned int counter;
   SD_dependency_t dependency;
-  fprintf(out, "  T%ld [label=\"%.20s\"",(unsigned long int)task, task->name);
+  fprintf(out, "  T%p [label=\"%.20s\"",task, task->name);
   switch(task->kind){
     case SD_TASK_COMM_E2E:
       fprintf(out,", shape=box");
@@ -332,6 +332,8 @@ void SD_task_dotty(SD_task_t task,void* out) {
     case SD_TASK_COMP_SEQ:
       fprintf(out,", shape=circle");
       break;
+    default:
+      xbt_die("Unknown task type!");
   }
   fprintf(out,"];\n");
   xbt_dynar_foreach(task->tasks_before,counter,dependency) {
@@ -668,7 +670,7 @@ double SD_task_get_execution_time(SD_task_t task,
       max_time = time;
     }
   }
-  return max_time * SD_task_get_amount(task);
+  return max_time;
 }
 static inline void SD_task_do_schedule(SD_task_t task) {
   SD_CHECK_INIT_DONE();
@@ -772,6 +774,7 @@ static void __SD_task_destroy_scheduling_data(SD_task_t task)
 
   xbt_free(task->computation_amount);
   xbt_free(task->communication_amount);
+  task->computation_amount = task->communication_amount = NULL;
 }
 
 /* Runs a task. This function is directly called by __SD_task_try_to_run if the task
@@ -1163,6 +1166,12 @@ void SD_task_destroy(SD_task_t task)
   if (task->workstation_list != NULL)
     xbt_free(task->workstation_list);
 
+  if (task->communication_amount)
+    xbt_free(task->communication_amount);
+
+  if (task->computation_amount)
+    xbt_free(task->computation_amount);
+
   xbt_dynar_free(&task->tasks_before);
   xbt_dynar_free(&task->tasks_after);
   xbt_free(task);