1. 研究背景
- 現有 TVM 的自動調度模組未能有效融合 memory-intensive operators(如 ElemWise、Broadcast 和 Reduce),導致:
- 頻繁的記憶體訪問,增加數據傳輸開銷;
- 額外的 Kernel 啟動,降低執行效率;
- 未充分利用寄存器與快取(cache),影響運算效能。
2. 方法與技術
(1) 算子特性分析
- 算子分類
文獻將算子分為計算密集型(Compute-Intensive)與內存密集型(Memory-Intensive):
- 計算密集型(Compute-Intensive):例如 Conv(卷積)、Dense(全連接層),主要消耗計算時間;
- 內存密集型(Memory-Intensive):例如 ElemWise、Broadcast、Reduce,主要消耗內存訪問時間。
- 研究發現
- Reduce 算子通常沿特定維度計算總和(Sum)、均值(Mean)等,壓縮輸入數據;
- Broadcast / ElemWise 算子會擴展張量,使其符合輸出形狀;
- Reduce + Broadcast / ElemWise 結構在維度大於等於 2 時可以進行融合,從而減少記憶體訪問,降低 Kernel 啟動開銷。
(2) 手動調度規則構造
為了驗證算子融合的有效性,研究人員首先使用TVM 的 tensor expression 調度原語(Scheduling Primitives)來手動構造融合規則:
- 使用 compute_at 進行融合
- 定義 Reduce(Sum)算子,作為 Broadcast(Add)算子的輸入;
- 使用
compute_at 將 Reduce 算子與 Broadcast 算子融合,使它們在相同的內層迴圈中執行;
- 綁定計算到 GPU thread block 和 threads,以實現高效的並行運算。
這樣可以減少額外的記憶體訪問,允許計算結果直接存入寄存器或快取,進一步降低開銷。
3. 實驗結果與分析
(2) 性能提升
(a) 自動調優表現
- 研究人員對 GPU 和 DCU 進行1000 次調優測試,結果顯示:
- 新增的調度規則並不會增加調優時間;
- 最佳性能結果顯著提升,GPU 和 DCU 平台在調優過程中,計算效能(GFlops)明顯提高。
(b) 運行時間加速比
- GPU 平台:
- 平均加速比 1.21 倍
- 在測試集 **01(小型數據)**上,加速比高達 1.67 倍