1

我的作业中有以下问题。我知道我需要使用阿姆达尔定律,但我不知道公式中的哪一部分将成为哪一部分。

这是问题:

如果我们在 8 个线程上同时运行以下代码,它会加速多少?

#include <stdio.h> 
#include <omp.h> //OpenMP library 

int main()  {    int i=0,j=0; 

  for (i=0;i<1000;i++){
    i*i;   } 

  #pragma omp parallel for 

  for (j=0;j<2000;j++){ 
    j*j;   } 

  return 0;  }  ```

任何帮助表示赞赏!

4

2 回答 2

2

阿姆达尔定律是这样的:

阿姆达尔定律

s是从改进的系统资源中受益的部分任务的加速,p是从改进的资源中受益的部分最初占用的执行时间的比例。

您的程序运行的时间与 3000 成比例,如果程序以串行方式运行,则循环迭代的总数。

您希望并行化的程序部分占运行时间的 2/3。由于您计划在 8 个线程上运行它,因此该部分程序的理论加速是 8 倍。

我们将数字代入方程:

1/((1-2/3) + (2/3)/8)

这表明加速有 2.4 倍的界限。

于 2021-12-04T06:11:34.253 回答
0

如果有疑问 - 尝试使用下面链接的交互式工具,然后再进行判断。

铊;博士;

@Richard 的观点基于 Amdahl 的论点,但不适合,也不适用于您的原始问题:

“如何在一段给定的代码上应用阿姆达尔定律?”

这个问题值得有两个答案:

a)
Amdahl 定律的原始、开销幼稚、与资源无关的公式(如果应用于给定的代码段)回答了“加速”的主要限制,如果在“改进的“组织(使用更多、平行、相互独立的线路,允许原始流程的某些部分更好地组织(可能并行处理它们),从而提高整体端到端流程持续时间)。因此,Amdahl 的论点与 CPU-s、CPU-cores、产生更多线程的工具等无关,Gene M. AMDAHL 博士已经表达了通用流程编排的原始公式,重用并承认对先前教授的钦佩. Kenneth E. KNIGHT,斯坦福工商管理学院 1966 年/9 月发表了作品。

b)
无论另一个问题多么诱人,阿姆达尔定律并没有回答它实际运行的速度,而只是说明了一个主要的加速限制,这仍然是一个永远无法达到的限制,即使在最抽象和极其理想化的情况下也是如此条件(零延迟、零抖动、零附加开销时间、零附加数据 SER/DES 开销时间、零 PAR 工作段批处理 SER 调度,还有更多在这里命名)

在 2017 年的某个地方,发表了对在当代语境中使用原始 Amdahl 论点的弱点的批评,以及对原始 Amdahl 论点的扩展表述,以更好地反映多年前所说的幼稚使用的弱点*。在帮助大约三年后确实“了解更多......”,正如点击链接上明确写的那样,它被“编辑”。

还有一个可视化的 GUI 工具,可以交互和玩,改变参数并直观地看到它们对产生的主体加速上限的直接影响。与仅阅读本文的其余部分相比,这可能有助于更好地测试和查看硬影响。


你的第二个问题:

“如果我们在 8 个线程上同时运行以下代码,它会加速多少?”

在现实世界的问题中是实用且常见的,但阿姆达尔定律,即使是开销严格、资源和工作原子性感知的重新制定版本也不能直接回答它。

如果我们瞄准机会认真回答第二个问题,我们可以(并且应该)履行我们的专业职责并描述实际硬件流程的关键阶段,无论观察结果可能有多模糊和抖动相关(规模- 后台工作负载、CPU 内核的热节流效应和其他相互关联的依赖关系总是很重要 - 在小规模上“较少”,但如果用完 HPC 配额,可能会导致我们的 HPC 调度处理被终止,这只是因为我们生病了-执行或缺少附加开销分析):

  • 线程池的额外开销是多少? (s) 在新的 RAM 分配中,有时因此启动 O/S 资源的窒息和交换抖动) (re)-instantiation ... in [ns]

  • 与数据(参数)交换相关的额外开销成本是多少……在 [ns]

  • 有哪些资源可能会阻止可达到的并发/并行处理级别(共享、错误共享、I/O 限制……),这些资源会导致处理编排的独立障碍,即使我们有“无限” - 许多免费CPU-cores ...这降低了分母的价值,这将决定人们可能期望从独立流动的过程- (代码) -执行的实际共存中获得的可实现的效果(我们可以声称拥有6辆法拉利汽车,我们可以完全并行移动“数据”,比以纯方式一个接一个地移动具有 (PAR / 6) 改进[SERIAL],但是如果道路从头到尾经过一座只有 2 条车道的桥,净效果将退化为只有( PAR / 2 ) PAR上的“改进”-部分(仍然没有谈论将我们的“数据”加载到我们的法拉利“sport-wagens”六重奏中和从我们的“sport-wagens”中卸载的其他间接费用)

更多关于现实世界中递归使用的想法在这里,并且总是特定于device指令组合(架构和缓存细节非常重要)

于 2022-01-08T19:05:04.607 回答