Designing High-Performance GPU Kernels with TileLang: Tensor-Core GEMM, Fused Softmax, FlashAttention, and Autotuning
重點摘要
本教學介紹如何使用TileLang這個高階Python領域專用語言,透過TVM設計與編譯高效能GPU核心,涵蓋向量加法、張量核心矩陣乘法、融合Softmax與FlashAttention等實作。過程中直接操作TileLang的共享記憶體區塊、暫存器片段、管線迴圈等抽象,並讓編譯器管理執行緒映射與低層CUDA指令生成,最後與PyTorch及cuBLAS基準比較,並使用自動調優找出架構相依的核心配置。
TileLang 是一個基於 TVM 的高層次 Python 領域特定語言(DSL),旨在幫助開發者輕鬆設計與編譯出高效能的 GPU 核心。在最新的技術教學中,研究團隊逐步展示了如何透過 TileLang 實作從簡單的向量加法、張量核心矩陣乘法,到融合 Softmax 與 FlashAttention 等複雜運算,並透過自動調校(autotuning)找出最適合硬體架構的配置,讓開發者無需手動撰寫低階 CUDA 程式碼即可達到接近商業函式庫的效能。教學首先在 Google Colab 環境中驗證 CUDA 可用性,並安裝 TileLang 及其依賴的 TVM。
為了公平比較,團隊建立了可重複使用的基準測試工具,包含基於 CUDA 事件的延遲測量與相對誤差數值驗證,所有測試皆以 PyTorch 與 cuBLAS 作為對照組。第一個入門範例是向量加法:開發者只需定義一個簡單的 `T.Kernel` 與 `T.Parallel` 迴圈,TileLang 就能自動產生對應的 CUDA 核心。在 2²² 個元素的向量測試中,TileLang 的吞吐量與 PyTorch 的原生加法幾乎相同,因為兩者都受限於記憶體頻寬,而 TileLang 僅用約 20 行 Python 就達成了等效結果。
進入更重要的張量核心矩陣乘法(GEMM)時,TileLang 的優勢更加明顯。利用 `T.alloc_shared` 分配共享記憶體區塊、`T.alloc_fragment` 建立暫存器片段,並以 `T.Pipelined` 實現資料預取管線化迴圈。在 2048×2048 的 FP16 矩陣乘法中,TileLang 產生的核心可自動使用 `mma.sync`、`wgmma`、`ldmatrix` 和 `cp.async` 等底層 Tensor Core 指令,效能達到 cuBLAS 的 90% 以上。
教學中也展示了如何透過 `get_kernel_source()` 直接檢視編譯器生成的 CUDA 原始碼,讓開發者理解高層抽象如何對映到硬體指令。為了追求最佳效能,手動調整排程(schedule)是 GPU 程式設計的常見挑戰。TileLang 允許開發者以極簡參數改變 tile 大小、管線階段數、執行緒數量與是否啟用 swizzle 記憶體佈局。教學中測試了六組不同配置,從 64×64×32 到 128×256×32,並自動跳過超出共享記憶體預算的組合。結果顯示,較大的 tile 與適當的管線階段數能顯著提升計算吞吐量,而 swizzle 則有助於減少 bank conflict。
這項實驗證明了 TileLang 在表達力與控制力之間的平衡:開發者只需要指定高層策略,編譯器就負責處理執行緒映射、同步與向量化。然而,手動窮舉所有可能的組合並不實際,因此 TileLang 整合了自動調校引擎。教學後段引入 autotuning,能夠針對特定 GPU 架構自動搜尋最佳 kernel 配置,包含 tile 維度、管線深度與執行緒數量。這項功能大幅降低了調校時間,並能產出接近硬體極限的核心。團隊以相同的 GEMM 問題進行自動調校,最終配置在測試的 GPU 上達到了與手動最佳配置幾乎相同的效能,證明自動化搜尋足以取代繁複的手工調整。
除了單純的 GEMM,TileLang 也支援更進階的融合運算,例如將歸一化(Softmax)與矩陣乘法合併在同一個 kernel 中。教學中展示了如何在 GEMM 的 epilogue 階段直接對結果進行 row-wise Softmax,避免將中間結果寫回全域記憶體,減少頻寬消耗。這類 fused kernel 在現代 Transformer 模型中尤其重要,因為 Attention 機制需要多次執行 Softmax 與矩陣乘法。TileLang 透過 `T.reduce` 與 `T.
Parallel` 等原語,讓開發者能以直覺的方式描述逐行歸約操作,編譯器則自動產生對應的 CUDA 代碼,實現高效融合。最引人注目的是,教學更進一步實作了 FlashAttention——一種專為長序列注意力設計的 IO 感知演算法。FlashAttention 透過分塊(tiling)與重新計算(recomputation)減少 GPU 高頻寬記憶體(HBM)的讀寫,大幅提升訓練與推論速度。TileLang 支援以高層抽象描述這些複雜的分塊策略與管線化資料流,讓開發者不必手動管理 shared memory 的分配與同步。
團隊實作的 FlashAttention 在數值正確性上通過測試,效能也與 PyTorch 的原生實作相當,展示了 TileLang 在處理最新研究演算法時的靈活度。整體而言,TileLang 提供了一條從原型到高效能部署的捷徑。開發者可以用 Python 撰寫簡潔的演算法描述,再透過編譯器的自動優化獲得接近手寫 CUDA 的效能。教學中每個步驟都配有可執行的 Colab 筆記,讀者可以直接在瀏覽器中重現所有實驗。對於希望深入 GPU 程式設計但又不想被底層細節淹沒的工程師與研究者來說,TileLang 無疑是一個極具潛力的工具。
隨著 AI 模型對運算效率的要求不斷提升,這類高層次編譯框架將在最佳化基礎設施中扮演越來越重要的角色。
Related
相關文章

Meta 旗下 AI 模型測試時意外入侵第三方企業系統
Meta 在進行AI模型安全測試時,因第三方公司Irregular配置錯誤,導致模型意外入侵另一企業系統。涉事模型為Muse Spark 1.1,事件引發對AI模型可能衝出邊界、發動網絡攻擊的擔憂。

拆解“AI辦公入口戰”底層:怎麼做才能成為最終贏家?
字節、阿里、騰訊等大廠正透過組織調整與產品整合,全力爭奪AI辦公入口,關鍵在於模型、場景、生態與商業體系的全面競爭。這場戰爭的核心是透過AI產品實現Token經濟的商業閉環,並以「效果」為標準,透過自有體系與外部生態滿足企業用戶的真實需求。最終贏家需兼顧模型能力、場景積累與生態建設,才能在AI生產力時代站穩腳步。

千人聯機世界模型“RhOS-World: Khora”正式發佈
RhOS.ai與Ophilus.AI共同發布了千人聯機世界模型「RhOS-World: Khora」,該模型能讓多達1024個智能體在共享的3D空間中即時互動,且無需傳統物理引擎。其核心技術「STBoard(時空黑板)」架構,透過統一的物理狀態管理,解決了多視角一致性的難題,並大幅降低了擴展智能體數量的運算成本。
TutorMoments:AI 家教何時該出手,何時該放手?
今日我們推出 TutorMoments 預覽版,這是一個評估框架,旨在衡量尖端大型語言模型能否掌握教育中最難的平衡:何時介入協助學生,何時退後讓學生自行努力。TutorMoments 基於真實的一對一數學輔導課程,透過重播方式進行評估。經驗豐富的數學教師會檢視從美國收集的對話記錄。

告別反覆操作 OSD,華碩顯示器管理軟件 DisplayWidget Center 接入 AI 智能體
華碩顯示器管理軟體 DisplayWidget Center 推出重大更新,加入 AI 智能體功能,用戶可透過自然語言調整亮度、色溫等參數,無需操作 OSD。該功能支援 CLI 與 Agent Skill,可根據使用習慣自動切換模式,並適用於企業環境的統一部署。

千問App部分功能探索收費,想學豆包能跑通嗎?
千問App於8月7日更新,新增辦公助理等付費功能,基礎功能仍免費,但辦公場景使用額度需付費取得。此舉仿效豆包專業版等產品的訂閱模式,反映AI行業正集體轉向辦公場景收費,以尋求變現機會。