许多的并行应用(比如,搜索和优化),都不太可能(至少是非常困难)准确的预测分配到不同的处理器的子任务的计算规模。因此,问题不能被静态的按处理器分成均匀的工作负载,如果不同的处理器有不同的工作负载,那么,在整个问题的计算过程中,就有一些处理器会处于空闲状态。
在并行程序执行的过程中,某些或者全部的处理器经常需要在某些点进行同步。如果并非所有的处理器都在同一时刻同步就绪,那么,完成准备比较快的处理器就必须等待其他的处理器完成准备,这段时间它是空闲的。不管是那种原因引起了处理器空闲,所有处理器的总的空闲时间都构成了额外开销函数的一个分量。
一个由处理器空闲引起的额外开销的特殊例子是并行算法中存在的串行部分。并行算法的某些部分可能没有被并行化,只允许一个处理器来完成它。此时,将这样的算法中的问题规模表示成为两部分的和:Ws,串行分量的工作;以及Wp,为可并行分量的工作。当一个处理器在完成Ws的工作时,其余的p-1个处理器是空闲的,这样,在一个p处理器的并行系统中,一个规模为Ws的串行部分给额外开销函数带来了(p-1)Ws的分量。
|