1.5 Amdahl定律

Amdahl定律:并行任务获得的加速比是有限的,受限于程序中必须要串行执行的部分。

如果多个处理器运行起来时,有90%的时间是并行执行任务而10%的时间是在串行执行,那么获得的加速比是5,所以我们要做的是尽量让那10%并行化,这是并发编程的重点。其难点在于这牵扯到了多个线程之间的通信于协作,所以我们应该理解何掌握对程序代码中需要同步和协作的部分进行高效编程的技术和工具。

### 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、付费专栏及课程。

余额充值