当前位置: 首页 > 编程笔记 >

什么是阿姆达尔定律?

法和硕
2023-03-14
本文向大家介绍什么是阿姆达尔定律?,包括了什么是阿姆达尔定律?的使用技巧和注意事项,需要的朋友参考一下

阿姆达尔定律

假设莫妮必须参加邀请。Moni的另外两个朋友Diya和Hena也应邀参加。在某些情况下,所有三个朋友必须分别去那里,而且他们都必须在门口出现才能进入大厅。现在,莫妮(Moni)驾车而来,迪亚(Diya)乘公共汽车而赫纳(Hena)步行即可到达。现在,Moni和Diya到达那里的速度并不重要,他们必须等待Hena。因此,为了加快整个过程,我们需要专注于除Moni或Diya之外的Hena的性能。

这实际上是在阿姆达尔定律中发生的。它把系统性能的提高与性能不佳的部分联系在一起,就像我们需要照顾系统那部分的性能一样。经常在并行计算中使用该定律来预测使用多个处理器时的理论加速。

阿姆达尔定律可以用以下数学方式表示-

加速最大值= 1 /(((1-p)+(p / s)))

加速MAX =最大性能提升

s =实施增强后的性能增益因子p。

p =需要提高性能的部分。

让我们举个例子,如果可以改进的部分占整个系统的30%,并且对于一个系统,其性能可以提高一倍,那么-

SpeedupMAX = 1 /(((1-0.30)+(0.30 / 2))

= 1.18

现在,在另一个示例中,如果可以改进的部分占整个系统的70%,并且对于一个系统,其性能可以提高一倍,则-

SpeedupMAX = 1 /(((1-0.70)+(0.70 / 2))

= 1.54

因此,我们可以看到,如果不能提高1-p,那么系统的整体性能就不能提高太多。因此,如果1-p为1/2,则无论使用多少处理器,速度都不能超过该值。

多核编程最常用于信号处理和工厂控制系统。在信号处理中,可以有一个并行处理并行处理多个帧的系统。在工厂控制系统中,控制器和工厂可以作为两个单独的任务执行。

多核编程有助于将系统拆分为多个并行任务,这些任务可以同时运行,从而缩短了整体执行时间。

 类似资料:
  • 我想用这条流绘制一张地图 我试过很多方法,但都失败了。下面是使用Stream/Lambda和classic循环实现这一点的经典Java代码。 正如你所看到的,我只知道如何在列表中收集信息,但我就是不能在地图上做同样的事情。这就是为什么我必须再次流式处理我的列表,以构建第二个列表,最终将所有内容放在一张地图中。我也试过“收集”。groupingBy语句,因为它也应该生成一张地图,但我失败了。

  • 我正致力于实现最长回文子串问题,我采用了DP和额外的(是的,我知道有一个更有效的算法,但我在这篇文章中对此不感兴趣)的方法。 我的实现基本上使用了递归: 生成相关的表,但运行时间比预期的慢得多。 如果我在IDE中运行它几秒钟后(15+)它确实会给出正确的输出,但任何在线判断都认为它太慢。我不知道问题出在哪里,因为我用的是记忆。因此不会对相同的情况进行重新计算。 开始显示算法存在性能问题的字符串长度

  • 当我跑的时候 我在Java中得到错误。为什么?这相当于false==false,这是真的。这不是Java特有的,我在其他语言中也得到了相同的结果。这是因为短路评估吗?似乎左右双方仍会/应该进行比较。

  • Python3 实例 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。 以下代码用于检测用户输入的数字是否为阿姆斯特朗数: 实例(Python 3.0+)# Filename : test.py # au

  • Android Studio给了我一个弯弯曲曲的说法,我应该/可以把它变成一个lambda。我刚回到我的Android系统。 这是弯曲的“对象:PopupMenu.OnMenuItemClickListener”

  • 问题内容: 从我读到的内容来看,它用于修复CPU中的错误,而无需修改BIOS。根据我对汇编的基本知识,我知道汇编指令在内部由CPU分解为微代码,并相应地执行。但是intel以某种方式可以在系统启动和运行时进行一些更新。 有人有更多信息吗?是否有关于微码可以做什么以及如何使用的文档? 编辑:我读过维基百科的文章:没弄清楚我怎么能自己写一些,以及它有什么用。 问题答案: 在较早的时期,微代码在CPU中