Amdahl定理

来源:互联网 发布:黄金现货软件 编辑:程序博客网 时间:2024/04/28 19:31

阿姆达尔定律英语:Amdahl's law,Amdahl's argument),一个计算机科学界的经验法则,因吉恩·阿姆达尔而得名。它代表了处理器平行运算之后效率提升的能力。

并行计算中的加速比是用并行前的执行速度和并行后的执行速度之比来表示的,它表示了在并行化之后的效率提升情况。

阿姆达尔定律固定负载(计算总量不变时)时的量化标准。可用公式:来表示。式中分别表示问题规模的串行分量(问题中不能并行化的那一部分)和并行分量,p表示处理器数量。

Amdahl定律对多核处理器性能的影响

随着技术的发展,多核心处理器已成为现今处理器发展的潮流.提高处理器性能的方法有许多,其中主要有提高频率与增加核心数量等.提高频率在现有条件下已经比较困难且不经济,增加核心数量之路又能走多远.加速比是衡量系统性能提升的一个重要指标,Amdahl定律便是其中之一.在Amdahl定律的范围内(且不考虑包括通讯开销等在内的并行开销),通过对单一核心提高频率和增加核心数量两个方面的讨论可以得出:在可并行执行部分的执行时间占总执行时间的比例f=0.5时,提高单一核心频率与增加核心所得加速比相同;当f<0.5时,提高单一核心频率可比增加核心数量获得更大加速比;当f>0.5时,增加核心数量获得的加速比更大些.因此,在核心数量增加到一定程度时,通过提高单一核心的频率可获得更高加速比,也可能是更经济有效的方案。

在过去的很多年里,软件性能的提升很大程度上源自处理器速度的增长。软件工程师面对客户抱怨说软件运行得太慢的通常回答是:升级你的系统。

然而现在由于处理器速度逐渐逼近物理极限,继续提高处理器的时钟速度会导致发热量显著增加,甚至核心熔化。江郎才尽的硬件工程师想出了一个能保住自己饭碗的办法:既然不能提高单个核心的速度,那就在一个处理器里面封装多个核心。于是我们进入了多核处理器的时代。

今天,随着多核处理器的发展,计算领域正在发生具有革命性影响的转变。

现在犯难的就是软件工程师了:没有了处理器速度不断提升的免费便车,接下来不得不面对的问题就是如何有效地利用处理器里面的多个核,也就是并行计算。
然而多核面对一个似乎无法回避的难题:阿姆达尔定律(Amdahl's Law)。

阿姆达尔定律告诉我们:系统中某一部件由于采用某种更快的执行方式后整个系统性能的提高与这种执行方式使用频率占总执行时间的比例有关。由于采用特殊的方法所能获得的加速比为:

在多核处理器中加速比是衡量并行程序性能的一个重要参数,定义为Speedup=使用单处理器执行时间/使用多处理器执行时间。根据阿姆达尔定律:

其中,s是系统中串行执行部分占整个系统的比例,n是多核处理器中核的数目。当s=5%时,8核的加速比为5.93倍,16核的加速比为9.14倍,与理想状态的8倍、16倍有不小的差距。当s=30%时,8核的加速比仅有2.58倍,16核的加速比仅有2.91倍,完全没有发挥多核的优势。更加糟糕的是,实际情况往往比Amdahl定律给出的结果更差。考虑到核间交互带来的额外开销,核间同步影响整个系统的并发处理,设计糟糕的系统在多核下甚至比单核下的性能还要低得多。

当n趋近于无穷大时(即假设我们有无穷多个核心),速度提升的上限是 1/s,即速度提升的上限取决于程序不能被并行计算的部分。

这个定律的结果就是,即便我们能够有效地并行计算一个程序的95%,剩下 5%只能串行计算的部分限制了这个程序的运行速度最多能提升1/5%=20倍。而现有的程序中很少能够做到95%以上部分的并行计算。

而且,如果你想在一个并行、线程化的应用中使用不只一个内核,就需要某种通信/同步,而且,对于一个固定的工作负载,通信/同步开销是作业所用 CPU 内核数量的单调递增函数。由此,我们需要对阿姆达尔定律做些简单修改:

其中,T为解决某计算问题所需的总时间,Ts是完成串行工作所需的时间,Tp 是完成所有并行工作所需的时间,N是并行工作中所使用的处理器数量,To是每颗处理器的通信与同步开销。T正是传统阿姆达尔定律公式中所没有的——随着处理器的增多,总开销也会增加。

在没有引入通信/同步开销的传统标准模型中,总时间T就是处理器数N的一个单调递减函数,会逐渐接近于Ts。而在修改后的公式中,我们很清楚地看到,由于存在通信开销,随着处理器数N的增加,在达到某一临界点后,总时间T就会开始增加。因此,对于一个完全并行的应用 (即Ts=0)来说,其所需处理器的最优数量是:

因此,能否有效降低串行执行比例和降低交互开销决定了能否充分发挥多核的性能,其中的关键在于:合理划分任务、减少核间通信。这正是当今多核处理器的发展趋势。

原创粉丝点击