正文

基于任務(wù)的程序設(shè)計(jì)(9)

C#并行編程高級教程 作者:(美)Gastón C.Hillar


1.3  理解Amdahl法則

如果想要充分發(fā)揮多核的優(yōu)勢,在更短時(shí)間內(nèi)運(yùn)行更多的指令,那么就有必要將代碼分解為并行的序列。然而,大部分算法都要求運(yùn)行一些串行代碼來協(xié)調(diào)并行的執(zhí)行。例如,以并行方式啟動(dòng)很多塊計(jì)算,然后收集它們的計(jì)算結(jié)果。用于分解并行任務(wù)和收集結(jié)果的代碼可能是串行代碼,因而不能利用并行化的優(yōu)勢。如果將很多這類算法組合起來,則整體的串行代碼的比例會(huì)增加,而性能優(yōu)勢可能會(huì)下降。

著名計(jì)算機(jī)架構(gòu)師Gene Amdahl對只有部分能夠改進(jìn)的計(jì)算機(jī)系統(tǒng)所能夠獲得的最大性能提升進(jìn)行了觀察。他通過這些觀察定義了Amdahl法則,通過以下公式預(yù)測多處理器系統(tǒng)的最大理論性能提升(即加速比,speedup)。這個(gè)公式也可以應(yīng)用于運(yùn)行在多核微處理器上的并行算法。

最大加速比(倍數(shù)) = 1 / ((1 - P) + (P/N)) 

其中:

● P表示能夠完全并行運(yùn)行的代碼比例。

● N表示可用的計(jì)算單元數(shù)(處理器或物理內(nèi)核數(shù))。

根據(jù)這個(gè)公式,如果一個(gè)算法中總?cè)蝿?wù)的50%(P=0.50)可以并行執(zhí)行,那么在具有兩個(gè)物理內(nèi)核的微處理器上的最大加速比為1.33x。圖1-8展示了一個(gè)帶有1000份任務(wù)的算法,其中500份串行任務(wù),500份并行任務(wù)。如果串行版本需要耗費(fèi)1000秒的時(shí)間完成,那么帶有并行代碼的新版本至少需要750秒才能完成。

最大加速比(倍數(shù)) = 1 / ((1 - 0.50) + (0.50 / 2)) = 1.33x 


上一章目錄下一章

Copyright ? 讀書網(wǎng) www.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號