Overview
Amdahl 定律(Amdahl’s law)是并行计算领略一个非常著名的定律。由 Gene Amdahl 于1967年提出。Amdahl 定律描述的是数据规模固定时,渐进加速比的变化趋势。
T i m e = s + f p Time = s + \frac{f}{p} Time=s+pf
- s s s 串行部分
- f f f 并行部分
- p p p 核数
如下图所示。
Introduction
假设我们有一个任务 task 里有25%的代码是并行的。那么在单机多核的情况下,我们可以获得怎样的加速比呢?
- i i i 核数
- m i m_{i} mi 有用 i i i 核数的机器
单机单核的效率。
m 1 = 25 % + 75 % = 100 % m_{1} = 25\% + 75\% = 100\% m1=25%+75%=100%
单机双核是单机单核的 7 8 \frac{7}{8} 87。
m 1 = 25 % × 1 2 + 75 % = 7 8 m_{1} = 25\% \times \frac{1}{2} + 75\% = \frac{7}{8} m1=25%×21+75%=87
单机4核是单机单核的 13 16 \frac{13}{16} 1613。
m 1 = 25 % × 1 4 + 75 % = 13 16 m_{1} = 25\% \times \frac{1}{4} + 75\% = \frac{13}{16} m1=25%×41+75%=1613
单机8核是单机单核的 25 32 \frac{25}{32} 3225。
m 1 = 25 % × 1 8 + 75 % = 25 32 m_{1} = 25\% \times \frac{1}{8} + 75\% = \frac{25}{32} m1=25%×81+75%=3225
单机1000核是单机单核的 3001 4000 \frac{3001}{4000} 40003001。
m 1 = 25 % × 1 1000 + 75 % = 3001 4000 m_{1} = 25\% \times \frac{1}{1000} + 75\% = \frac{3001}{4000} m1=25%×10001+75%=40003001
单机无数核是单机单核的 3 4 \frac{3}{4} 43。
m 1 = 25 % × 1 + ∞ + 75 % = 3 4 m_{1} = 25\% \times \frac{1}{+\infty} + 75\% = \frac{3}{4} m1=25%×+∞1+75%=43
从以上推算,可以知道,当并行代码所占的百分比固定的情况下,随着核数 i i i 增加,对并行效率的提升会固定在一定比例。
Reference
- Introduction to HPC with MPI for Data Science
- https://www.youtube.com/watch?v=ViMI_ciiC2A
- https://www.youtube.com/watch?v=Axx2xuB-Xuo