

編譯 | 核子可樂、Tina
多年以來,英偉達為 GPU 開發的 CUDA 軟體工具包始終缺少原生 Python 支援,現如今這種情況終於有所轉變。在近期的 GTC 大會上,英偉達宣佈其 CUDA 工具包將為 Python 提供原生支援並全面與之整合。也就是說,開發人員能夠使用 Python 直接在 GPU 上執行演算法式計算。
據悉,2025 年被英偉達視為“CUDA Python 元年”,這一觀點已經在公司內部達成共識,併成為 GTC 大會的核心主題之一。這次釋出標誌著 Python 在整個生態系統中的地位進一步提升,而英偉達也在這一領域投入了大量資源。
對於程式設計師們來說,此舉無疑影響巨大。儘管 CUDA 最初是基於 C 和 C++ 開發的,但如今程式設計師們無需掌握這些程式語言,也能使用該工具包進行開發。
過去,尤其是早期,甚至直到一兩年前,英偉達主要依賴 C 和 C++ 這類面向系統程式設計的底層語言作為其主要的程式設計介面。開發者們通常需要在此基礎上構建 Python 庫,實現更高級別的應用。
事實上,許多開發者已經構建了這樣的 Python 庫,例如廣受歡迎的 PyTorch。它作為一個強大的 Python 介面,底層連線著高效能的 C++ 程式碼(用於 CPU)和 CUDA C++ 程式碼(用於 GPU)。這些庫的廣泛應用,甚至在某些方面超越了英偉達自家提供的解決方案,贏得了更多的關注。
還有 OpenAI 的 Triton 等專案,它允許開發者用 Python 編寫程式碼——其實是一種特定風格或子語言(domain-specific language),然後透過編譯器把這些 Python 風格程式碼轉化為 GPU 可執行的內容。

在去年 GTC 大會上,CUDA 架構師 Stephen Jones 指出,“在過去幾年中,我非常關注 Python。當我審視 Python 開發者的生態時,我發現我的上層使用者規模會呈現出爆炸式增長。我的核心使用者不再是一百萬,而是一千萬級別。因此,這意味著,底層的改進,都將透過 Python 生態系統,在上層使用者群體中產生更為廣泛而深遠的影響。”
同時,Jones 也特別關注了 Triton 專案,“Triton 提供了一種全新的方式,讓開發者能夠使用 Python 編寫自定義的 GPU 核心。其語法類似於 NumPy 函式,但底層卻能生成高度最佳化的 CUDA 核心。該專案充分利用了英偉達的編譯器技術和底層最佳化工具鏈。”
因此,英偉達認為,為了充分發揮 Python 在 GPU 計算中的潛力,必須在技術棧的各個層面進行投入。他們的整體願景,也是 CUDA 團隊的願景,是為 Python 開發者提供完整的 NVIDIA 體驗,即讓整個 CUDA 生態系統都能透過 Python 程式語言進行訪問和使用。
這是一個生態擴充套件的過程。NVIDIA 並不是放棄 C++,而是在擴大整個開發者圈層,尤其是對 Python 社群的支援上,他們正在顯著加碼。
在今年的 GTC 大會上,Stephen Jones 強調,Python 中的 CUDA 應該保持 Python 的自然風格,讓程式設計師們可以使用自然的 Python 介面和指令碼模型,輕鬆建立執行在英偉達 GPU 上的 AI 程式。Jones 還指出,Python CUDA 絕不僅僅是將 C 程式碼轉換為 Python 語法。它必須要讓 Python 開發者們感到自然且親切。
今年英偉達對 Python 的投入和介面更新,不只是開發體驗上的改善,更是 NVIDIA 在構建一個更加開放、多層次開發者生態系統方面的又一次進化。
例如,CuTile 是一個比傳統 CUDA 更高層級的抽象(目前還沒有正式釋出),雖然底層仍依賴部分 C++ 實現,但開發者所接觸的介面已完全是 Python。這意味著,開發者無需直接接觸 C++,即可利用這些介面進行開發。

另一個例子是新的 Python 介面版本的 Cutlass。Cutlass 原本是一個專注於 GPU 高效能矩陣運算的 C++ 庫。而現在英偉達推出了一個全新的 Python 介面版本,完全不需要寫 C++。開發者可以直接在 Python 裡構建運算元,甚至進行一些低級別的最佳化,同時保留原有效能。

可以把它理解為英偉達正在打造一個金字塔:最底層是核心的 CUDA C++,適合極致效能的系統開發者;中間層是像 Triton 或 Python Cutlass 這種面向專業開發者的高效能 Python 介面;而頂層則是 PyTorch、這樣更面向 AI 構建者和產品工程師的抽象層。
這種分層的方式非常重要,開發者可以先利用頂層工具快速進行原型設計,當需要更高的效能或更強的定製能力時,再逐步深入到更底層的介面,覆蓋了不同層級的開發者。從某種意義上說,這是一種“民主化”GPU 程式設計的過程。它讓那些熟悉 Python、但不一定懂底層系統程式設計的人,也能參與進來,從而加速整個生態的發展。
佈道師 Charles Frye 認為,“這對 AI 開發者、研究者,甚至初創公司來說都是一個巨大利好。你不需要一個專門的 CUDA 工程師團隊才能充分發揮 GPU 的效能。你可以用熟悉的工具,用更快的速度迭代、調優和部署你的模型或應用。”
“總的來說,我覺得這次 GTC 上 Cutlass 4 和相關 Python 介面的釋出,標誌著一個真正的轉折點——從‘GPU 程式設計是專家遊戲’,到‘人人都可以上手’的轉變正在加速進行中。”
而且,據 The New Stack 報道,英偉達在將 Python 提升為 CUDA 並行程式設計框架核心語言的同時,也在積極招募程式設計師,以期在專案中支援包括 Rust 和 Julia 在內的更多程式語言。
CUDA 專案涵蓋庫、SDK、編譯器、主機執行時、工具以及預打包的軟體和演算法。英偉達已經將部分元件新增至整個 Python 式 CUDA 技術棧內。
英偉達的關注重點,是在無需脫離 Python 環境的前提下實現 GPU 加速。Jones 解釋道,CUDA Python 不能只是核心產品,而需要在整個技術棧內匹配完整且流暢的執行流程。
Jones 強調,“除了編寫核心並將其納入 PyTorch 之外,我們還必須能夠呼叫 Python 庫及所有其他元件。”
實際上,由於專案是圍繞即時(JIT)編譯構建而成,因此不存在編譯器層,從而大大減少了技術棧 GPU 樹中的依賴項數量。
Jones 表示,“保持所有各層之間的互操作性,將極大提高生產力並實現對 Python 的端到端使用。”
最初,英偉達先是構建了基礎 Python 繫結(其中包括執行時編譯器)與 cuPyNumeric(Python 中使用最就我 計算庫 NumPy 的替代方案)等 Python 庫。cuPyNumeric 僅變更了一條匯入指令,即可將 NumPy 程式碼從 CPU 上執行轉變為 GPU 上執行。
去年,英偉達構建了 CUDA Core,Jones 稱其是“對 CUDA 執行時的 Python 式重構,確保其自然而然實現 Python 原生化。”
CUDA Core 提供 Python 執行流程,且高度依賴於 JIT 即時編譯。
Jones 強調,“我們要做的不是放棄命令列編譯器之類的要素,而是將一切融入到流程當中”,並補充稱這大大減少了技術棧 GPU 樹中的依賴項數量。
英偉達還開發了一套名為 NVMath Python 的庫,其具備用於主機端和裝置端庫呼叫的統一介面。Jones 指出,這種將庫呼叫加以融合的設計帶來了巨大的效能提升。
該公司還構建了能夠直接透過 Python 程式碼訪問加速 C++ 庫的多個新庫。

Jones 解釋道,“由於新成果建立在我們多年積累的底層基礎架構之上……因此我們並不需要用 Python 做重新實現。只需要確保將其連結到經過微調的 C++ 底層程式碼,因此產生的效能影響幾乎可以忽略不計。”
英偉達還添加了用於分析器和程式碼分析器的工具。
Python 大大降低了編碼難度,確保程式設計師不必分心於底層硬體。為了更好地達成這個目標,英偉達決定新增一個在 GPU 上執行,且與更高級別抽象相一致的編碼層。這套程式設計模型就是 CuTile,最初為 Python 式 CUDA 開發,隨後又針對 C++ CUDA 提供了擴充套件。

CuTile“從本質上來講更契合 Python 特性”,因為如今 Python 程式設計師更多關注陣列而非執行緒(關注執行緒更接近 C++ 的特性)。開發人員不可能像變魔術一樣直接把 Python 程式碼匯出到 GPU 上,來直接獲得加速效能。CUDA 需要先將問題拆分成成千上萬個較小的塊,然後在 GPU 上分別做處理。這些塊被拆分成更小的 tiles,由其執行起成千上萬個執行緒以實現單一元素處理。各執行緒組合起來,就形成了一項操作。
這種並行處理執行緒級單一元素的能力,賦予了 GPU 強大的計算效能。
但英偉達認為 GPU 執行不該始終侷限於執行緒級別。相反,處理也可以在 tiles 層級上實現中途完成,這也是 CuTile 程式設計模型的意義所在。
CuTile 能夠高效將陣列對映至相對不太細粒度的 GPU 上,使得程式碼更易於理解和除錯。Jones 表示,“重要的是,在根本上繼續保持相同的效能。”
Tiles 中的資料可以構造為向量、張量或者陣列,而編譯器則能夠更好地將整個陣列操作從執行緒塊對映至 GPU。
Jones 解釋道,“編譯器通常比程式設計師們做得更好,因為它能深刻理解開發者在做什麼……而且熟悉 GPU 的執行細節。”
不同於 C++,Python 在設計上並不強調細粒度。
Jones 在總結時再次稱讚了 OpenAI 的專案,“目前有很多相關成果,OpenAI Triton 就是個典型用例。我認為這些專案都特別契合 Python 程式。“
參考連結:
https://www.youtube.com/watch?v=Ml5lAtCSHxY
https://thenewstack.io/nvidia-finally-adds-native-python-support-to-cuda/
https://www.youtube.com/watch?v=pC0SIzZGFS
chttps://x.com/blelbach/status/1902113767066103949/photo/3
宣告:本文為 InfoQ 整理,不代表平臺觀點,未經許可禁止轉載。
今日好文推薦
本次大會將匯聚頂尖技術專家、創新實踐者,共同探討多行業 AI 落地應用,分享一手實踐經驗,深度參與 DeepSeek 主題圓桌,洞見未來趨勢。
