Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Amount is finally back
authorthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 30 Jun 2006 13:53:15 +0000 (13:53 +0000)
committerthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 30 Jun 2006 13:53:15 +0000 (13:53 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2464 48e7efb5-ca39-0410-a469-dd3cf9ba447f

examples/simdag/sd_test.c
include/simdag/simdag.h
src/simdag/private.h
src/simdag/sd_task.c

index e9e9a31..3c79394 100644 (file)
@@ -19,10 +19,10 @@ int main(int argc, char **argv) {
   SD_create_environment(platform_file);
 
   /* creation of the tasks and their dependencies */
-  SD_task_t taskA = SD_task_create("Task A", NULL);
-  SD_task_t taskB = SD_task_create("Task B", NULL);
-  SD_task_t taskC = SD_task_create("Task C", NULL);
-  SD_task_t taskD = SD_task_create("Task D", NULL);
+  SD_task_t taskA = SD_task_create("Task A", NULL, 10.0);
+  SD_task_t taskB = SD_task_create("Task B", NULL, 40.0);
+  SD_task_t taskC = SD_task_create("Task C", NULL, 30.0);
+  SD_task_t taskD = SD_task_create("Task D", NULL, 60.0);
   
   SD_task_dependency_add(NULL, NULL, taskB, taskA);
   SD_task_dependency_add(NULL, NULL, taskC, taskA);
index 4050cc6..e82edbd 100644 (file)
@@ -62,7 +62,7 @@ double             SD_workstation_get_available_power(SD_workstation_t workstati
  * 
  *  This section describes the functions for managing the tasks.
  *  
- *  A task is some <em>computing amount</em> that can be executed
+ *  A task is some <em>working amount</em> that can be executed
  *  in parallel on several workstations. A task may depend on other
  *  tasks, this means that the task cannot start until the other tasks are done.
  *  Each task has a <em>\ref e_SD_task_state_t "state"</em> indicating whether
@@ -71,7 +71,7 @@ double             SD_workstation_get_available_power(SD_workstation_t workstati
  *  @see SD_task_t, SD_task_dependency_management
  *  @{
  */
-SD_task_t         SD_task_create(const char *name, void *data);
+SD_task_t         SD_task_create(const char *name, void *data, double amount);
 void*             SD_task_get_data(SD_task_t task);
 void              SD_task_set_data(SD_task_t task, void *data);
 e_SD_task_state_t SD_task_get_state(SD_task_t task);
index ed79e69..0ef4402 100644 (file)
@@ -47,6 +47,7 @@ typedef struct SD_task {
   xbt_swag_t state_set;
   void *data; /* user data */
   char *name;
+  double amount;
   surf_action_t surf_action;
   unsigned short watch_points;
   int state_changed; /* used only by SD_simulate, to make sure we put
index c507caf..059fa86 100644 (file)
@@ -13,7 +13,7 @@ static void __SD_task_remove_dependencies(SD_task_t task);
  * \return the new task
  * \see SD_task_destroy()
  */
-SD_task_t SD_task_create(const char *name, void *data) {
+SD_task_t SD_task_create(const char *name, void *data, double amount) {
   SD_CHECK_INIT_DONE();
 
   SD_task_t task = xbt_new0(s_SD_task_t, 1);
@@ -28,6 +28,7 @@ SD_task_t SD_task_create(const char *name, void *data) {
   task->state_set = sd_global->not_scheduled_task_set;
   xbt_swag_insert(task,task->state_set);
 
+  task->amount = amount;
   task->surf_action = NULL;
   task->watch_points = 0;
   task->state_changed = 0;
@@ -157,8 +158,7 @@ const char* SD_task_get_name(SD_task_t task) {
 double SD_task_get_amount(SD_task_t task) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(task != NULL, "Invalid parameter");
-  xbt_assert1(task->surf_action != NULL, "The task '%s' is not running", SD_task_get_name(task));
-  return task->surf_action->cost;
+  return task->amount;
 }
 
 /**
@@ -171,8 +171,11 @@ double SD_task_get_amount(SD_task_t task) {
 double SD_task_get_remaining_amount(SD_task_t task) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(task != NULL, "Invalid parameter");
-  xbt_assert1(task->surf_action != NULL, "The task '%s' is not running", SD_task_get_name(task));
-  return task->surf_action->remains / task->surf_action->cost;
+
+  if (task->surf_action)
+    return task->surf_action->remains;
+  else
+    return task->amount;
 }
 
 /* temporary function for debbuging */
@@ -489,7 +492,7 @@ surf_action_t __SD_task_run(SD_task_t task) {
                          task->workstation_list,
                          task->computation_amount,
                          task->communication_amount,
-                         1.0,
+                         task->amount,
                          task->rate);
 
   __SD_task_destroy_scheduling_data(task); /* now the scheduling data are not useful anymore */