再次聊 Amdahl 定律和 Gustafson 定律
因为考研,这个专题耽搁了,之前提过这个定律但是不深。本来想继续之前的位置读,不过考虑到很久没看了,就来重读一遍,没想到能获得新的理解
Amdahl 定律
Amdahl 这个名字还真难记,查了一下,老爷子生平经历还是值得一看的,本人也是瑞典和挪威混血,15 年因为肺癌去世 RIP。
其实 Amdahl 定律是一个解决一定数据集下并行处理在整体的占比和整体运算速度影响的一种定律(为占比,为芯片数)。
这个公式比较好理解,假设整体串行处理的时间为 1,则优化之后的时间就是串行部分和并行部分的和。
如果 k 是无限多个,则整体速度比则无限趋近于,即整个系统串行和加上并行之后串行时间之比。
Gustafson 定律
Gustafson 则是另一个角度,假定串行时间是 a,单一线程处理并行数据时间是 b,则完全串行运行的时间为 a+nb,实际运行时间为 a+b,那么速度比为
令即串行在整体项目中的占比,经过化简得也就是串行占比足够小的时候,加速比就是芯片数。
Gustafson 定律解决了 Amdohl 定律必须要求数据集一定的前提。但是也有许多争议,比如处理非线性问题时可能不会有理想的结果。