From aac3e3c5f3a51fa88717c20bae44405824846273 Mon Sep 17 00:00:00 2001 From: lhausamm <loic_hausammann@hotmail.com> Date: Thu, 9 Nov 2017 09:19:35 +0100 Subject: [PATCH] Add subtask for dependency tree --- src/scheduler.c | 21 +++++++++++++++++++-- src/scheduler.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/scheduler.c b/src/scheduler.c index 68b95abaf7..c61b089a01 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -109,7 +109,11 @@ void scheduler_addunlock(struct scheduler *s, struct task *ta, s->unlocks[ind] = tb; s->unlock_ind[ind] = ta - s->tasks; atomic_inc(&s->completed_unlock_writes); - + + scheduler_write_dependency(ta,tb); +} + +void scheduler_write_dependency(struct task *ta, struct task *tb) { int test = ta->ci->ti_end_min == 0 && tb->ci->ti_end_min == 0; test = test && ta->ci->parent == NULL && tb->ci->parent == NULL; if (test) @@ -120,7 +124,12 @@ void scheduler_addunlock(struct scheduler *s, struct task *ta, ssize_t read; FILE *f; - sprintf(tmp, "%s->%s;\n", taskID_names[ta->type], taskID_names[tb->type]); + sprintf(tmp, "\t%s_%s->%s_%s;\n", + taskID_names[ta->type], + subtaskID_names[ta->subtype], + taskID_names[tb->type], + subtaskID_names[tb->subtype] + ); f = fopen("test_graph.viz", "r"); @@ -138,6 +147,12 @@ void scheduler_addunlock(struct scheduler *s, struct task *ta, fclose(f); } + else + { + f = fopen("test_graph.viz", "w"); + fprintf(f,"digraph task_dep {\n\tcompound=true;\n\tratio=0.66;\n\tnode[nodesep=0.15];\n"); + fclose(f); + } if (test) { @@ -147,8 +162,10 @@ void scheduler_addunlock(struct scheduler *s, struct task *ta, } } + } + /** * @brief Split a hydrodynamic task if too large. * diff --git a/src/scheduler.h b/src/scheduler.h index c5ccbf43f3..3d397da628 100644 --- a/src/scheduler.h +++ b/src/scheduler.h @@ -168,5 +168,6 @@ void scheduler_dump_queue(struct scheduler *s); void scheduler_print_tasks(const struct scheduler *s, const char *fileName); void scheduler_clean(struct scheduler *s); void scheduler_free_tasks(struct scheduler *s); +void scheduler_write_dependency(struct task *ta, struct task *tb); #endif /* SWIFT_SCHEDULER_H */ -- GitLab