+ xbt_die("Kind of task %s not supported by SD_task_schedulev()",
+ SD_task_get_name(task));
+ }
+ if (task->kind == SD_TASK_COMM_E2E) {
+ XBT_VERB("Schedule comm task %s between %s -> %s. It costs %.f bytes",
+ SD_task_get_name(task),
+ SD_workstation_get_name(task->workstation_list[0]),
+ SD_workstation_get_name(task->workstation_list[1]),
+ task->communication_amount[2]);
+
+ }
+ /* Iterate over all childs and parent being COMM_E2E to say where I am located (and start them if runnable) */
+ if (task->kind == SD_TASK_COMP_SEQ) {
+ XBT_VERB("Schedule computation task %s on %s. It costs %.f flops",
+ SD_task_get_name(task),
+ SD_workstation_get_name(task->workstation_list[0]),
+ task->computation_amount[0]);
+
+ xbt_dynar_foreach(task->tasks_before, cpt, dep) {
+ SD_task_t before = dep->src;
+ if (before->kind == SD_TASK_COMM_E2E) {
+ before->workstation_list[1] = task->workstation_list[0];
+
+ if (before->workstation_list[0] &&
+ (__SD_task_is_schedulable(before)
+ || __SD_task_is_not_scheduled(before))) {
+ SD_task_do_schedule(before);
+ XBT_VERB
+ ("Auto-Schedule comm task %s between %s -> %s. It costs %.f bytes",
+ SD_task_get_name(before),
+ SD_workstation_get_name(before->workstation_list[0]),
+ SD_workstation_get_name(before->workstation_list[1]),
+ before->communication_amount[2]);
+ }
+ }
+ }
+ xbt_dynar_foreach(task->tasks_after, cpt, dep) {
+ SD_task_t after = dep->dst;
+ if (after->kind == SD_TASK_COMM_E2E) {
+ after->workstation_list[0] = task->workstation_list[0];
+ //J-N : Why did you comment on these line (this comment add a bug I think)?
+ if (after->workstation_list[1]
+ && (__SD_task_is_not_scheduled(after)
+ || __SD_task_is_schedulable(after))) {
+ SD_task_do_schedule(after);
+ XBT_VERB
+ ("Auto-Schedule comm task %s between %s -> %s. It costs %.f bytes",
+ SD_task_get_name(after),
+ SD_workstation_get_name(after->workstation_list[0]),
+ SD_workstation_get_name(after->workstation_list[1]),
+ after->communication_amount[2]);
+
+ }
+ }
+ }