新聞中心

NVIDIA CCCL Runtime 發佈:以現代 C++ 方式重構 CUDA 基礎編程接口 NEWS DETAIL

當前位置:首頁 > 新聞中心
資訊分類 · 新聞中心 發佈時間 · 2026-07-16

NVIDIA 近日介紹了 CCCL Runtime,這是一組面向 CUDA 基礎編程模型的新型現代 C++ API,已從 CUDA 13.2 開始提供。它的目標不是取代開發者熟悉的 CUDA 能力本身,而是以更符合現代 C++ 習慣的方式,重新組織流管理、內存分配、內核啓動等核心接口,讓 CUDA 開發在複雜專案中更安全、更清晰,也更便於組合使用。

文章指出,傳統 CUDA Runtime 最初是對底層 Driver API 的一層便捷封裝,而 CCCL Runtime 則是在吸收多年 CUDA 演進經驗後,嘗試提供另一種更現代的表達方式。它採用了更強的類型系統和更顯式的依賴傳遞方式,例如設備使用 `device_ref`、流使用 `stream` 對象,而不是依賴隱式全局狀態。這樣做的好處是,開發者無需追蹤「當前設備」之類的上下文,也能在局部代碼中直接看清資源歸屬和調用關係。

在內存管理方面,CCCL Runtime 默認更強調異步與流有序語義。通過 `make_buffer` 等接口,開發者可以在指定 stream 和 memory pool 上完成分配、初始化和釋放,並讓緩衝區生命週期與 GPU 執行順序更自然地綁定。NVIDIA 認為,這種以內存池和異步分配為默認思路的做法,更符合現代高性能 CUDA 程序的實際需求,也有助於減少同步點和難以排查的未初始化內存問題。

在內核啓動層,CCCL Runtime 通過 `cuda::launch` 與更清晰的配置對象,把線程層級、啓動參數和 kernel 參數組織得更明確。一個重要變化是,它可以把編譯期配置資訊通過類型系統傳遞到設備端,使 kernel 在實現時能更直接利用這些靜態資訊。例如 block 大小等約束可以在編譯期被感知和驗證,從而讓部分計算更高效,也讓調用端和 kernel 實現之間的約定更加可靠。

文章還特別提到,CCCL Runtime 支援以 kernel functor 形式來定義設備端調用邏輯,而不僅僅局限於傳統的 `__global__` 函數。這種設計有利於模板參數推導,也更契合現代 C++ 風格。同時,CCCL Runtime 也沒有要求開發者一次性重寫所有既有代碼,而是提供與傳統 CUDA Runtime 的相容輔助能力,方便團隊在大型工程中按需逐步遷移。

對 CUDA 開發者而言,CCCL Runtime 的意義不只是「寫法更現代」,更在於當設備、流、內存池和多個庫之間的關係日益複雜時,一套顯式依賴、強類型、默認異步且相容舊代碼的接口設計,可以顯著提升可維護性和協作效率。隨著 CUDA Toolkit 繼續演進,這類基礎抽象層的升級,也可能成為未來 GPU 軟體工程體驗改善的重要方向。