1.证明采用贪心调度时 T G ≤ W / P + S T_G\leq W/P+S TG≤W/P+S
贪心调度原则简单来说就是我们使用
P
P
P个处理器来处理某个
W
o
r
k
=
W
Work=W
Work=W,
S
p
a
n
=
S
Span=S
Span=S的计算任务时,某个处理器处于空闲状态当且仅当此时没有可被执行的子任务.
上面的计算过程图对应的一个 W o r k = 10 , S p a n = 4 Work=10,Span=4 Work=10,Span=4的并行计算过程,有通路连接的节点的之间有执行顺序要求. 当某个子任务也即是某个节点,被执行完毕之后,将其点标记为蓝色,而未执行的子任务标记为红色. 在此处我们假设我们拥有 P = 2 P=2 P=2个处理器. 可见当执行第0层的所有任务时会出现处理器空闲的情况(第0层只有1这个节点),而执行第二层的2、3节点时所有的处理器都被使用按照. 贪心调度原则,在下一步执行时应当同时执行4、5两个节点,因为此时处理器数目小于可执行的节点数(4、5、6均可被执行). 这时我们将贪心调度“程度”降低一些,改为某一层执行完毕之前不能执行下一层的任何节点,换句话说就是按照层序遍历这颗计算树,则下一步只能执行4节点.
显然贪心调度所需时间
T
G
≤
T_G\leq
TG≤“层序调度”所需时间
T
L
T_L
TL,下面我们计算
T
L
T_L
TL的上确界.对于任何一个
W
o
r
k
=
W
,
S
p
a
n
=
S
Work=W,Span=S
Work=W,Span=S的计算任务,可设其第
i
i
i层的
W
o
r
k
=
W
i
Work=W_i
Work=Wi,则每一层的时间
T
i
=
⌈
W
i
/
P
⌉
T_i= \lceil W_i/P\rceil
Ti=⌈Wi/P⌉,进而有:
T
G
≤
T
L
=
∑
i
=
1
S
⌈
W
i
P
⌉
≤
∑
i
=
1
S
(
⌊
W
i
P
⌋
+
1
)
≤
⌊
W
P
⌋
+
S
\begin{aligned} T_G\leq T_L&=\sum_{i=1}^S\lceil \frac{W_i}{P}\rceil\\ &\leq\sum_{i=1}^S(\lfloor \frac{W_i}{P}\rfloor+1)\\ &\leq\lfloor \frac{W}{P}\rfloor+S \end{aligned}
TG≤TL=i=1∑S⌈PWi⌉≤i=1∑S(⌊PWi⌋+1)≤⌊PW⌋+S
至此已经证明出使用贪心调度原则时,所需时间
T
G
≤
W
/
P
+
S
T_G\leq W/P+S
TG≤W/P+S.
2.求解 T G T_G TG更为精确的上界
下面是贪心调度更为精确的上界计算与分析:
假设每一步执行时所有的 P P P个处理器都需要进行“准备执行”的过程(无论准备之后是否真的有任务需要执行),执行完整个过程之后,总共有 K K K次“准备执行”过程,则易知 T = K / P T=K/P T=K/P. 如果我们能够确定 K K K的上界,就可以很轻松的得到 T G T_G TG的上界。将“准备执行”过程分为两类,第一类为“有效准备”,即准备好的处理器确实立刻执行了某个子任务,设该类过程共计 K E K_E KE个;第二类为“无效准备”,即准备好的处理器在这一步中处于闲置状态,设该类过程共计 K W K_W KW个.
首先不论使用什么调度方式,每一个子任务都需要被执行,因此执行每个子任务的处理器都经过了“有效准备”. 又因为每个经过了“有效准备”的处理器都执行了一个子任务,因此可认为 K E = W K_E=W KE=W. 其次每一步执行的时候最少需要执行一个子任务,因此每步最多有 P − 1 P-1 P−1个处理器闲置,故对第 i i i步来说有 K W i ≤ P − 1 K_{W_i}\leq P-1 KWi≤P−1.
下面考虑哪些步骤可能出现处理器闲置的情形. 在贪心调度原则下,只有当可执行的子任务数量小于 P P P时才会出现闲置的情况,仍旧参考前文中的计算图作为示例:由图可知在执行下一步时节点4、5、6均可以被执行,因此当 P ≥ 4 P\geq4 P≥4时会出现“无效准备”过程. 进一步观察可知,当我们只考虑剩余的子任务(子节点)时,计算树变成了计算森林,此时所有已经可以被执行的节点作为森林中的每棵树的根节点(树与树之间可以共用非根结点). 如果下一步的执行有闲置的处理器,则说明所有的根节点均被执行的同时仍有处理器闲置。而所有的根节点都被执行就代表着这个森林中的任何一条(到达树叶节点的)通路的长度均会减 1 1 1.
小结一下上一段的核心观点:如果某一执行步骤存在“无效准备”则该步骤一定会使“未处理子任务森林”中的任何一条“通路”的长度减 1 1 1. 注意到在开始执行整个计算任务之前,计算森林就是整颗计算树,因此“森林”中的最长“通路”长为 S S S,因此整个计算过程中最多有 S S S步会出现闲置处理器,也就是存在“无效准备”过程.
综合前面三段的内容可知
K
W
≤
S
⋅
(
P
−
1
)
K_W\leq S\cdot(P-1)
KW≤S⋅(P−1),因此有:
K
=
K
E
+
K
W
≤
W
+
S
⋅
(
P
−
1
)
\begin{aligned} K&=K_E+K_W\\ &\leq W+S\cdot(P-1)\\ \end{aligned}
K=KE+KW≤W+S⋅(P−1)
T G = K P ≤ W P + S ⋅ P − 1 P T_G=\frac{K}{P}\le \frac{W}{P}+S\cdot\frac{P-1}{P} TG=PK≤PW+S⋅PP−1
至此已经得到了贪婪调度原则下执行时间的更精确的上界.