阿姆达尔的法律例子

时间:2011-04-08 17:07:47

标签: parallel-processing parallelism-amdahl

Amdahl's Law指出计算的分数S必须从1处理器系统顺序完成到N处理器系统的计算的最大加速最多

                 1 / (S + [(1 - S) / N])

有没有人知道用于确定分数S的代码的实际分析(对于一些非平凡的计算)的书籍或注释?

3 个答案:

答案 0 :(得分:4)

Parallel Programming with .NET的Microsoft模式与实践书中,对Amdahl定律进行了非常好的讨论。

对代码进行详细分析将非常困难 - 因为每种情况都是独一无二的。

但是,如果您具有确定并发量的机制,那么应该可以轻松地进行近似。通过更改可用的并发和分析,您应该能够通过反向求解方程来估计S

答案 1 :(得分:3)

答案 2 :(得分:2)

所涉及的原则并非并行化所独有。如果程序花费25%的时间用于某些特定的操作,那么除了25%的所有内容立即发生(不影响25%)将会使程序占用原始时间的25%,因此速度提高了4倍。

如果算法具有可并行化或不可并行化的明确阶段,则上述公式的应用将很简单 - 图中N路并行化将使可并行化的部分运行速度快N倍,而部件不可并行化的将以正常速度运行。在实践中,我认为大多数算法都不完全由100%可并行化或100%顺序的部分组成。在大多数有趣的情况下,算法可以大部分并行运行,但具有各种排序约束;在某些情况下,精确的排序约束可能与数据有关。因此,“并行化的百分比”可以根据处理器的数量等而变化,因此尝试将其插入公式将不会非常有用。