确定代码的并行和串行区域并使用阿姆达尔定律计算加速比



我试图理解阿姆达尔定律的工作原理,但在这个过程中感到困惑。考虑以下问题:

假设
程序开头有一部分本质上是顺序的(必须仅由一个处理器执行),占用3ms。此外,在程序的末尾有一个部分是顺序的(必须仅由一个处理器执行),耗时4毫秒。其余的代码被分成5个相等的部分,在5个进程中并行执行,每个部分花费16毫秒。使用Amdahl定律计算加速

我是这样处理这个问题的。我首先计算了串行和并行分数,其中0.3是串行部分,0.7是通过以下逻辑计算的并行部分:

Serial Part = 3ms + 4ms = 7ms

并行部分= 16 ms(仅取一次,因为代码在5个处理器上并行执行)

Total = 7 ms + 16 ms = 23 ms

序列分数= 7 ms/23 ms = 0.3(约)

平行分数= 16 ms/23 ms = 0.7(约)

现在把值放在阿姆达尔定律中:

Speedup = 1/(S + p/N)(其中N =处理器,S =串行分数,p =并行分数)

加速= 1/(0.3 + 0.7/5)= 2.27(大约)

所以我的方法是正确的还是有任何其他值的加速这个问题?

让我们从一个基本的工作流程计划开始,就好像没有额外的资源一样,但是允许单个(纯[SERIAL])流运行整个工作量。

这个基线计划,不使用任何类型的并发或并行业务流程,表明,初始3 [ms]-sprint (SSS)之后连续执行五个独立的16 [ms]-sprint(以16-P-s块标记),整个工作流程在最终4 [ms]-sprint完成基线计算拓扑后终止,大约87 [ms]。

+-------+                                                                              +-------+
|       |                                                                              |       |
| START |                                                                              | EoJOB |
|       |                                                                              |       |
+-------+                                                                              +-------+
:         1         2         3         4         5         6         7         8      :  9
0....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5
|                                                                                      ^
v                                                                                      |
=SSS                                                                                SSSS
|                                                                                |
|PPPPPPPPPPPPPPPP                                                                |
|PPPPPPPPPPPPPPPP                                                |
|PPPPPPPPPPPPPPPP                                |
|PPPPPPPPPPPPPPPP                |
|PPPPPPPPPPPPPPPP|

Amdahl定律定义了一个最大加速,如果所有[PARALLEL]-is-能够工作的单元都能实现,那么这是可以预期的。一定要用足够的电源运行;及时释放额外的处理资源(O/P中给出的5个cpu)。

调度,现在使用至少这5个空闲的CPU资源在其他非阻塞处理结构上,在资源优化编排中运行计算拓扑,完成相同数量的工作,但大约只有27 [ms]。

+-------+              +-------+
|       |              |       |
| START |              | EoJOB |
|       |              |       |
+-------+              +-------+
:         1         2  :      3     
0....5....0....5....0....5....0....5....
|                      ^               [ms]
v                      |
=SSS                SSSS
|                |
| CPU[A]         |
|PPPPPPPPPPPPPPPP|
|                |
| CPU[B]         |
|PPPPPPPPPPPPPPPP|
|                |
| CPU[C]         |
|PPPPPPPPPPPPPPPP|
|                |
| CPU[D]         |
|PPPPPPPPPPPPPPPP|
|                |
| CPU[E]         |
|PPPPPPPPPPPPPPPP|

这是由于以true-[PARALLEL]方式运行所有p -able块的优势(在适当的时候有空闲的&非阻塞访问5+ CPU资源)

进一步我们可以看到,无论有多少额外的CPU资源可用,除了这5个CPU之外,都不会出现进一步的加速,因为p -可部分已经映射到CPU资源上[A:E],任何其他CPU都不会帮助它们更快地完成任何事情或更快地完成整个计算拓扑。

1
S = -------------------------------- ~ 3.782 x if using 5+ CPU-resources
( 3 + 4 )       ( 5 x 16 )
_________   +  ___________
87               87
--------------
5                  <--- using 5+ CPU-resources to operate them in parallel

Q.E.D.


查看更多信息
关于Amdahl的收益递减定律(增加更多的cpu将使额外的速度为零),关于可p工作单元执行的原子性的影响,关于设置/终止附加开销的影响,您可能想要阅读

最新更新