From: Frederic Suter Date: Fri, 5 Aug 2016 09:39:08 +0000 (+0200) Subject: get rid of mallocators for tasks X-Git-Tag: v3_14~633 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3d489fd0ea1a24796b898737fdd6a67a8b7bedab?hp=7a38cbdb84534611914befd1a94a13c228f02e0c;ds=sidebyside get rid of mallocators for tasks for the sake of simplicity on the way to C++fication of SimDag --- diff --git a/examples/simdag/dag-dotload/sd_dag-dotload.tesh b/examples/simdag/dag-dotload/sd_dag-dotload.tesh index 095e851cd2..687feb3697 100644 --- a/examples/simdag/dag-dotload/sd_dag-dotload.tesh +++ b/examples/simdag/dag-dotload/sd_dag-dotload.tesh @@ -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 diff --git a/examples/simdag/ptg-dotload/sd_ptg-dotload.tesh b/examples/simdag/ptg-dotload/sd_ptg-dotload.tesh index 6c08678d28..67d3b2947c 100644 --- a/examples/simdag/ptg-dotload/sd_ptg-dotload.tesh +++ b/examples/simdag/ptg-dotload/sd_ptg-dotload.tesh @@ -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 diff --git a/examples/simdag/schedule-dotload/sd_schedule-dotload.tesh b/examples/simdag/schedule-dotload/sd_schedule-dotload.tesh index ab26689820..1399aa8605 100644 --- a/examples/simdag/schedule-dotload/sd_schedule-dotload.tesh +++ b/examples/simdag/schedule-dotload/sd_schedule-dotload.tesh @@ -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--------------------------- diff --git a/src/simdag/sd_global.cpp b/src/simdag/sd_global.cpp index 2f55278dbe..8aeb02a1af 100644 --- a/src/simdag/sd_global.cpp +++ b/src/simdag/sd_global.cpp @@ -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_global->runnable_tasks = new std::set(); sd_global->completed_tasks = new std::set(); @@ -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; diff --git a/src/simdag/sd_task.cpp b/src/simdag/sd_task.cpp index 75f575fa12..8ce0b26bfa 100644 --- a/src/simdag/sd_task.cpp +++ b/src/simdag/sd_task.cpp @@ -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(); - task->outputs = new std::set(); - task->predecessors = new std::set(); - task->successors = new std::set(); - return task; -} - -void SD_task_recycle_f(void *t) -{ - SD_task_t task = static_cast(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(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(xbt_mallocator_get(sd_global->task_mallocator)); + //SD_task_t task = static_cast(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(); + task->outputs = new std::set(); + task->predecessors = new std::set(); + task->successors = new std::set(); task->data = data; task->name = xbt_strdup(name); task->amount = amount; task->remains = amount; task->allocation = new std::vector(); + 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."); } diff --git a/src/simdag/simdag_private.h b/src/simdag/simdag_private.h index a450564a32..9691647fbd 100644 --- a/src/simdag/simdag_private.h +++ b/src/simdag/simdag_private.h @@ -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 *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