【理論】量化並行效率:阿姆達爾定律

今天在《代碼的未來》這本書中看到一個定律,叫:阿姆達爾定律

才發現,原來並行效率可以量化的這麼漂亮,它叫加速比,簡單的講就是提升效率的倍數,就很簡單就一個公式:

加速比=frac{W_{s}+W_{p}}{W_{s}+frac{W_{p}}{p}}

其中:

  • 式中 W_s, W_p 分別表示問題規模的串列分量(問題中不能並行化的那一部分)和並行分量
  • p 表示處理器數量

可以很簡單看出來,當 pto infty 的時候,上面那個公式的極限是 frac{W_s+W_p}{W_s}

意思就是無論我們如何提高 p (並行數),效率提升都是不會超過這個值的


舉兩個例子:

  • 有一個 Application,計算(可並行化) 與 I/O(不能並行化) 各佔一半,套公式得:

frac{50+50}{50+frac{50}{p}} rightarrow frac{100}{50} = 2

  • 如果計算占 95%,I/O 5%,套公式得:

frac{5+95}{5+frac{95}{p}} rightarrow frac{100}{5} = 20

第一個例子,效率最多提升到之前的 2 倍(是不是突然明白了什麼??)

第二個例子,效率最多提升到之前的 20 倍

圖更直觀

歡迎糾錯,七拐八繞沒關係,只要能使你離真相更進一步,歡迎關注我或者我的專欄

推薦閱讀:

在中國,量化到底有沒有用?
國內外的做市商(market maker)有哪些差異?
成長股的奧秘,PEG選股策略研究丨礦友必讀
『事件驅動』指數成份股調整帶來的投資機會
編程小白如何結合量化實例學習python量化建模?

TAG:量化 | 并行计算 |