如果有疑问 - 尝试使用下面链接的交互式工具,然后再进行判断。
铊;博士;
@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
指令组合(架构和缓存细节非常重要)