介绍
阿姆达尔定律用描述在并行计算中,多处理器理论上能提高多少倍的速度:
S
=
1
1
−
p
+
p
N
S=\frac{1}{1-p+\frac{p}{N}}
S=1−p+Np1
S为Speedup,代表全局加速倍数(原来总时间/加速后总时间),p为并行计算所占比例(可并行计算代码量/总代码量),N为并行节点处理个数。
变量替代
Fraction enhanced
顾名思义是部分提高,Fraction enhanced是一个比例数值,是并行计算代码/总代码量。
F
r
a
c
t
i
o
n
e
n
h
a
n
c
e
d
=
p
a
r
a
l
l
e
l
c
o
d
e
t
o
t
a
l
c
o
d
e
Fraction\ enhanced=\frac{parallel\ code}{total\ code}
Fraction enhanced=total codeparallel code
例如程序共有100行,其中40行是可以通过并行计算的,那么该值为0.4。所以也可以得出,Fraction enhanced一定小于1。
Speedup enhanced
S
p
e
e
d
u
p
e
n
h
a
n
c
e
d
=
O
l
d
e
x
e
c
u
t
i
o
n
t
i
m
e
N
e
w
e
x
e
c
u
t
i
o
n
t
i
m
e
Speedup\ enhanced=\frac{Old\ execution\ time}{New\ execution\ time}
Speedup enhanced=New execution timeOld execution time
如上公式,该值等于原有运行时间/并行计算加速后的时间。比如原本串行需要6秒,加速后需要3秒,那么该值为2。所以也可得到,该值永远大于1。
Fraction enhanced 和 Speedup enhanced 带入 Amdahl’s law。Fraction enhanced 对应公式中的 p,即并行计算所占比例。Speedup enhanced 对应 N ,即并行节点处理个数。
总结
该公式其实给出了极限加速比:
S
=
1
1
−
p
+
p
N
S=\frac{1}{1-p+\frac{p}{N}}
S=1−p+Np1
当
p
=
0
p=0
p=0时,即只有串行没有并行,无论N为多少,加速比
S
S
S均为1。当
N
→
∞
N \rightarrow \infty
N→∞,当并行核心数无限增多时,极限加速比
S
=
1
/
(
1
−
p
)
S=1/(1-p)
S=1/(1−p)。例如若并行代码为75%,极限加速比不能超过4。
也就是说,在并行系统中一味的增加运算资源,并不能永远成倍地提升系统整体性能。