当前位置: 首页 > article >正文

阿姆达尔定律的演进:古斯塔夫森定律

前言

在上一篇文章《使用阿姆达尔定律来提升效率》中提到的阿姆达尔定律前提是假设问题的规模保持不变,并且给定一台速度更快的机器,目标是更快地解决问题。然而,在大多数情况下,这并不完全正确。当有一台更快的机器时,我们可能会希望增加解决问题的规模或提高解决方案的准确性。

古斯塔夫森定律(Gustafson's Law),又称古斯塔夫森-巴西斯定律(Gustafson-Barsis's Law),是并行计算领域的一项原理,旨在解决并行系统的可扩展性问题。该定律由约翰·L·古斯塔夫森(John L. Gustafson)及其同事埃德温·H·巴西斯(Edwin H. Barsis)于1988年提出,旨在回应阿姆达尔定律(Amdahl's Law)。阿姆达尔定律对并行处理所能实现的性能提升持较为悲观的态度。

古斯塔夫森定律指出,通过增加问题规模可以显著提高并行处理的速度。换句话说,该定律表明,随着处理器数量的增加,总体计算工作量可以按比例增加,以保持恒定的效率。这与阿姆达尔定律形成了对比,后者侧重于固定规模的问题,并强调计算顺序部分的重要性,这限制了可实现的最大加速比。

在古斯塔弗森定律中,保持常数的不是问题的规模,而是我们等待结果的时间。古斯塔夫森观察到,问题的并行部分会随着问题规模的变化而变化,而顺序部分则几乎不会。

1. 古斯塔夫森定律

古斯塔夫森估计加速比S使用并行计算得到的公式如下:

S = s + p x N = s + (1-s) x N = N + (1-N) x s

其中,大写S是并行化的理论加速比,N是处理器的数量,小写s和p分别是在并行系统上执行程序的串行部分和并行部分所花费的时间比例,其中s+p=1。因此,S也可以用p表示为:

S = s + p x N = (1-p) + p x N = 1 + (N-1) x p

2. 古斯塔夫森定律的应用

假设我们有一个70% 并行、30% 顺序的程序,并且我们有10 个处理器,那么按古斯塔弗森定理得到的加速比为:

S = N + (1 - N) x s = 10 + (1 – 10) x 0.3 = 7.3

那假如上面程序有1000个处理器呢?

S = N + (1 - N) x s = 1000 + (1 – 1000) x 0.3 = 700.3

可见随着处理器个数的增加,加速比得到明显的提升。

如果我们使用阿姆达尔定律估计,速度的增加将从 2.7 增加到 3.3。

3. 古斯塔夫森定律的局限性

对于许多软件程序来说,可以对串行执行的时间进行检测和量化。这可以通过在程序的串行部分周围放置计时器来估算s来实现。

基于此分数,可以使用阿姆达尔定律和古斯塔夫森定律来估算加速比。然而,这两个定律都没有考虑通信成本或中间级别的并行性。随着处理器数量的增加,古斯塔夫森定律所实现的加速仍然有限,因为通信成本最终会变得如此之高,以至于抵消了增加工作负载所带来的任何好处。

事实上,当应用于现代并行系统时,这两条定律可能并不准确,因为通信成本对加速有很大的影响。

4. 总结

阿姆达尔定律是保持规模不变谈加速比,古斯塔夫森定律是保持时间长度不变谈加速比。阿姆达尔定律是悲观的,而古斯塔夫森定律则是乐观的。从阿姆达尔定律的角度来看待并行性可能会令人沮丧。古斯塔夫森证明,当我们增加并行部分的工作量时,顺序部分造成的瓶颈会变得不那么严重。

古斯塔弗森定理强调了可拓展性在并行处理中的重要性,它关注并行部分以及如何扩展它以实现更好的性能,这一点与强调计算顺序部分对性能影响的阿姆达尔定律不同。古斯塔夫森定律更适用于现实世界的问题,因为许多计算任务自然会随着数据的大小或所解决问题的复杂性而扩展。

http://www.lryc.cn/news/2398042.html

相关文章:

  • JavaScript极致性能优化全攻略
  • 批量大数据并发处理中的内存安全与高效调度设计(以Qt为例)
  • Transformer核心原理
  • Grafana-State timeline状态时间线
  • 解决CSDN等网站访问不了的问题
  • 【华为云Astro Zero】组装设备管理页面开发(图形拖拽 + 脚本绑定)
  • PopupImageMenuItem 无响应
  • C++ Vector算法精讲与底层探秘:从经典例题到性能优化全解析
  • Flowith,有一种Agent叫无限
  • 系统思考:短期利益与长期系统影响
  • 大数据 ETL 工具 Sqoop 深度解析与实战指南
  • 【学习记录】Django Channels + WebSocket 异步推流开发常用命令汇总
  • (四)动手实现多层感知机:深度学习中的非线性建模实战
  • HTTP连接管理——短连接,长连接,HTTP 流水线
  • 【免费】2004-2020年各省电力消费量数据
  • Python编程基础(四) | if语句
  • 登录的写法,routerHook具体配置,流程
  • Java-IO流之字节输出流详解
  • 工作服/反光衣检测算法AI智能分析网关V4安全作业风险预警方案:筑牢矿山/工地/工厂等多场景安全防线
  • 采摘机器人项目
  • malloc 内存分配机制:brk 与 mmap
  • 设计模式——中介者设计模式(行为型)
  • MinGW-w64的安装详细步骤(c_c++的编译器gcc、g++的windows版,win10、win11真实可用)
  • LabVIEW磁悬浮轴承传感器故障识别
  • MongoDB-6.0.24 主从复制搭建和扩容缩容详解
  • Resend React Email:用React组件化思维重塑电子邮件开发
  • UNION 与 UNION ALL 的区别
  • 多线程1(Thread)
  • NVIDIA DOCA 3.0:引领AI基础设施革命的引擎简析
  • 小家电外贸出口新利器:WD8001低成本风扇智能控制方案全解析