并行效率量化: 阿姆达尔定律

2022-06-20 20:05:01 浏览数 (1)

随着CPU核数或分布式服务节点的不断增加, 代码的并行运算效率也会随之增加, 阿姆达尔定律就是对并行效率进行量化的公式.

阿姆达尔公式:

代码语言:javascript复制
S=1/(1-a a/n)

S: 加速比

a: 代码中并行计算的比例

n: 并行计算的节点数

举个例子,

早上起来你需要用0.5小时吃饭, 0.5小时做家务,

因为做家务是可以并行的, 所以a = 0.5;

如果只有你一个人做, n = 1

代码语言:javascript复制
S = 1/(1-a a/n)
= 1/ (1-0.5   0.5/1)
= 1

一个人做的时候, 效率没啥提升, 这也是当然的.

如果你媳妇和你一起做家务呢?

n = 2

代码语言:javascript复制
S = 1/(1-a a/n)
= 1/(1-0.5  0.5/2)
≈ 1.33

两个人一起做的时候, 效率会提升1.33倍.

当n 趋近于无限大时, 你的效率最多能提升两倍

趋势图:

为了能提高整体运行效率, 可以从以下3方面入手:

1.优化串行(非并行)部分代码, 减少运行时间;

2.提高整体代码中并行化比例;

3.提高运行节点数量或CPU核数;

这只是一个参考公式, 实际运行时, 还要考虑会受网络情况, 主机网卡, CPU缓存等方面的影响.

0 人点赞