2011-04-08 20 views
5

Amdahl's Law規定,計算其中計算的分數s必須是順序執行的從1個處理器的系統將一個N處理器系統的最大加速最多Amdahl定律的例子

    1/(S + [(1 - S)/N]) 

有誰知道的書籍或筆記,其中的代碼的實際分析,對於一些非平凡的計算,用於確定分數S完成?

回答

2

涉及的原理並非並行化所獨有。如果25%的程序花費在做某些特定的操作上,那麼25%的一切都會立即發生(不影響25%)會使程序佔用原始時間的25%,因此速度是其四倍。

在算法有清晰相位或不可並行化的情況下,上述公式的應用將會很簡單 - 圖中N路並行化將使可並行化的部分運行N倍,而不可並行化的部分將以正常速度運行。在實踐中,我不認爲大多數算法完全由100%可並行或100%連續的部分組成。在最有趣的情況下,算法可以平行運行,但有各種排序約束;在某些情況下,精確的排序約束可能與數據有關。因此,「並行化的百分比」可以根據處理器的數量等因素而變化,因此嘗試將其插入公式中並不會很有幫助。

4

關於Parallel Programming with .NET的Microsoft模式和實踐書中有關於Amdahl定律的很好的討論。

對代碼進行詳細分析將非常困難 - 因爲每種情況都是獨特的。

但是,它應該是可以容易地近似的東西,只要您有機制來確定併發量即可。通過改變可用的併發性和性能分析,您應該能夠通過反向求解方程來估計S