> [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
> [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
> [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
> [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
> [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
> [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
> [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
> [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
> [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---------------------------
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>();
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;
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.
*/
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;
}
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.");
}
/* 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;
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