我试图理解阿姆达尔定律的工作原理,但在这个过程中感到困惑。考虑以下问题:
假设
程序开头有一部分本质上是顺序的(必须仅由一个处理器执行),占用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工作单元执行的原子性的影响,关于设置/终止附加开销的影响,您可能想要阅读