近日,英偉達推出 CUDA 13.1。官方稱這是 CUDA 平臺自二十年前發明以來規模最大、最全面的更新。更新功能包括 NVIDIA CUDA Tile 的發布、運行時 API 公開綠色上下文、NVIDIA cuBLAS 中的雙精度和單精度仿真等。
僅在 CUDA 13.1 上線兩天前,英偉達推出一款基于 tile 的編程模型—— CUDA Tile。官方宣稱,這是 CUDA 平臺自 2006 年創立以來最大的進步。
模型將專注于以更高層次編寫算法,并抽象化專用硬件(例如張量核心)的細節。
CUDA 為開發者提供了一種單指令多線程 (SIMT) 硬件和編程模型,使開發者能夠以最大的靈活性和精確性對代碼的執行方式進行細粒度控制。
張量已成為一種基礎數據類型。NVIDIA 開發了專門用于處理張量的硬件,但需要更多軟件來輔助發揮這些功能。CUDA Tile 提煉了張量核心及其編程模型,從而使 CUDA Tile 的代碼能夠兼容當前和未來的張量核心架構。
CUDA Tile IR:Tile 編程的基礎
CUDA Tile 的基礎是 CUDA Tile IR。CUDA Tile IR 引入了一套虛擬指令集,使得開發者能夠以 tile 操作的形式對硬件進行原生編程,后可在多代 GPU 上高效執行。
開發者只需將數據并行程序劃分為 tile 和 tile 塊,CUDA Tile IR 便會負責將這些塊映射到硬件資源,例如線程、內存層次結構和張量核心。
通過提升提取的層次,CUDA Tile IR 使用戶能夠為 NVIDIA 硬件構建更高級別的硬件專用編譯器、框架和領域特定語言 (DSL)。
值得注意的是,SIMT 和分塊編程可以共存。使用 SIMT 的同時可以像往常一樣編寫內核。當使用張量核心時,需要編寫分塊內核。大多數開發者會通過 NVIDIA cuTile Python 等軟件與 CUDA 瓦片編程進行交互。
對于希望構建自己的 DSL 編譯器或庫的開發者來說,CUDA Tile IR 是與 CUDA Tile 進行交互的接口。CUDA Tile IR 的文檔和規范包含了有關 CUDA Tile IR 編程抽象、語法和語義的信息。
CUDA 軟件和服務更新
公開綠色上下文
綠色上下文允許用戶定義和管理不同的 GPU 資源分區,主要是流式多處理器 (SM),并將一組特定的 SM 分配給特定的上下文。
當應用程序包含對延遲敏感且優先級高于所有其他 GPU 工作的代碼時,通過將 SM 資源分配給專用的綠色上下文來處理此代碼,并將其余資源分配給另一個綠色上下文來處理其他代碼,可以確保有可用的 SM 隨時準備進行此計算。
內存局部性優化分區
內存局部性優化分區 (MLOPart) 是 NVIDIA Blackwell 及更新 GPU 的一項功能。MLOPart 設備源自單個底層 GPU,但以多個設備的形式呈現,每個設備擁有更少的計算資源和更少的可用內存。
靜態流式多處理器分區
靜態流式多處理器 (SM) 分區提供了一種為 MPS 客戶端創建專屬 SM 分區的方法,其主要目的是實現確定性的資源分配并提高 MPS 客戶端之間的隔離度。
cuBLAS 中雙精度和單精度仿真
NVIDIA CUDA Toolkit 13.0 中的 cuBLAS 更新引入了新的 API 和實現,用于提升雙精度 (FP64) 矩陣乘法 (matmuls) 的性能。
參考資料:
https://developer.nvidia.com/blog/focus-on-your-algorithm-nvidia-cuda-tile-handles-the-hardware
https://x.com/NVIDIAAIDev/status/1996976702732620271
https://developer.nvidia.com/blog/nvidia-cuda-13-1-powers-next-gen-gpu-programming-with-nvidia-cuda-tile-and-performance-gains?ncid=so-twit-259531