今天在《代码的未来》这本书中看到一个定律,叫:阿姆达尔定律,原来并行效率可以量化的这么漂亮,它叫 加速比,简单的讲就是提升效率的倍数,很简单就一个公式:
看到公式先别怕(我一开始也是很怕的),听我解释两点你就明白:
1. 式中W_{s},W_{p} 分别表示问题规模的串行分量(问题中不能并行化的那一部分)和并行分量,可以很简单看出来,当 p->infty 的时候,上面那个公式的极限是:
2. p表示处理器数量
意思就是无论我们如何提高(处理器的数量),效率的提升都不会超过这个值
举两例子就清楚了:
1. 有一个 App,计算(假设可并行化) 与 I/O(不可并行化) 各占一半,套上面公式得:
2. 而如果计算占 95%,I/O 5%,再套公式得:
第一个例子,效率最多提升到之前的 2 倍 第二个例子,效率最多提升到之前的 20 倍(是不是突然之间明白了什么?)
最后放图加深记忆:
嗯,就这么简单,PPT 的逼格又能 啦,正文完