阿姆達爾定律與古斯塔夫森定律的差異:前提、公式、擴展性、範例比較
兩者都是估算增加處理器時能加速多少的定律,但前提不同。阿姆達爾定律固定問題規模,考慮如何更快完成相同的工作,因此無法平行化的部分決定了加速的上限。古斯塔夫森定律固定執行時間,考慮隨著處理器增加而解更大的問題,因此加速幾乎與處理器數量成正比地增加。兩者並不矛盾,而是在回答不同的問題。
| 項目 | 阿姆達爾定律 | 古斯塔夫森定律 |
|---|---|---|
| 固定的項目 | 問題規模(總工作量) | 執行時間(每個處理器的工作量) |
| 問題 | 相同的問題能解得多快 | 在相同的時間內能解多大的問題 |
| 公式(N 為處理器數) | S = 1 / ((1 − p) + p / N) | S = s + (1 − s) × N = N − s × (N − 1) |
| 比例的量測方式 | p 是在 1 個處理器上執行時,可平行化部分所佔的時間比例 | s 是在 N 個處理器上平行執行時,循序部分所佔的時間比例 |
| 增加 N 時 | 在 1 / (1 − p) 達到上限 | 幾乎與 N 成正比地持續增加 |
| 計算範例 | 若 p = 0.95,N = 100 時約 17 倍,即使 N 為無限大,上限也是 20 倍 | 若 s = 0.05,N = 100 時約 95 倍 |
| 對應的擴展方式 | 強擴展(strong scaling) | 弱擴展(weak scaling) |
| 呈現的觀點 | 悲觀。少量的循序部分決定上限 | 樂觀。只要擴大問題,平行化就有回報 |
| 適用的例子 | 想快速處理固定大小的輸入時。例如處理 1 張影像、互動式回應等 | 網格更細的模擬,或想在相同時間內處理更大的資料或模型時 |
| 兩者都未納入的因素 | 通訊與同步的額外負擔、負載不均、記憶體頻寬不足 | 通訊與同步的額外負擔、負載不均、記憶體頻寬不足 |
數值為具代表性的大致參考值,會因世代或產品而異。