Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
get rid of mallocators for tasks
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 5 Aug 2016 09:39:08 +0000 (11:39 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 5 Aug 2016 09:39:08 +0000 (11:39 +0200)
  for the sake of simplicity on the way to C++fication of SimDag

examples/simdag/dag-dotload/sd_dag-dotload.tesh
examples/simdag/ptg-dotload/sd_ptg-dotload.tesh
examples/simdag/schedule-dotload/sd_schedule-dotload.tesh
src/simdag/sd_global.cpp
src/simdag/sd_task.cpp
src/simdag/simdag_private.h

index 095e851..687feb3 100644 (file)
@@ -63,8 +63,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/dag-dotload/sd_dag-dotload --log=no_loc ${srcdir:=
 > [0.000000] [sd_task/INFO]   - amount: 10000000046
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 2
 > [0.000000] [sd_task/INFO]   - pre-dependencies:
-> [0.000000] [sd_task/INFO]     root->5
 > [0.000000] [sd_task/INFO]     4->5
+> [0.000000] [sd_task/INFO]     root->5
 > [0.000000] [sd_task/INFO]   - post-dependencies:
 > [0.000000] [sd_task/INFO]     6
 > [0.000000] [sd_task/INFO] Displaying task 6
@@ -84,8 +84,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/dag-dotload/sd_dag-dotload --log=no_loc ${srcdir:=
 > [0.000000] [sd_task/INFO]   - pre-dependencies:
 > [0.000000] [sd_task/INFO]     6->7
 > [0.000000] [sd_task/INFO]   - post-dependencies:
-> [0.000000] [sd_task/INFO]     7->end
 > [0.000000] [sd_task/INFO]     7->8
+> [0.000000] [sd_task/INFO]     7->end
 > [0.000000] [sd_task/INFO] Displaying task 8
 > [0.000000] [sd_task/INFO]   - state: not scheduled not runnable
 > [0.000000] [sd_task/INFO]   - kind: sequential computation
index 6c08678..67d3b29 100644 (file)
@@ -11,8 +11,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/ptg-dotload/sd_ptg-dotload  ${srcdir:=.}/../platfo
 > [0.000000] [sd_task/INFO]   - alpha: 0.00
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 0
 > [0.000000] [sd_task/INFO]   - post-dependencies:
-> [0.000000] [sd_task/INFO]     root->c2
 > [0.000000] [sd_task/INFO]     root->c1
+> [0.000000] [sd_task/INFO]     root->c2
 > [0.000000] [sd_task/INFO] Displaying task c1
 > [0.000000] [sd_task/INFO]   - state: not scheduled not runnable
 > [0.000000] [sd_task/INFO]   - kind: parallel computation following Amdahl's law
index ab26689..1399aa8 100644 (file)
@@ -21,8 +21,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 > [0.000000] [sd_task/INFO]   - amount: 0
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 0
 > [0.000000] [sd_task/INFO]   - post-dependencies:
-> [0.000000] [sd_task/INFO]     1
 > [0.000000] [sd_task/INFO]     0
+> [0.000000] [sd_task/INFO]     1
 > [0.000000] [sd_task/INFO]     root->5
 > [0.000000] [sd_task/INFO] Displaying task 0
 > [0.000000] [sd_task/INFO]   - state: scheduled not runnable
@@ -51,8 +51,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 3
 > [0.000000] [sd_task/INFO]   - pre-dependencies:
 > [0.000000] [sd_task/INFO]     0
-> [0.000000] [sd_task/INFO]     1->2
 > [0.000000] [sd_task/INFO]     0->2
+> [0.000000] [sd_task/INFO]     1->2
 > [0.000000] [sd_task/INFO]   - post-dependencies:
 > [0.000000] [sd_task/INFO]     3
 > [0.000000] [sd_task/INFO]     2->3
@@ -65,16 +65,16 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 > [0.000000] [sd_task/INFO]     2
 > [0.000000] [sd_task/INFO]     2->3
 > [0.000000] [sd_task/INFO]   - post-dependencies:
-> [0.000000] [sd_task/INFO]     8
 > [0.000000] [sd_task/INFO]     4
+> [0.000000] [sd_task/INFO]     8
 > [0.000000] [sd_task/INFO] Displaying task 4
 > [0.000000] [sd_task/INFO]   - state: scheduled not runnable
 > [0.000000] [sd_task/INFO]   - kind: sequential computation
 > [0.000000] [sd_task/INFO]   - amount: 10000000005
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 2
 > [0.000000] [sd_task/INFO]   - pre-dependencies:
-> [0.000000] [sd_task/INFO]     3
 > [0.000000] [sd_task/INFO]     1
+> [0.000000] [sd_task/INFO]     3
 > [0.000000] [sd_task/INFO]   - post-dependencies:
 > [0.000000] [sd_task/INFO]     5
 > [0.000000] [sd_task/INFO]     4->5
@@ -85,8 +85,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 3
 > [0.000000] [sd_task/INFO]   - pre-dependencies:
 > [0.000000] [sd_task/INFO]     4
-> [0.000000] [sd_task/INFO]     4->5
 > [0.000000] [sd_task/INFO]     root->5
+> [0.000000] [sd_task/INFO]     4->5
 > [0.000000] [sd_task/INFO]   - post-dependencies:
 > [0.000000] [sd_task/INFO]     6
 > [0.000000] [sd_task/INFO] Displaying task 6
@@ -109,8 +109,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 > [0.000000] [sd_task/INFO]     6->7
 > [0.000000] [sd_task/INFO]   - post-dependencies:
 > [0.000000] [sd_task/INFO]     end
-> [0.000000] [sd_task/INFO]     7->end
 > [0.000000] [sd_task/INFO]     7->8
+> [0.000000] [sd_task/INFO]     7->end
 > [0.000000] [sd_task/INFO] Displaying task 8
 > [0.000000] [sd_task/INFO]   - state: scheduled not runnable
 > [0.000000] [sd_task/INFO]   - kind: sequential computation
@@ -208,8 +208,8 @@ $ $SG_TEST_EXENV ${bindir:=.}/schedule-dotload/sd_schedule-dotload --log=no_loc
 > [0.000000] [sd_task/INFO]   - amount: 10000000129
 > [0.000000] [sd_task/INFO]   - Dependencies to satisfy: 3
 > [0.000000] [sd_task/INFO]   - pre-dependencies:
-> [0.000000] [sd_task/INFO]     9
 > [0.000000] [sd_task/INFO]     7
+> [0.000000] [sd_task/INFO]     9
 > [0.000000] [sd_task/INFO]     7->end
 > [0.000000] [test/INFO] ------------------- Run the schedule ---------------------------
 > [100.003561] [test/INFO] ------------------- Produce the trace file---------------------------
index 2f55278..8aeb02a 100644 (file)
@@ -31,8 +31,6 @@ void SD_init(int *argc, char **argv)
   sd_global = xbt_new(s_SD_global_t, 1);
   sd_global->watch_point_reached = false;
 
-  sd_global->task_mallocator=xbt_mallocator_new(65536, SD_task_new_f, SD_task_free_f, SD_task_recycle_f);
-
   sd_global->initial_tasks = new std::set<SD_task_t>();
   sd_global->runnable_tasks = new std::set<SD_task_t>();
   sd_global->completed_tasks = new std::set<SD_task_t>();
@@ -227,7 +225,6 @@ void SD_exit()
   jedule_sd_exit();
 #endif
 
-  xbt_mallocator_free(sd_global->task_mallocator);
   delete sd_global->initial_tasks;
   delete sd_global->runnable_tasks;
   delete sd_global->completed_tasks;
index 75f575f..8ce0b26 100644 (file)
@@ -22,53 +22,6 @@ static void __SD_task_destroy_scheduling_data(SD_task_t task)
   task->flops_amount = nullptr;
 }
 
-void* SD_task_new_f()
-{
-  SD_task_t task = xbt_new0(s_SD_task_t, 1);
-
-  task->inputs = new std::set<SD_task_t>();
-  task->outputs = new std::set<SD_task_t>();
-  task->predecessors = new std::set<SD_task_t>();
-  task->successors = new std::set<SD_task_t>();
-  return task;
-}
-
-void SD_task_recycle_f(void *t)
-{
-  SD_task_t task = static_cast<SD_task_t>(t);
-
-  /* Reset the content */
-  task->kind = SD_TASK_NOT_TYPED;
-  task->state= SD_NOT_SCHEDULED;
-  sd_global->initial_tasks->insert(task);
-
-  task->marked = 0;
-  task->start_time = -1.0;
-  task->finish_time = -1.0;
-  task->surf_action = nullptr;
-  task->watch_points = 0;
-
-  /* dependencies */
-  task->inputs->clear();
-  task->outputs->clear();
-  task->predecessors->clear();
-  task->successors->clear();
-
-  /* scheduling parameters */
-  task->flops_amount = nullptr;
-  task->bytes_amount = nullptr;
-  task->rate = -1;
-}
-
-void SD_task_free_f(void *t)
-{
-  SD_task_t task = static_cast<SD_task_t>(t);
-  delete task->inputs;
-  delete task->outputs;
-  delete task->predecessors;
-  delete task->successors;
-  xbt_free(task);
-}
 
 /**
  * \brief Creates a new task.
@@ -81,13 +34,29 @@ void SD_task_free_f(void *t)
  */
 SD_task_t SD_task_create(const char *name, void *data, double amount)
 {
-  SD_task_t task = static_cast<SD_task_t>(xbt_mallocator_get(sd_global->task_mallocator));
+  //SD_task_t task = static_cast<SD_task_t>(xbt_mallocator_get(sd_global->task_mallocator));
+  SD_task_t task = xbt_new0(s_SD_task_t, 1);
+  task->kind = SD_TASK_NOT_TYPED;
+  task->state= SD_NOT_SCHEDULED;
+  sd_global->initial_tasks->insert(task);
+
+  task->marked = 0;
+  task->start_time = -1.0;
+  task->finish_time = -1.0;
+  task->surf_action = nullptr;
+  task->watch_points = 0;
+
+  task->inputs = new std::set<SD_task_t>();
+  task->outputs = new std::set<SD_task_t>();
+  task->predecessors = new std::set<SD_task_t>();
+  task->successors = new std::set<SD_task_t>();
 
   task->data = data;
   task->name = xbt_strdup(name);
   task->amount = amount;
   task->remains = amount;
   task->allocation = new std::vector<sg_host_t>();
+  task->rate = -1;
   return task;
 }
 
@@ -220,8 +189,11 @@ void SD_task_destroy(SD_task_t task)
   delete task->allocation;
   xbt_free(task->bytes_amount);
   xbt_free(task->flops_amount);
-
-  xbt_mallocator_release(sd_global->task_mallocator,task);
+  delete task->inputs;
+  delete task->outputs;
+  delete task->predecessors;
+  delete task->successors;
+  xbt_free(task);
 
   XBT_DEBUG("Task destroyed.");
 }
index a450564..9691647 100644 (file)
@@ -22,8 +22,6 @@ SG_BEGIN_DECL()
 /* Global variables */
 
 typedef struct SD_global {
-  xbt_mallocator_t task_mallocator; /* to not remalloc new tasks */
-
   bool watch_point_reached;      /* has a task just reached a watch point? */
 
   std::set<SD_task_t> *initial_tasks;
@@ -71,10 +69,5 @@ XBT_PRIVATE void SD_task_run(SD_task_t task);
 XBT_PRIVATE bool acyclic_graph_detail(xbt_dynar_t dag);
 XBT_PRIVATE void uniq_transfer_task_name(SD_task_t task);
 
-/* Task mallocator functions */
-XBT_PRIVATE void* SD_task_new_f();
-XBT_PRIVATE void SD_task_recycle_f(void *t);
-XBT_PRIVATE void SD_task_free_f(void *t);
-
 SG_END_DECL()
 #endif