阿姆達爾定律與平行加速比

輸入程式中可平行執行的比例與處理器(核心)數,即可依阿姆達爾定律看出整個程式能加速多少。雙對數圖表會將這種問題規模固定時的上限,與問題規模隨處理器數增加的古斯塔夫森觀點加以比較。

輸入條件

計算結果

加速比(阿姆達爾定律)
–
平行效率
–
加速上限 1/(1−p)
–
擴展加速比(古斯塔夫森定律)
–

細虛線為理想的線性加速(N 倍),藍線為阿姆達爾定律,綠線為古斯塔夫森定律。兩軸皆為對數刻度。未包含通訊、同步及負載不均所造成的額外負擔,因此實際加速比通常較低。

阿姆達爾定律的公式

將單一處理器的執行時間設為 1,可平行化的比例設為 p。使用 N 個處理器時,平行部分縮短為 p/N,但序列部分 (1 − p) 維持不變,因此加速比為 S = 1/((1 − p) + p/N)。無論 N 多大,序列部分都不會消失,所以加速比的上限為 1/(1 − p)。以預設值 p = 95%、N = 16 計算,S ≈ 9.14,上限為 20。僅僅 5% 的序列工作,就決定了程式最快能跑多快。

平行效率與圖表的解讀

平行效率 E = S/N 表示每個處理器實際做了多少有用的工作。以預設值計算為 9.14 ÷ 16 ≈ 57.1%,代表超過 40% 的處理能力實際上處於閒置。在圖表中,藍線在 N 較小時沿著理想虛線上升,之後逐漸偏離並趨於平緩,逼近上限。維持 p = 95% 而將 N 提高到 64,S ≈ 15.4,效率只剩約 24%。效率開始急遽下降的位置,是判斷投入多少處理器才划算的實用依據。

與古斯塔夫森定律的差異

阿姆達爾定律假設增加處理器時問題規模固定,稱為強擴展性。古斯塔夫森定律則讓問題規模隨處理器數增加,並在相同時間內求解,稱為弱擴展性,得到 S = (1 − p) + p·N。例如將模擬網格加密時,只有平行工作量增加,因此加速比幾乎與 N 成正比上升。請注意,這裡的 p 是在 N 個處理器上執行時量測的時間比例,與阿姆達爾定律中 p 的定義不同。

在實際設計中的運用

實際程式還會有執行緒啟動、資料通訊、在鎖與屏障處等待以及負載不均等額外負擔,因此實際加速比會低於阿姆達爾定律的預測。減少序列部分往往比增加核心更有效,所以一般做法是先進行效能剖析,再將熱點平行化。在 GPU 上,與主機之間的資料傳輸及核心函式(kernel)的啟動也相當於序列部分。在晶片設計中,結合少數高效能核心與大量小型核心,是同時加速工作負載中序列與平行部分的一種方式。

練習效能評估題目

從阿姆達爾定律可得到的、關於效能改善作法的啟示,下列何者最適當?

  1. A優先加速花費大量時間的部分(常見情況)
  2. B先加速很少被執行的部分
  3. C無論加速哪個部分,對整體的效果都相同
查看答案與解析

正確答案:A. 優先加速花費大量時間的部分(常見情況)

即使把只占整體1%的部分加速到無限快,整體也只會變快約1%。相對地,若將占80%的部分加快2倍,整體約為1.7倍。因此基本作法是先用剖析器(profiler)等找出花費大量時間的部分,再從那裡開始改善。「加速常見情況」是電腦設計中也反覆使用的原則。

古斯塔夫森定律(Gustafson's law)所表達的想法,下列何者正確?

  1. A增加處理器數量時,若也同時擴大所處理的問題規模,可平行化部分的比例就會增加,而得到很大的加速比
  2. B無論如何增加處理器的數量,加速比的上限一定是2倍
  3. C可平行化的部分,不論問題規模如何,永遠是固定的
查看答案與解析

正確答案:A. 增加處理器數量時,若也同時擴大所處理的問題規模,可平行化部分的比例就會增加,而得到很大的加速比

阿姆達爾定律考慮的是在不改變問題規模的情況下增加處理器,因此無法平行化的部分決定了加速比的上限。古斯塔夫森定律則認為,增加處理器後,應在相同時間內解決更大的問題。例如將模擬的網格劃分得更細,使問題變大,平行的部分就會增加,序列部分的比例變小,因此可得到與處理器數量大致成正比的效果。

以8個核心平行執行後,比1個核心時快了6倍。平行效率是多少?

  1. A75%
  2. B133%
  3. C48%
查看答案與解析

正確答案:A. 75%

平行效率是將加速比除以核心數所得的值,表示核心被有效利用的程度。6÷8 = 75%,所以相對於理想值(8倍),得到了四分之三的效果。其餘25%則因同步等待、工作分配不均、通訊、搶奪記憶體頻寬等而損失。核心越多,平行效率越容易下降,所以要看效率能維持到什麼程度,來決定使用的核心數。

常見問題

90% 可平行化的程式最多能加速多少?

依阿姆達爾定律,上限為 1/(1 − 0.9) = 10 倍。即使使用 16 個處理器,加速比也只有 1/(0.1 + 0.9/16) = 6.4,效率為 40%。除非減少剩下 10% 的序列工作,否則加速比永遠無法超過 10。

阿姆達爾定律與古斯塔夫森定律互相矛盾嗎?

不矛盾。阿姆達爾定律描述問題規模固定的強擴展性,古斯塔夫森定律則描述問題規模隨處理器數增加的弱擴展性。適用哪一種觀點,取決於你是想更快解決同一個問題,還是想在相同時間內解決更大的問題。

平行效率可以超過 100% 嗎?

可以。當增加處理器使每個處理器分到的資料量小到足以放進快取時,記憶體存取會變快,可能出現超線性加速。阿姆達爾定律並未將這類效應納入模型。

相關術語

阿姆達爾定律 古斯塔夫森定律(Gustafson's law) 加速比(Speedup) 平行效率(Parallel efficiency) 強擴展性(Strong scaling) 弱擴展性(Weak scaling)

半導體計算工具

每片晶圓晶粒數與良率計算器由晶圓直徑、晶粒尺寸與缺陷密度計算晶粒數、良率與每顆良品成本微影解析度與焦深計算器由波長、NA 與 k1 求解析度(半間距)、焦深與間距分割數建立時間與保持時間時序計算器正反器到正反器路徑的建立時間與保持時間餘裕及最高時脈頻率MOSFET I-V 特性(ID–VDS)改變 Vth、W/L 與 λ,查看 ID–VDS 曲線與工作點:操作區、ID、gm 與 ro測驗題組產生器選擇主題與題數,即可取得可分享的測驗連結,適合課堂與教育訓練使用接面溫度與熱阻計算器由功耗與熱阻計算接面溫度、與 Tj(max) 的裕度及最大功率記憶體頻寬計算器由傳輸速率與匯流排寬度計算 DDR、LPDDR、GDDR 與 HBM 的峰值頻寬及有效頻寬ADC SNR 與有效位元數(ENOB)由解析度、時脈抖動與過取樣計算 ADC 的 SNR 與有效位元數快取位址分割與平均記憶體存取時間由快取容量、快取行大小與相聯度計算標籤、索引、偏移位元數及平均記憶體存取時間CMOS 功耗(動態與靜態)由活動因子、電容、電壓、頻率與漏電流計算動態與靜態功耗,以及 DVFS 後的功耗PN 接面的內建電位與空乏層寬度由摻雜濃度與逆向偏壓計算 PN 接面的內建電位、空乏層寬度、峰值電場與接面電容熱氧化層厚度(Deal-Grove 模型)以 Deal-Grove 模型由溫度、時間、乾式或濕式氣氛與晶面方位計算矽氧化層厚度與矽消耗量