效率&并行与串行的加速

时间:2012-11-03 09:16:29

标签: performance parallel-processing processing-efficiency

目前,我正在读一本研究,这是我教授在课堂上发表的指南。学习指南不是作业,只是知道在考试中会发生什么。我已经完成了除1个问题以外的所有问题,希望有人可以帮助我。

以下是问题: 假设Tserial = n且Tparallel = n / p + log2(p),其中时间以毫秒为单位,p是 进程数量。如果我们将p增加k倍,找到一个公式,我们需要增加多少n才能保持恒定的效率。如果我们将进程数量从8增加到16,我们应该增加多少?并行程序是否可扩展?

非常感谢任何理解这一点的帮助。

2 个答案:

答案 0 :(得分:10)

评论和第一个答案都可以帮助您解决恒定的并行计算时间问题,但这与求解恒定效率的情况略有不同。

如上所述,并行效率的定义是您使用多个处理器的效率。 100%的效率意味着你使用p处理器获得了加速的因素;所以效率是根据每个处理器的加速来定义的:

enter image description here

所以现在你想要考虑恒定的效率,如果你将处理器的数量增加一个因子k而问题的大小增加一个因子k'。

我们首先要做的就是没有涉及log(p)的“并行开销”术语:

enter image description here

例如,效率始终为1,因此您不需要在处理器编号变化时对问题大小做任何事情。

但是因为有一些开销,为了不断提高效率,你需要在扩展时解决更大的问题。随着开销期限,你得到 enter image description here

让我们看看这里的渐近 - 如果你已经处于无限数量的处理器,你的效率已经达到零(因为每个处理器的工作量为零,但是开销无限),因此你可以保持问题大小不变;效率将保持不变。另一方面,您永远无法将问题大小增加到足以重新获得p = 1时的并行效率;这是100%,你做的任何事情都必然会因为开销而减少。

另请注意,增加问题大小所需的数量总是至少比增加处理器数量的因素多一点。

在您查看的特定情况下,p = 8,k = 2,您需要将问题大小增加2 + 2/3。

答案 1 :(得分:0)

希望这项工作是正确的。

例如,如果Tserial = 10ms,在理想情况下(效率为100%),如果使用2个进程进行并行处理,则Tparallel(理想值)为10ms / 2 = 5ms

不幸的是,任何并行处理都会产生处理开销,以管理在处理器之间分配的工作。

在这种情况下,管理开销所用时间的公式是log2(p)。 因此,如果您有2个处理器且Tserial = 10ms,则Tparallel变为5ms + log2(2)= 6ms

使用上面的例子,让我们假设'恒定效率'意味着如果我们将p增加k倍,我们需要多少增加Tserial,即n使得Tparallel仍然是6ms

让a =因子增加n

n / p + log2(p)= na / pk + log2(pk)

n / p + log2(p)= na / pk + log2(p)+ log2(k)

n / p = na / pk + log2(k)

nk - na = pk log2(k)

k-a =(pk log2(k))/ n

a = k - [(pk log2(k))/ n]

如果p = 8且k = 2

a = 2 - [(16 log2(2))/ n] a = 2 - (16 / n)

在这种情况下,并行程序是可扩展的,因为如果处理器的数量加倍,它可以处理几乎两倍的工作量。 提供n>> 16