Amdahl定律

这里写图片描述

  1. Amdahl定律适用情况:
    问题规模不变,也就是计算量不变的情况下适用,问题规模增大的情况考虑Gustafson定律。

  2. 公式解释
    系统加速比=系统性能(改进后)/系统性能(改进前)=总执行时间(改进前)/总执行时间(改进后);
    fe:改进部分的执行时间在总执行时间中所占的比例。例如,一个原本需要运行60秒的程序中有20秒可以提速,那么fe就是20/60=1/3,这个数可称为并行因子,它总是小于1;
    re:可改进部分改进后性能提高的倍数。re=改进前的执行时间/改进后的执行时间。例如,可改进部分改进前需20秒,改进后只需5秒,则re=20/5=4。

  3. Amdahl定律还有一种形式:
    这里写图片描述

    Ws:串行工作负载;
    Wp:并行工作负载;
    Wo:并行开销;
    f:串行分量,f=Ws/W;
    p:并行处理器个数
    这种形式适合理论阶段,假设实验是线性加速时,用这种方式计算加速比是否能达的最佳效果,从而确定是否继续进行。

  4. 在并行计算过程中,有时会遇到加速比Sp比处理器数P更大的情况,此时求得的加速比即称超线性加速比(英语:superlinear speedup)。超线性加速比很少出现,且由于初学者常以为理论上加速比的最大值应与参与计算的处理器的总数P相等,这一情况常使初学者迷惑不已。
    超线性加速比有几种可能的成因,如现代计算机的存储层次不同所带来的“高速缓存效应”;具体来说,较之顺序计算,在并行计算中,不仅参与计算的处理器数量更多,不同处理器的高速缓存也集合使用。而有鉴于此,集合的缓存便足以提供计算所需的存储量,算法执行时便不必使用速度较慢的内存,因而存储器读些时间便能大幅降低,这便对实际计算产生了额外的加速效果。
    例如:搜索算法并行后可能会出现超线性加速,比如搜索域为一个有200个元素的数组,我们要搜索的数在180位,假设采用顺序搜索,那么找到该数需要180次比较,但是当有两个处理器时,将数组的前100个分给第一个处理器,其余100个分给第二个处理器,两个处理器同时顺序搜索,我们知道该数在第二个处理器的第80位,因此比较80次即可找到,re=180/80=2.25>处理器个数(2).
    以上为个人理解过程中的通俗解释,不一定严谨,只表达大概意思。

  5. 结论:
    实验结果中加速比的计算加速比往往用第一个公式,因为可能会出现超线性加速的情况。

### Amdahl 定律的定义和核心概念 Amdahl定律描述了通过优化或加速计算机系统的一部分所能获得的整体性能提升限度。具体来说,如果只有一部分程序被加速,则整体速度增益受限于未被加速的部分所占的比例[^3]。 #### 数学表达式 假设 \( S \) 表示程序执行时间相对于原始版本的最大可能加速倍数;\( f \) 是可以通过改进措施得到加速的那一部分工作量占比(0≤f<1),其余 (1-f) 的部分无法受益于这种特定类型的优化。那么根据Amdahl定律: \[ S_{\text{max}} = \frac{1}{(1 - f) + \frac{f}{S_p}} \] 其中 \( S_p \) 代表可并行化部分的实际加速因子。当 \( f=0 \),即没有任何部分能够被加速时,最大理论加速比等于1;反之,即使存在无限大的 \( S_p \),只要还有不可忽略的工作负载未能受益于此种形式下的提速方案,最终取得的效果也会受到限制。 此公式强调了一个重要的事实:为了显著改善整个系统的效率,必须关注那些占用大量时间和资源的关键路径上的操作,并尽可能减少串行处理阶段的时间消耗。 #### 实际应用场景 在实际应用中,Amdahl定律提醒开发者们,在追求高性能计算的过程中,不仅要考虑如何有效地利用多核或多处理器架构带来的潜力,还要重视算法设计本身是否存在瓶颈环节。例如,在构建大规模机器学习平台时,除了增加GPU数量外,还需要审视数据预处理流程、特征工程步骤等方面是否有进一步精简的空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值