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

前言

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

古斯塔夫森定律(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.pswp.cn/bicheng/83482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RabbitMQ】- Channel和Delivery Tag机制

在 RabbitMQ 的消费者代码中,Channel 和 tag 参数的存在是为了实现消息确认机制(Acknowledgment)和精细化的消息控制。 Channel 参数 作用 Channel 是 AMQP 协议的核心操作接口,通过它可以直接与 RabbitMQ 交互: 手…

核心机制:流量控制

搭配滑动窗口使用的 窗口大小 窗口越大,传输速度就越快,但是也不能无限大,太大了,对于可靠性会有影响 比如发生方以非常快的速度,发送,接收方的处理速度跟不上,也就会导致有效数据被接受方丢弃(又得重传) 流量控制,就是根据接收方的处理能力(如何衡量?),干预到发送方的发送…

深度强化学习赋能城市消防优化,中科院团队提出DRL新方法破解设施配置难题

在城市建设与发展中,地理空间优化至关重要。从工业园区选址,到公共服务设施布局,它都发挥着关键作用。但传统求解方法存在诸多局限,如今,深度学习技术为其带来了新的转机。 近日,在中国地理学会地理模型与…

安科电动机保护器通过ModbusRTU转profinet网关与PLC通讯

安科电动机保护器通过ModbusRTU转profinet网关与PLC通讯 在工业自动化领域,设备间的通信和数据交互至关重要。Modbus作为一种常用的通讯协议,广泛应用于各种工业现场;而Profinet则凭借其高效、实时性,在工业以太网通讯中占据重要…

python直方图

在Python中,绘制直方图(Histogram)是一项非常常见的任务,通常用于数据可视化,以展示数据的分布情况。Python中有多种库可以绘制直方图,其中最常用的两个库是Matplotlib和Seaborn。此外,Pandas库…

在Oxygen编辑器中使用DeepSeek

罗马尼亚公司研制开发的Oxygen编辑器怎样与国产大模型结合,这是今年我在tcworld大会上给大家的分享,需要ppt的朋友请私信联系 - 1 - Oxygen编辑器中的人工智能助手 Oxygen编辑器是罗马尼亚的Syncro Soft公司开发的一款结构化文档编辑器。 它是用来编写…

neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理

前言 突然有需求需要用apoc 导入 低版本的图谱数据,网上资料又比较少,所以就看官网资料并处理了apoc 导入的一些问题。 相关地址 apoc 官方安装网址 apoc 官方导出csv 教程地址 apoc 官方 导入 csv 地址 docker 安装 执行如下命令启动镜像 doc…

macos常见且应该避免被覆盖的系统环境变量(避免用 USERNAME 作为你的自定义变量名)

文章目录 macos避免用 USERNAME 作为你的自定义变量名macos常见且应该避免被覆盖的系统环境变量 macos避免用 USERNAME 作为你的自定义变量名 问题: 你执行了:export USERNAME“admin” 然后执行:echo ${USERNAME} 输出却是:xxx …

Python训练打卡Day41

简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch…

【亲测有效】Mybatis-Plus中更新字段为null

Mybatis-Plus中更新字段为null 遇到问题 Mybatis-Plus更新的默认行为如下: Mybatis-Plus默认如果某个字段为null, 默认不更新这个字段, 例如有个Double类型的字段, 当前数据库数据为10, 然后传参时当前字段为null, 实际上Mybatis-Plus是不会覆盖该字段为null的 在传参的时候如…

如何使用插件和子主题添加WordPress自定义CSS(附:常见错误)

您是否曾经想更改网站外观的某些方面,但不知道怎么做?有一个解决方案——您可以将自定义 CSS(层叠样式表)添加到您的WordPress网站! 在本文中,我们将讨论您需要了解的有关CSS的所有知识以及如何使用它来修…

左值引用和右值引用

一、基本概念 左值(lvalue)和右值(rvalue) 左值指的是有确定存储位置(地址)的对象,通常可以出现在赋值语句左侧。例如:变量名、解引用指针得到的对象、数组元素等都属于左值。 右值…

django入门-orm数据库操作

一:下载数据库依赖项mysqlclient pip install mysqlclient 二:django配置文件配置数据库链接 路径:mysite2\mysite2\settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: data, # 数据库名称USER: root, …

国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案

一、方案背景​ 文物作为人类文明的珍贵载体,具有不可再生性。当前,盗窃破坏、游客不文明行为及自然侵蚀威胁文物安全,传统保护手段存在响应滞后、覆盖不全等局限。随着5G与信息技术发展,基于GB28181协议的EasyGBS视频云平台&…

NetSuite Bundle - Dashboard Refresh

儿童节快乐! 今朝发一个Bundle,解决一个NetSuite Dashboard的老问题。出于性能上的考虑,NetSuite的Dashboard中的Portlet,只能逐一手工刷新。有人基于浏览器做了插件,可以进行自动刷新。但是在我们做项目部署时&#…

<PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…

【AI论文】推理语言模型的强化学习熵机制

摘要:本文旨在克服将强化学习扩展到使用 LLM 进行推理的主要障碍,即策略熵的崩溃。 这种现象在没有熵干预的RL运行中一直存在,其中策略熵在早期训练阶段急剧下降,这种探索能力的减弱总是伴随着策略性能的饱和。 在实践中&#xff…

手动删除网页上的禁止复制事件

以Edge浏览器为环境、以网络上一个文档为例。 右击页面,打开【检查】工具。选择元素,打开【事件侦听器】: 展开copy,删除里面的事件: 选中文字,进行复制

element级联地址选择器

一、实现过程总览 组件替换:将原有的输入框(el-input)替换为级联选择器(el-cascader),并配置基础属性。数据适配:引入 JSON 地址数据,通过cascaderProps映射数据字段(如…

【leetcode-两数之和】

一、题目 二、题解 &#xff08;1&#xff09;双指针 这里要注意j<length的 //声明两个指针int length nums.length;for (int i 0; i < length; i) {for (int j i 1; j<length;j){if (j<length && nums[i]nums[j]target){return new int[]{i,j};}}}r…