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

article/2025/6/7 14:30:27

前言

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

古斯塔夫森定律(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.hkcw.cn/article/emkDHcyfls.shtml

相关文章

Qt 仪表盘源码分享

Qt 仪表盘源码分享 一、效果展示二、优点三、源码分享四、使用方法 一、效果展示 二、优点 直观性 数据以图表或数字形式展示,一目了然。用户可以快速获取关键信息,无需深入阅读大量文字。 实时性 仪表盘通常支持实时更新,确保数据的时效性。…

吞咽与营养并重:进行性核上性麻痹的饮食之道

进行性核上性麻痹是一种罕见的神经系统变性疾病,患者常出现吞咽困难、肢体运动障碍等症状,合理饮食对改善患者营养状况、延缓病情发展至关重要。以下为进行性核上性麻痹患者量身定制的健康饮食方案。 ​患者饮食需遵循 “细软易消化、均衡营养、少食多餐…

leetcode hot100 链表(二)

书接上回: leetcode hot100 链表(一)-CSDN博客 8.删除链表的倒数第N个结点 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* currhead;int len0;while(curr){currcurr->next;len;}int poslen-n…

结构性设计模式之Composite(组合)

结构性设计模式之Composite(组合) 摘要: Composite(组合)模式通过树形结构表示"部分-整体"层次关系,使得用户能够统一处理单个对象和组合对象。该模式包含Component(组件接口&#x…

【Typst】4.导入、包含和读取

概述 上节概述了Typst脚本的基础语法,在此基础上,本节介绍Typst文件的导入、包含和读取的内容。你将可以更简单灵活的组织你的文件内容。 系列目录 1.Typst概述2.Typst标记语法和基础样式3.Typst脚本语法4.导入、包含和读取5.文档结构元素与函数6.布局…

深入解析C++引用:从别名机制到函数特性实践

1.C引用 1.1引用的概念和定义 引用不是新定义⼀个变量,而是给已存在变量取了⼀个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同⼀块内存空间。比如四大名著中林冲,他有一个外号叫豹子头,类比到C里就…

【vue+ts】找不到模块“./App.vue”或其相应的类型声明

报错&#xff1a;找不到模块“./App.vue”或其相应的类型声明。 原因&#xff1a;typescript只能理解.ts文件&#xff0c;无法理解.vue文件。 解决&#xff1a;在src/env.d.ts下添加&#xff1a; /// <reference types"vite/client" /> // 三斜线引用告诉编译…

HTTP Error 400 Bad request 问题分析解决

文章目录 1.问题描述&#xff1a;2.异常信息如下&#xff1a;3.分析异常信息&#xff1a;4.总结&#xff1a; 1.问题描述&#xff1a; 前端保存老是报错HTTP ERROR 400 Bad Request。经过异常分析得出是前端传参导致的后端框架的验证拦截&#xff0c;包的错误。 2.异常信息如下…

数据库的操作

1.查看数据库 show databases; 2.库的创建 create database [IF NOT EXITS] db_name [creat_specification];[]内的是可选选项&#xff0c;IF NOT EXIT表示如果数据库名为db_name的数据库存在就创建数据库&#xff0c;否则就不创建&#xff0c;creat_specification是创建的特…

IP话机和APP拨打电话的区别

‌IP话机和IP电话App&#xff08;如Zoom Phone、Microsoft Teams、Skype等&#xff09;均基于互联网协议&#xff08;VoIP&#xff09;技术实现通话&#xff0c;但在硬件形态、使用场景、功能侧重等方面存在显著差异。以下是主要区别&#xff1a; 1. 硬件形态与部署 IP话机 物…

el-select 实现分页加载,切换也数滚回到顶部,自定义高度

el-select 实现分页加载&#xff0c;切换也数滚回到顶部&#xff0c;自定义高度 1.html <el-form-item label"俱乐部&#xff1a;" prop"club_id" label-width"120px"><el-select :disabled"Boolean(match_id)" style"w…

帝可得- 人员管理

一.需求说明 人员管理业务流程如下&#xff1a; 登录系统&#xff1a; 首先&#xff0c;后台管理人员需要登录到帝可得后台管理系统中。 新增工作人员&#xff1a; 登录系统后&#xff0c;管理人员可以新增工作人员&#xff0c;包括姓名、联系方式等信息。 关联角色&#xf…

【Java Web】7.事务管理AOP

&#x1f4d8;博客主页&#xff1a;程序员葵安 &#x1faf6;感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb; 文章目录 一、事务管理 1.1 事务回顾 1.2 Spring事务管理 1.3 事务进阶 rollbackFor propagation 二、AOP 2.1 AOP概述 2.2 AOP快速入门…

Matlab实现LSTM-SVM回归预测,作者:机器学习之心

Matlab实现LSTM-SVM回归预测&#xff0c;作者&#xff1a;机器学习之心 目录 Matlab实现LSTM-SVM回归预测&#xff0c;作者&#xff1a;机器学习之心效果一览基本介绍程序设计参考资料 效果一览 基本介绍 代码主要功能 该代码实现了一个LSTM-SVM回归预测模型&#xff0c;核心流…

【开源工具】Python+PyQt5打造智能桌面单词记忆工具:悬浮窗+热键切换+自定义词库

&#x1f4da;【深度解析】PythonPyQt5打造智能桌面单词记忆工具&#xff1a;悬浮窗热键切换自定义词库 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#x…

第二十二章 Shell脚本入门

第二十二章 Shell脚本入门 Shell脚本就是包含一系列命令的文件。Shell读取该文件并执行其中的命令&#xff0c;Shell的独特之处在于它即使系统强大的命令接口&#xff0c;又是脚本语言解释器。 创建并执行Shell脚本 创建并执行脚本&#xff0c;要做到3件事: 编写脚本。将脚…

Pandas取代Excel?

有人在知乎上提问&#xff1a;为什么大公司不用pandas取代excel&#xff1f; 而且列出了几个理由&#xff1a;Pandas功能比Excel强大&#xff0c;运行速度更快&#xff0c;Excel除了简单和可视化界面外&#xff0c;没有其他更多的优势。 有个可怕的现实是&#xff0c;对比Exce…

网络安全运维实训室建设方案

一、网络安全运维人才需求与实训困境 在数字化时代&#xff0c;网络安全已成为国家安全、社会稳定和经济发展的重要基石。随着信息技术的飞速发展&#xff0c;网络安全威胁日益复杂多样&#xff0c;从个人隐私泄露到企业商业机密被盗&#xff0c;从关键基础设施遭受攻击到社会…

【C++篇】STL适配器(下篇):优先级队列与反向迭代器的底层奥秘

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C感兴趣的…

在使用十字滑台的过程中,我们需要注意哪些关键事项呢

在使用十字滑台的过程中&#xff0c;需要注意以下关键事项&#xff1a; 安全操作&#xff1a;在使用十字滑台时&#xff0c;务必要注意安全&#xff0c;戴好手套和护目镜&#xff0c;避免发生意外伤害。 稳定支撑&#xff1a;确保十字滑台稳固地放置在平坦稳定的表面上&#x…