回想一下Amdahl关于估计最佳加速比的定律。回答以下问题。
您有一个程序,其40%的代码在三个处理器上并行,仅对于这一小部分代码,就实现了2.3的加速比。总体加速比是多少?
在这个问题上,我很难理解加速和整体加速之间的区别。我知道这个问题的表达方式肯定有所不同。
发布于 2019-11-20 17:54:54
Q:总体加速比是多少?
最好不要从原始和琐碎的Amdahl定律公式开始,而是通过阅读一点more , extending the original,其中讨论了附加开销成本,并解释了拆分工作的原子性的一个方面。

两个部分,
一次由“局部”加速,
一个总体结果
你最初的问题公式似乎绕过了解释现实世界流程编排开销的各种问题,通过简单地假设一个(net-local)-speedup,其中<PAR>-able在审查中部分相关的实现附加开销成本变得“隐藏”,表现为具有三倍多的资源用于代码流执行的一种低效,但只有2.3倍的加速比,而不是3.0倍,因此在实际上花费超过理论上1/3的时间也是初始设置(一个附加开销时间,不存在于纯[SERIAL]代码执行中) +并行处理(执行The_useful_work,现在的处理能力是代码执行资源的三倍) + 终止并将结果收集回到“主”-code中(附加开销时间,不存在于纯[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
| | |Net overall process(如果没有其他与流程组织相关的附加间接费用)是:
( 60% + ( 40% / 1.0 ) )
---------------------------- ~ 1.2921 x
( 60% + ( 40% / 2.3 ) )https://stackoverflow.com/questions/58933528
复制相似问题