機器學習系統與基礎設施

屋頂線模型(roofline model)

屋頂線模型是一張圖,一眼告訴你某個核心究竟是受限於機器的運算還是記憶體,以及你還有多少進步空間。你把可達效能(FLOP/s)對算術強度(每位元組記憶體流量的 FLOPs)畫在雙對數座標上;結果是一條有斜段也有平段的「屋頂」,而你的核心就是底下某處的一個點。

斜的那段屋頂是記憶體頻寬上限,此處效能等於強度乘以頻寬;平的那段是峰值運算速率。兩者交會在脊點(ridge point),其強度等於峰值 FLOP/s 除以峰值頻寬。落在脊點左邊的核心是記憶體受限——上限由頻寬決定——落在右邊則是運算受限。你量到的點與屋頂之間的垂直差距就是可改善的餘量;要把它補上,要嘛是觸及對應的上限,要嘛對記憶體受限的核心而言,靠融合與更好的資料重用提高強度,讓點向右滑。

基本屋頂線是個忽略快取、延遲與重疊的上界,所以真實核心會因為它顯示不出來的原因而達不到屋頂;階層式與快取感知的屋頂線會把這張圖補得更細。即便如此,作為第一道診斷,它能乾淨俐落地切穿「下一小時最佳化該花在哪」的瞎猜。

P = \min\!\big(P_{\max},\; I \cdot B\big)

可達效能 P 取峰值運算 P_max 與「強度 I 乘頻寬 B」兩者之較小值;交叉點 I = P_max / B 即脊點,分隔記憶體受限與運算受限。

又稱
roofline屋頂線模型