正文

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

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


1.3  理解Amdahl法則

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

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

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

其中:

● P表示能夠完全并行運行的代碼比例。

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

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

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


上一章目錄下一章

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