目前,我正在读一本研究,这是我教授在课堂上发表的指南。学习指南不是作业,只是知道在考试中会发生什么。我已经完成了除1个问题以外的所有问题,希望有人可以帮助我。
以下是问题: 假设Tserial = n且Tparallel = n / p + log2(p),其中时间以毫秒为单位,p是 进程数量。如果我们将p增加k倍,找到一个公式,我们需要增加多少n才能保持恒定的效率。如果我们将进程数量从8增加到16,我们应该增加多少?并行程序是否可扩展?
非常感谢任何理解这一点的帮助。
答案 0 :(得分:10)
评论和第一个答案都可以帮助您解决恒定的并行计算时间问题,但这与求解恒定效率的情况略有不同。
如上所述,并行效率的定义是您使用多个处理器的效率。 100%的效率意味着你使用p处理器获得了加速的因素;所以效率是根据每个处理器的加速来定义的:
所以现在你想要考虑恒定的效率,如果你将处理器的数量增加一个因子k而问题的大小增加一个因子k'。
我们首先要做的就是没有涉及log(p)的“并行开销”术语:
例如,效率始终为1,因此您不需要在处理器编号变化时对问题大小做任何事情。
但是因为有一些开销,为了不断提高效率,你需要在扩展时解决更大的问题。随着开销期限,你得到
让我们看看这里的渐近 - 如果你已经处于无限数量的处理器,你的效率已经达到零(因为每个处理器的工作量为零,但是开销无限),因此你可以保持问题大小不变;效率将保持不变。另一方面,您永远无法将问题大小增加到足以重新获得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