屋簷分析工具
Roofline 分析工具提供直覺的視覺效能模型,可協助您瞭解影響程式效能的固有硬體限制。具體來說,它著重於程式是否受限於記憶體或運算,以及程式效能與硬體理論峰值效能相差多少,以「屋簷線」表示。
支援平台
TPU:支援
GPU:支援 (Beta 版)
什麼是 Roofline 圖表
屋簷圖表以視覺化方式呈現運算密度 (每位元組存取作業的 FLOPS) 與每秒達成的 FLOPS 之間的關係。
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
在記憶體頻寬和運作強度下,最高 FLOPS 和可達成的效能,會形成「屋頂」形狀。峰值點代表達到最高 FLOPS 所需的最低運作強度。
如要進一步瞭解屋簷模型,請參閱「屋簷:浮點程式和多核心架構的深入淺出視覺效能模型」或 Wikipedia 的「屋簷模型」主題。
解讀 Roofline 圖表
您可以在屋簷圖上繪製不同步驟、程式部分或個別 HLO 作業的運算強度和已達成的 FLOPS,藉此深入瞭解效能瓶頸:
- 如果資料點位於屋簷的斜線部分,效能可能會受記憶體頻寬 (記憶體限制) 限制。提高運作密度 (針對每個存取的資料位元組執行更多運算) 可能會提升效能。
- 如果資料點位於屋簷的平坦部分,效能可能會受到運算能力 (運算限制) 的限制。在這種情況下,除非能更有效地運用硬體的最高 FLOPS,否則進一步提高運作強度可能不會帶來顯著的效能提升。
- 資料點與屋簷線的距離表示成效改善的潛力。差距越大,就表示有最佳化程式的機會,以便更有效地運用硬體功能。
介面元件
Roofline 分析工具介面包含以下幾個重要元件:
- 「裝置資訊」部分會說明硬體規格,這些規格會用於在圖表上靜態繪製「屋簷」
- 程式層級的屋簷圖表,其中資料點對應至下列項目:
- 設定檔的總時間長度。
- 設定檔總時間,但 FLOPS/s 資料是來自硬體效能計數器,而非 XLA 編譯器計算的預設成本模型。
- 在設定檔時間長度內執行的完整步驟平均值 (適用於訓練工作;您可以忽略推論工作中的步驟用語)。
- 在設定檔時間長度內執行的每個完整步驟 (訓練工作;您可以忽略推論工作中的步驟用語)。
- 屋簷圖表也具有下列功能:
- 您可以使用下拉式選單,選擇要納入或排除哪些內嵌式/外嵌式操作。
- 將滑鼠游標懸停在圖表中的任一資料點,即可顯示其他相關資訊,例如不同記憶體的頻寬數字、總花費時間等。
- 程式層級統計資料表,提供每個資料點的其他詳細資料,例如記憶體使用率上限百分比、尖峰 FLOPS 率百分比等。
- 第二個屋簷圖表提供更詳細的資訊,其中會針對剖析期間耗用時間最多的前 1000 個作業繪製資料點:
- 就像程式層級的 Roofline 圖表一樣,將滑鼠游標懸停在每個資料點上,即可顯示該運算的其他資訊。
- 您可以透過下列方式自訂圖表上顯示的資料點:
- 透過下拉式選單加入/排除內文和外文操作。
- 篩選特定類別的作業。
- 篩選受特定資源繫結的作業。
- 篩選特定命名作業。
- 第二個統計資料表 (類似於程式層級表格),提供每個資料點的其他詳細資料。
在上述所有部分中,系統支援以下回憶錄:
- 適用於 TPU:HBM、VMEM、CMEM (僅限 TPU v4)。
- 針對 GPU:HBM、L1/SharedMem。
- 只有在設定檔時間範圍內有任何受該記憶體限制的作業時,圖表才會顯示對應的線條。舉例來說,如果所有運算都是 HBM 或運算限制,您就不會看到 VMEM 或 CMEM 的資料列。