有人可以帮助我这个例子并告诉我如何处理第二部分吗?
问题是:
如果三分之一的天气预报算法本质上是连续的,其余的则是 可并行化,保证150%加速所需的最小核心数是多少 单核实施?
II。你的老板将这个数字修改为200%。你的新答案是什么?
非常感谢!!
答案 0 :(得分:0)
这是猜测。您的教科书可能会更有帮助:)
答案 1 :(得分:0)
如果算法在单个核心上运行并且需要90分钟,则串行部分为30分钟,并行部分为60分钟。
添加CPU:
30表示串行部分,30表示并行部分(60表示半部分与串行部分重叠)。
90/60 =增加150%。
答案 2 :(得分:0)
我有点晚了,但这里有答案:
1)增加150% - >至少需要2个核心dbasnett
表示;
2)增加200% - >根据Amahld定律至少需要4个核心:
此处,执行计算需要90分钟。 P 是算法的实际增强部分(可并行化部分),它是2/3的90,N是核心数,所以当只有核心时:
你得到1,这意味着100%,这是算法执行标准方式的方式(没有多核加速,因此没有并行化加速)。
现在,我们必须找到前面等式为2的N个核心,其中2表示算法在半个时间内执行(45分钟而不是没有并行化时为90分钟),因此加速率为200%:< / p>
自:
我们看到了:
因此,使用4个核心并行计算2/3的算法,您可以获得200%的加速。同样适用于150%,你会得到2,因为dbasnett
已经告诉过你。
非常简单。
请注意,复杂的算法可能意味着其可并行化部分的进一步划分(理论上,每个可并行化部分可以同时具有不同数量的处理单元):
您可以进一步查看维基百科(还有一个例子):
http://en.wikipedia.org/wiki/Amdahl%27s_law#Description
无论如何,原则是一样的:
让 T 成为算法需要执行才能完成的时间, A 是它的串行部分,B是可并行化部分,N是并行数CPU,你可以将B分成更小的部分,并对每个部分进行计算:
您可以使用C,D,G等采用M CPU代替N(如果M!= N,加速当然会有所不同)。
最后,当你有更多的CPU无关紧要时,你将会到达这一点,因为:
并且您的算法加速最多将倾向于总执行时间(T)除以仅串行部分(A)的执行时间。
因此,只有当算法的串行部分的执行时间较短时,并行计算才非常方便。