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

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

前言

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

古斯塔夫森定律(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. 总结

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

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

相关文章:

  • HertzBeat的告警规则如何配置?
  • 如何做接口测试?
  • GPIO的内部结构与功能解析
  • Python趣学篇:Pygame重现《黑客帝国》数字雨
  • 八股学习-JS的闭包
  • Express 集成Sequelize+Sqlite3 默认开启WAL 进程间通信 Conf 打包成可执行 exe 文件
  • 全面解析 Windows CE 定制流程:从内核到设备部署
  • 垂起固定翼无人机应用及技术分析
  • 嵌入式系统:从技术原理到未来趋势(驱动程序篇)
  • 动态规划十大经典题型状态转移、模版等整理(包括leetcode、洛谷题号)
  • Oracle、PostgreSQL 与 MySQL 数据库对比分析与实践指南
  • 公司存储文件用什么比较好?
  • Git 使用规范指南
  • JavaWeb是什么?总结一下JavaWeb的体系
  • 宝塔面板安装nodejs后,通过node -v获取不到版本号,报错node: command not found
  • 安装和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录6
  • 原子操作与非原子操作
  • ollama的安装及加速下载技巧
  • 【计算机系统结构】知识点总结
  • 今日主题二分查找(寻找峰值 力扣162)
  • 茶叶网站建设网页设计制作/什么叫seo
  • 网站建设 常见问题/营销网站都有哪些
  • 做门户网站代码质量方面具体需要注意什么/搜狗seo培训
  • 个人网站模板怎么用/长春seo优化
  • wordpress 破解主题下载/seo专业推广
  • html5网站演示/怎样创建网站平台