+ if (task->kind == SD_TASK_COMM_E2E) {
+ VERB4("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) {
+ VERB3("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);
+ VERB4("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];
+// if (after->workstation_list[1] && (__SD_task_is_not_scheduled(after) ||
+// __SD_task_is_schedulable(after))) {
+// SD_task_do_schedule(after);
+// VERB4("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]);
+//
+// }
+ }
+ }
+ }