2025 年 12 月,NVIDIA 推出 CUDA 13.1,此次更新被官方定位為“自 2006 年 CUDA 平台誕生以來最大、最全面的升級”。其核心亮點之一,是引入了新的程式設計模型 CUDA Tile。這個變化,有可能不僅僅是一項技術迭代,而是標誌著 GPU 程式設計範式邁入一個新的階段。
CUDA Tile 是一種基於 tile(瓦片、資料區塊)的 GPU 程式設計模型。與傳統的 SIMT(single-instruction, multiple-thread,多線程單指令流)方式不同,Tile 程式設計允許開發者將資料組織為tile (例如矩陣塊、張量塊、資料區塊),然後對這些 tile 進行操作,由編譯器和執行階段負責將它們對應到底層線程、記憶體佈局、專用硬體等資源。換句話說,開發者只需專注對塊做什麼計算,無需關心那個線程做那一部分、怎樣同步的問題。
為了支援 Tile,NVIDIA 在 CUDA 13.1 中引入了虛擬指令集 (Tile IR),並配套提供 cuTile。這是一個允許用高級語言編寫 tile-based kernel 的工具,通過 cuTile,開發者可以用熟悉的 Python 編寫 GPU kernel,從而極大降低 GPU 程式設計的門檻。
根據官方描述,Tile 程式設計並不是要取代 SIMT,而是作為一種並存或可選的程式設計路徑。也就是說,開發者根據需求,可以繼續使用傳統 SIMT,也可以在適合場景下使用 Tile。
CUDA 13.1 除了 Tile,還對執行階段(runtime)和工具鏈進行了升級,例如對 GPU 資源調度與管理機制進行了增強,使 GPU 的多工、並行、異構任務支援更靈活可靠。
官方同時對數學計算庫(如矩陣、張量庫)與底層支援的相容性進行了最佳化,以更好支援未來 GPU 特性(例如 tensor core、多級快取、異構資源分配等)。由此看來,這次更新不僅是對程式設計模型的改變,也為建構新一代高層、跨架構 GPU 的計算庫、框架和DSL 奠定了基礎。
綜合來看,CUDA 13.1 + CUDA Tile 的意義,不僅在於新增一個功能或對性能進行最佳化,而更在於為 GPU 程式設計提供了一個新的、更高層、更抽象、更便捷,且可維護和可移植的選項。
隨著 GPU 架構不斷演進,引入越來越多專用硬體(例如 tensor core、混合精度加速、多級快取與記憶體層次、異構資源、多流或多工支援等),底層硬體複雜度大幅增加。對開發者而言,手動管理線程、同步、記憶體佈局、調度、硬體相容性等負擔越來越重。傳統 SIMT 模型雖然靈活,但對高性能、可移植、可維護的要求而言,其複雜性和維護成本日益凸顯。
在這種背景下,Tile 程式設計所引入的高層抽象、由系統負責的資來源對應、調度、硬體利用,恰好切中了現實需求。對於AI、大規模矩陣、張量計算、科學計算、深度學習等領域,非常具有吸引力。NVIDIA 官方也明確指出,Tile 的設計初衷是為了幫助建立適用於當前和未來 GPU 的軟體。
借助 cuTile (Python DSL),許多過去因為不擅長 CUDA C、對底層 GPU 程式設計不熟悉的資料科學家、研究者,也可能開始編寫 GPU 加速程式碼。對於深度學習、科學計算、AI 團隊或高校研究機構來說,這意味著 GPU 加速不再只屬於少數 GPU 專家核心團隊,而可能被更多人使用。此外,對於那些需要跨 GPU 架構的團隊來說,一次編寫、多代相容的可能性,將大大降低重構、最佳化和維護的成本。
同時,Tile 提供了一條新的 GPU 程式設計路徑。這條路徑不僅對單個項目或團隊有利,也可能促使整個 GPU 軟體生態走向更高層、更抽象、更通用、更易維護和跨架構相容。這種變化對未來 GPU 程式設計規範化、標準化以及廣泛應用具有潛在推動力。這次更新可能不僅僅是一個版本號的提升,而是 GPU 程式設計範式的一次質變。
在技術社區中,CUDA 13.1 的發佈引發了截然不同的兩種情緒,而這恰恰印證了這次更新的變革性。
對於資深的高性能計算(HPC)工程師而言,反應是複雜的。一方面,他們習慣了對每一個暫存器、每一塊共用記憶體(Shared Memory)的精細控制,CUDA Tile 這種將細節交給編譯器的做法,不可避免地引發了關於性能上限的討論。正如在 Reddit 和 Hacker News 上一些硬核開發者所擔憂的:“我們是否正在用極致的性能換取開發的便利性?”
然而,對於更廣泛的資料科學家和 AI 演算法工程師群體,這無疑是一個好消息。長期以來,將 PyTorch 或 TensorFlow 中的高層邏輯轉化為高效的 CUDA 核心程式碼,是一道難以踰越的技術鴻溝。cuTile Python 的出現,實際上是在填平這道鴻溝。它意味著開發者不再需要精通 C++ 和電腦體系結構,僅憑 Python 就能觸達 GPU 80% 甚至 90% 的理論性能。這種性能平權可能會引爆新一輪的 AI 算子創新。當編寫一個高效的 Attention 變體不再需要兩周的 C++ 偵錯,而只需一下午的 Python 指令碼時,創新的飛輪將轉得更快。
在 CUDA 13.1 之前,競爭對手(如 AMD 的 ROCm 或 Intel 的 OneAPI)主要的追趕策略,是通過相容層(如 HIP)來轉譯現有的 CUDA 程式碼。這種策略主要基於 C++ 語法的相似性。
然而,CUDA Tile 的出現改變了這種競爭的維度。通過引入 Tile IR(虛擬指令集)和高層抽象,NVIDIA 實際上是在硬體和軟體之間增加了一個更厚的中間層。
當開發者開始習慣使用 Tile 程式設計模型,更多地關注資料區塊的邏輯而非底層線程調度,程式碼與底層硬體的解耦程度變得更高。這意味著,程式碼的執行效率將更多地依賴於編譯器如何理解和最佳化這些 Tile 操作。對於競爭對手而言,要支援這種新模式,僅僅做程式碼轉譯是不夠的,還需要建構一個同樣智能的編譯器來處理這些高層抽象,這無疑增加了技術對齊的難度,也客觀上提高了生態系統的粘性。
除了程式設計模型,CUDA 13.1 在執行階段環境上的改進,特別是 Green Contexts 從驅動層走向執行階段 API,反映了 GPU 使用場景的結構性變化。
在 Blackwell 架構時代,GPU 已經從單純的加速卡轉變為資料中心的核心算力單元。隨著單卡算力(如 B200 系列)的大幅提升,對於許多單一任務來說,獨佔整塊 GPU 往往是一種資源浪費。
Green Contexts 允許開發者或系統管理員在執行階段更安全、更細粒度地劃分 GPU 資源(SM)。這在技術上解決了多工平行時的干擾問題,使得 GPU 能夠像 CPU 一樣,高效、穩定地同時處理多個使用者的任務。對於雲服務商和企業內部的算力調度來說,這直接提升了昂貴硬體的利用率和投資回報率。
當然,這種向高層抽象的演進也並非沒有代價。CUDA Tile 帶來的最大挑戰在於偵錯與性能最佳化的透明度降低。
在傳統的 SIMT 模式下,開發者清楚地知道每一行程式碼對應什麼指令,資料在暫存器和記憶體間如何移動。而在 Tile 模式下,編譯器接管了大量的資料佈局和對應工作。一旦性能不如預期,或者出現非功能性 Bug,開發者可能會發現很難像以前一樣精準定位問題。
雖然 NVIDIA 在 Nsight 工具鏈中增加了對 Tile 的支援,但如何讓開發者理解編譯器的最佳化邏輯,而不是面對一個無法干預的“黑盒”,將是這一新模式能否被資深開發者廣泛接受的關鍵。此外,這也意味著軟體性能將更加依賴於 NVIDIA 編譯器團隊的最佳化水平,而非開發者個人的微調能力。
CUDA 13.1 的發佈,本質上是 NVIDIA 應對硬體複雜度爆發的解決方案。通過 CUDA Tile,NVIDIA 試圖建立一種新的分工模式:開發者專注於高層的演算法邏輯與資料流,而將複雜的硬體適配工作交給編譯器和執行階段環境。
這不僅降低了高性能計算的門檻,也讓 CUDA 平台在異構計算和雲原生時代,具備了更強的適應性和生態掌控力。對於開發者而言,這或許意味著是時候調整思維習慣,從微觀的線程管理,轉向宏觀的資料區塊編排了。 (問芯)