天天看點

CUDA實踐指南(四)

強大的規模和阿姆達爾定律:

對于固定的整體問題規模而言,強擴充是衡量解決方案的時間如何随着将更多處理器添加到系統中而降低的一種度量。 呈現線性強縮放的應用程式的加速比等于所用處理器的數量。

強大的縮放比例通常等同于Amdahl定律,它指定了通過并行化串行程式的部分可以預期的最大加速比。 從本質上講,它表示一個程式的最大加速S是:$S=\frac{1}{(1-P)+\frac{P}{N}}$

這裡P是可以并行化的代碼部分占用的總串行執行時間的一部分,N是代碼的并行部分運作的處理器的數量。

N越大(即處理器數量越多),P / N分數越小。 将N視為一個非常大的數字可能會更簡單,它本質上将方程轉換為。 現在,如果一個順序程式的運作時間的3/4被并行化,那麼串行代碼的最大加速比為1 /(1 - 3/4)= 4。

實際上,大多數應用程式不具有完美的線性強縮放比例,即使它們表現出某種程度的強縮放比例。 對于大多數目的而言,關鍵點在于可并行化部分P越大,潛在的加速越大。 相反,如果P是一個很小的數字(意味着應用程式不是基本可并行化的),增加處理器的數量N對提高性能幾乎沒有作用。 是以,為了獲得固定問題規模的最大加速比,花費在增加P上的努力是值得的,進而使可以并行化的代碼量最大化。

弱縮放和Gustafson定律:

弱縮放比是衡量解決方案的時間如何随着更多處理器被添加到每個處理器具有固定問題大小的系統而變化的度量; 即,随着處理器數量的增加,整體問題的大小增加。

弱縮放通常等同于Gustafson定律,該定律表明在實踐中,問題的大小随着處理器的數量而變化。 正因為如此,一個程式的最大加速S是:$S=N+(1-P)(1-N)$

這裡P是可以并行化的代碼部分占用的總串行執行時間的分數,N是代碼的并行部分運作的處理器的數量。

檢視Gustafson律的另一種方法是,随着我們擴大系統而不是執行時間,問題的大小不會保持不變。 請注意,Gustafson定律假設串行執行和并行執行的比率保持不變,這反映了設定和處理較大問題的額外成本。

應用強大和弱縮放:

了解哪種類型的縮放最适用于應用程式是估計加速的重要部分。 對于某些應用程式,問題的大小将保持不變,是以隻有強大的縮放才适用。 一個例子是模組化兩個分子如何互相作用,其中分子大小是固定的。

對于其他應用程式,問題的大小将會增加以填充可用的處理器。 示例包括将流體或結構模組化為網格或網格,以及一些蒙特卡洛模拟,其中增加問題尺寸可提高準确性。

了解了應用程式配置檔案後,開發人員應該了解,如果計算性能發生變化,問題規模将如何變化,然後應用Amdahl或Gustafson定律來确定加速的上限。

繼續閱讀