Assume we have the following task flow graph where every node is a task and an arrow from a task to another means dependencies. For example, task B cannot start before task A is done.
The following table shows the time taken by each task in nanoseconds:
Task | Time Taken
-------|-----------
A | 3
B | 2
C | 5
D | 5
E | 5
F | 20
G | 25
H | 5
I | 10
a. Without using the DAG method, that is without using T1/span, determine the minimum number of cores needed to get the highest performance [2 points]. Then, specify which tasks will execute on which core to get the best performance [6 points]. Finally, calculate the speedup given the number of cores you calculated [2 points].
b. Calculate the span [2 points]. Which tasks form the span [5 points]? If there are more than one solution, please state all of them.
c. [8 points] Fill up the following table given the number of cores to execute the above DAG.
#cores | speedup | efficiency
-------|---------|-----------
2 | |
4 | |
8 | |