阿姆达尔的法律例子

时间:2011-12-15 20:45:07

标签: computer-architecture

有人可以帮助我这个例子并告诉我如何处理第二部分吗?

问题是:

  

如果三分之一的天气预报算法本质上是连续的,其余的则是   可并行化,保证150%加速所需的最小核心数是多少   单核实施?

     

II。你的老板将这个数字修改为200%。你的新答案是什么?

非常感谢!!

3 个答案:

答案 0 :(得分:0)

猜猜:如果算法是1/3序列和2/3并行......我认为你添加的每个核心会使你的性能提高66%......所以增加150%,你会需要3个核心,增加200%,你需要4个。

这是猜测。您的教科书可能会更有帮助:)

答案 1 :(得分:0)

如果算法在单个核心上运行并且需要90分钟,则串行部分为30分钟,并行部分为60分钟。

添加CPU:

30表示串行部分,30表示并行部分(60表示半部分与串行部分重叠)。

90/60 =增加150%。

答案 2 :(得分:0)

我有点晚了,但这里有答案:

1)增加150% - >至少需要2个核心dbasnett表示;

2)增加200% - >根据Amahld定律至少需要4个核心:

foo+bar

此处,执行计算需要90分钟。 P 是算法的实际增强部分(可并行化部分),它是2/3的90,N是核心数,所以当只有核心时:

foo+bar

你得到1,这意味着100%,这是算法执行标准方式的方式(没有多核加速,因此没有并行化加速)。

现在,我们必须找到前面等式为2的N个核心,其中2表示算法在半个时间内执行(45分钟而不是没有并行化时为90分钟),因此加速率为200%:< / p>

foo+bar

自:

foo+bar

我们看到了:

foo+bar

foo+bar

foo+bar

foo+bar

因此,使用4个核心并行计算2/3的算法,您可以获得200%的加速。同样适用于150%,你会得到2,因为dbasnett已经告诉过你。

非常简单。

请注意,复杂的算法可能意味着其可并行化部分的进一步划分(理论上,每个可并行化部分可以同时具有不同数量的处理单元):

您可以进一步查看维基百科(还有一个例子):

http://en.wikipedia.org/wiki/Amdahl%27s_law#Description

无论如何,原则是一样的:

T 成为算法需要执行才能完成的时间, A 是它的串行部分,B是可并行化部分,N是并行数CPU,你可以将B分成更小的部分,并对每个部分进行计算:

foo+bar

foo+bar

您可以使用C,D,G等采用M CPU代替N(如果M!= N,加速当然会有所不同)。

最后,当你有更多的CPU无关紧要时,你将会到达这一点,因为:

foo+bar

并且您的算法加速最多将倾向于总执行时间(T)除以仅串行部分(A)的执行时间。

因此,只有当算法的串行部分的执行时间较短时,并行计算才非常方便。