首页 > 解决方案 > 如何使用阿姆达尔定律(整体加速与加速)

问题描述

回想一下关于估计最佳可能加速的阿姆达尔定律。回答以下问题。

您有一个程序,其 40% 的代码在三个处理器上并行化,仅对于这部分代码,就实现了 2.3 的加速。什么是整体加速?

在这个问题中,我无法理解加速和整体加速之间的区别。我知道这个问题的措辞肯定有所不同。

标签: parallel-processingparallelism-amdahl

解决方案


整体加速是多少?

最好不要从原始的和微不足道的阿姆达尔定律公式开始,而是通过阅读 现代的观点,扩展原始的,其中讨论了附加的间接成本,并解释了拆分工作的原子性的一个方面。

在此处输入图像描述

两个部分,
一个由“本地”加速,
一个整体结果

您最初的问题表述似乎绕过了那里,通过简单地假设 (net-local)-speedup解释了现实世界流程编排开销的各种问题,其中与<PAR>-ableSection-under-Review 相关的实现附加开销成本变为“隐藏”,但表现为一种低效率,即拥有三倍多的资源用于代码流执行,但只有 2.3 倍的加速,而不是 3.0 倍,因此实际上花费了超过理论 1/3 的时间还有初始设置(附加开销时间,不存在于纯[SERIAL]代码执行中)+并行处理(执行 The_useful_work,现在代码执行资源容量的三倍)+还有终止和结果收集(附加开销时间,不存在于纯[SERIAL]代码执行中)到“主”代码中。

“隐藏”这些进入/退出[PARALLEL]代码执行部分的自然成本简化了作业,但正确理解现实生活成本至关重要,不要花费更多(在设置和所有其他方面)附加的间接费用,这在现实世界中是不可避免的)比一个人永远不会收到的(来自希望获得多处理器利用的拆分处理加速)

|-------> time
|START:
|                                                                                        |DONE: 100% of the code
|                                                     |                                  |
|______________________________________<SEQ>______60%_|_40%__________________<PAR>-able__|
o--------------------------------------<SEQ>----------o----------------------<PAR>-able--o CPU_x runs both <SEQ> and <PAR>-able sections of code, in a pure [SERIAL] process-flow orchestration, one after another
|                                                                                        |
|                                                                                        |

|-------> time
|START:                                                         |
|                                                     |         |DONE: 100% of the code  :
o--------------------------------------<SEQ>----------o         |                        :
|                                                     o---------o    ..   ..   ..   ..   ..CPU_1 runs <PAR>'d code
|                                                     o---------o    ..   ..   ..   ..   ..CPU_2 runs <PAR>'d code
|                                                     o---------o    ..   ..   ..   ..   ..CPU_3 runs <PAR>'d code
|                                                     |         |
|                                                     |         |
|                                                     <_not_1/3_> just ~ 2.3x faster (not 3x) perhaps reflects real-costs (penalisations) of new, add-on, process-organisation related setup + termination overheads
|______________________________________<SEQ>______60%_|_________|~ 40% / 2.3x ~ 17.39% i.e. the <PAR>-section has gained a local ( "net"-section ) speedup of 2.3x instead of 3.0x, achievable on 3-CPU-code-execution streams
|                                                     |         |

整体加速(如果没有产生其他与流程组织相关的附加间接成本)是:

     ( 60% + ( 40% / 1.0 ) )
  ---------------------------- ~ 1.2921 x
     ( 60% + ( 40% / 2.3 ) )

推荐阅读