![]()
新智元報(bào)道
編輯:定慧
【新智元導(dǎo)讀】一文看懂CUDA Tile背后的算盤與野心。
英偉達(dá)的CUDA,剛剛宣布了該平臺(tái)誕生20年來最重大的一次更新!
![]()
其中,最核心也是最顛覆性的更新的就是CUDATile,讓開發(fā)者可以用Python代替C++寫內(nèi)核代碼。
在CUDA 13.1版本中,他們引入了一種叫做CUDA Tile的技術(shù)——一種全新的顯卡代碼編寫方式,讓整個(gè)過程更省事,更具未來適應(yīng)性。
旨在通過抽象化底層硬件(如Tensor Cores)細(xì)節(jié),降低開發(fā)門檻。可以把它想象成從手動(dòng)調(diào)樂團(tuán)中的每件樂器,轉(zhuǎn)變?yōu)閱渭冎笓]音樂。
![]()
這一重磅更新迅速引來了芯片界傳奇人物、Tenstorrent CEOJim Keller的關(guān)注與質(zhì)疑:
Jim Keller提出一個(gè)觀點(diǎn):這次更新是否終結(jié)了CUDA的「護(hù)城河」?
![]()
他的理由是當(dāng)英偉達(dá)的GPU也轉(zhuǎn)向Tile瓦片結(jié)構(gòu),而其他硬件廠商一樣轉(zhuǎn)向瓦片架構(gòu),AI內(nèi)核將更容易移植。
![]()
但事實(shí)真是如此嗎?
要想討論清楚這件事,需要分析兩個(gè)問題:
1. Jim Keller是誰?為什么他的話有分量
2. CUDA Tile此前是什么技術(shù)?CUDA護(hù)城河到底是什么
Jim Keller是當(dāng)代芯片界最有代表性的CPU/SoC架構(gòu)師之一,業(yè)內(nèi)很多人直接叫他「傳奇架構(gòu)師」、「芯片圈GOAT之一」。
一句話,他是那種真正改寫過CPU發(fā)展路線圖的人。
凡是近二十多年x86、移動(dòng)SoC、AI芯片的幾次大級(jí)別翻身仗,背后大概率能看到Jim Keller的影子。
![]()
更細(xì)一點(diǎn)說:
- x86-64時(shí)代的奠基人之一:
作為x86-64指令集和HyperTransport的共同作者,他直接影響了今天幾乎所有桌面、服務(wù)器CPU的ISA與互連方式。
- 多次帶隊(duì)完成「公司級(jí)」翻身戰(zhàn):
AMD Athlon/K8時(shí)代第一次讓AMD在x86性能上正面硬剛Intel。Zen重新讓AMD從「快死了」變成今天和Intel分庭抗禮。在Apple時(shí)期的A4/A5開啟了iPhone自研SoC的路線,間接鋪路到后面的M系列。
- CPU、手機(jī)SoC、自動(dòng)駕駛AI加速器的「全棧」架構(gòu)師:
很少有人像他一樣,在通用CPU、移動(dòng)SoC、車載SoC、AI加速器上都做過一線設(shè)計(jì)和架構(gòu)決策。近幾年他頻繁在TSMC、三星等論壇談未來工藝與架構(gòu),被稱為「半導(dǎo)體設(shè)計(jì)傳奇」。
所以Jim Keller的觀點(diǎn)非常有參考性意義。
英偉達(dá)是否通過這次更新拆除了CUDA的「護(hù)城河」,還是以另一種形式將其加固?
去年,Jim Keller曾直言「CUDA是沼澤而非護(hù)城河」。
意思是CUDA的復(fù)雜性讓開發(fā)者深陷其中無法脫身。
![]()
讓我們簡(jiǎn)單回顧下CUDA的歷史。
而此次CUDA Tile之前,早在2006年,英偉達(dá)發(fā)布了G80架構(gòu)和CUDA,CUDA的出現(xiàn)將這些并行的計(jì)算單元抽象為通用的線程(Threads),從而開啟了通用GPU計(jì)算(GPGPU)的黃金時(shí)代。
![]()
二十年來,基于「單指令多線程」(SIMT,Single Instruction,Multiple Threads)的編程模型一直是GPU計(jì)算的「圣經(jīng)」。
開發(fā)者習(xí)慣了從單個(gè)線程的視角出發(fā),思考如何將成千上萬個(gè)線程映射到數(shù)據(jù)上。
在人工智能大爆發(fā)的今天,計(jì)算的核心原子不再是單一的標(biāo)量數(shù)值,而是張量(Tensor)和矩陣。
傳統(tǒng)的SIMT模型在處理這種塊狀數(shù)據(jù)時(shí),顯得日益笨重且效率低下。
技術(shù)的重構(gòu)
CUDA Tile與SIMT的范式斷裂
要理解CUDA Tile更新了什么,首先必須理解為什么舊方式行不通了。
SIMT模型的核心假設(shè)是:程序員編寫一段串行代碼(Kernel),GPU硬件負(fù)責(zé)將這段代碼實(shí)例化為成千上萬個(gè)線程。
粗暴一點(diǎn)理解:
想象一個(gè)包工頭(GPU的控制單元)和32個(gè)搬磚工(線程,Thread)。比如要把一張圖變亮,包工頭只要一個(gè)命令,每個(gè)工人負(fù)責(zé)一個(gè)像素點(diǎn),大家互不干擾,動(dòng)作整齊劃一。
這就是SIMT的精髓:雖然人多,但聽同一個(gè)指令,處理各自的小數(shù)據(jù)。
這種模型在處理圖像像素或簡(jiǎn)單的科學(xué)計(jì)算時(shí)非常完美,因?yàn)槊總€(gè)像素的計(jì)算是獨(dú)立的。
然而,現(xiàn)代AI計(jì)算的核心是矩陣乘法。
AI運(yùn)算(深度學(xué)習(xí))的核心不再是處理單個(gè)像素,而是矩陣乘法。
![]()
在硬件層面,英偉達(dá)引入了Tensor Core(張量核心)來加速矩陣運(yùn)算。
Tensor Core不是一次處理一個(gè)數(shù),而是一次處理一個(gè)16x16或更大的矩陣塊。
為了用 SIMT 模型去開動(dòng)Tensor Core,程序員不得不同時(shí)指揮多個(gè)線程。
在SIMT中,程序員仍在控制單個(gè)線程。為了使用Tensor Core,程序員必須指揮32個(gè)線程(一個(gè)Warp)協(xié)同工作,手動(dòng)將數(shù)據(jù)從全局內(nèi)存搬運(yùn)到共享內(nèi)存,再加載到寄存器,通過復(fù)雜的wmma(Warp-level Matrix Multiply Accumulate)指令進(jìn)行同步。
開發(fā)者必須精細(xì)地管理線程間的同步和內(nèi)存屏障。稍有不慎,就會(huì)導(dǎo)致死鎖或數(shù)據(jù)競(jìng)爭(zhēng)。
不同代際的GPU其Warp調(diào)度機(jī)制和Tensor Core指令集均有不同。
針對(duì)Hopper架構(gòu)優(yōu)化的極致性能代碼,往往無法在Blackwell上直接運(yùn)行,需要重新調(diào)優(yōu)。
這就是Jim Keller所說的「沼澤」——代碼里堆積了針對(duì)不同硬件特性的補(bǔ)丁,既不美觀也難以維護(hù)。
![]()
這就是「SIMT力不從心」的原因:試圖用管理獨(dú)立個(gè)體的邏輯(SIMT),去指揮一個(gè)需要高度協(xié)同的集體動(dòng)作(Tensor Core)
CUDA Tile:瓦片化計(jì)算的誕生
CUDA 13.1引入的CUDA Tile徹底拋棄了「線程」這一基本原子,轉(zhuǎn)而以「瓦片」(Tile)作為編程的核心單位。
核心概念:什么是Tile?
在CUDA Tile模型中,Tile被定義為多維數(shù)組的一個(gè)分塊(Subset of arrays)。
開發(fā)者不再思考「第X號(hào)線程執(zhí)行什么操作」,而是思考「如何將大矩陣切分成小塊(Tiles),以及對(duì)這些塊進(jìn)行什么數(shù)學(xué)運(yùn)算(如加法、乘法)」。
瓦片模型(左)將數(shù)據(jù)分割為塊,編譯器將其映射到線程。SIMT模型(右)將數(shù)據(jù)同時(shí)映射到塊和線程。
![]()
這種轉(zhuǎn)變類似于從匯編語言跳轉(zhuǎn)到了高級(jí)語言:
- SIMT:手動(dòng)管理寄存器分配、線程掩碼、內(nèi)存合并。
- Tile:聲明數(shù)據(jù)塊形狀(Layout),聲明算子(Operator),編譯器負(fù)責(zé)一切。
這種編程范式在Python等語言中很常見,像NumPy這樣的庫(kù)允許指定矩陣等數(shù)據(jù)類型,然后用簡(jiǎn)單的代碼指定并執(zhí)行批量操作。
![]()
在底層,正確的操作會(huì)自動(dòng)執(zhí)行,計(jì)算過程完全透明地繼續(xù)進(jìn)行。
架構(gòu)支撐:CUDA Tile IR
這次更新不僅僅是語法糖,英偉達(dá)引入了一套全新的中間表示——CUDATile IR(Intermediate Representation)。
CUDA Tile IR引入了一套虛擬指令集,使得開發(fā)者能夠以瓦片操作的形式對(duì)硬件進(jìn)行原生編程。
![]()
開發(fā)者可以編寫更高層級(jí)的代碼,這些代碼只需極少改動(dòng)即可在多個(gè)世代的GPU上高效執(zhí)行。
通過這種對(duì)比可以看出,CUDA Tile實(shí)際上是英偉達(dá)對(duì)AI編程范式的一次「降維打擊」——將復(fù)雜的硬件細(xì)節(jié)封裝在編譯器內(nèi)部,只暴露算法邏輯。
![]()
在過去的CUDA版本中,C++始終是一等公民。
然而在CUDA 13.1中,英偉達(dá)極其罕見地首發(fā)推出了cuTile Python,而C++支持則被延后。
這一策略轉(zhuǎn)變深刻反映了AI開發(fā)生態(tài)的現(xiàn)狀:Python已經(jīng)成為AI的通用語言。
在此之前,AI研究員如果想優(yōu)化一個(gè)算子,不得不離開Python環(huán)境,學(xué)習(xí)復(fù)雜的C++和CUDA。
cuTile的出現(xiàn)旨在讓開發(fā)者留在Python環(huán)境中即可編寫高性能Kernel。
根據(jù)英偉達(dá)的技術(shù)博客,我們可以通過一個(gè)向量加法的例子來感受cuTile的變革。
傳統(tǒng)SIMT方式(偽代碼概念):
![]()
cuTile Python方式:
![]()
在這個(gè)例子中,開發(fā)者不需要知道GPU有多少個(gè)核心,也不需要知道Warp是什么。
ct.load和ct.store在底層可能會(huì)調(diào)用Blackwell架構(gòu)最新的異步內(nèi)存復(fù)制引擎,但這對(duì)開發(fā)者是透明的。
CUDA Tile對(duì)抗的是誰?
要回答「是否終結(jié)了護(hù)城河」,必須引入另一個(gè)變量:OpenAI Triton。
Triton是OpenAI為了擺脫對(duì)英偉達(dá)閉源庫(kù)(如cuDNN)的依賴而開發(fā)的開源語言。
Triton的核心理念與CUDA Tile驚人的一致:基于塊(Block-based)的編程。
![]()
這或許是CUDA此次更新的最大針對(duì)者。
![]()
分析了這么多,英偉達(dá)此次更新是否終結(jié)了CUDA的護(hù)城河,轉(zhuǎn)向瓦片架構(gòu)是否使AI內(nèi)核更易移植?
在社區(qū)中,更多的聲音指向如下結(jié)論。
![]()
英偉達(dá)代際間的移植性:這是CUDA Tile主要解決的問題。
從Hopper移植到Blackwell,甚至未來的Rubin,使用TileIR編寫的代碼將無縫運(yùn)行且自動(dòng)優(yōu)化。
這一點(diǎn)上,移植性極大增強(qiáng)。
跨廠商的移植性:這是行業(yè)希望解決的問題(比如從英偉達(dá)移植到AMD MI300)。
這一點(diǎn)上,CUDATile幾乎沒有任何幫助,甚至讓移植變得更難。
![]()
Jim Keller本人一點(diǎn)不喜歡CUDA,稱CUDA為「沼澤」,意指其復(fù)雜性讓開發(fā)者深陷其中無法脫身。
綜上所述,英偉達(dá)并沒有拆除護(hù)城河,而是將護(hù)城河的墻修得更漂亮、更易于攀爬(進(jìn)入),但在墻內(nèi)構(gòu)建了更舒適的迷宮(Tile IR生態(tài)),使得用戶更不愿意離開。
瓦片架構(gòu)使AI內(nèi)核在英偉達(dá)硬件之間極易移植,但在不同廠商硬件之間更難移植。
Jim Keller也許是對(duì)的,CUDA曾經(jīng)是沼澤。
但英偉達(dá)剛剛在沼澤上鋪設(shè)了一條高速公路(CUDA Tile IR)。
而這條路,目前只通向英偉達(dá)的城堡。
參考資料:
https://x.com/jimkxa/status/1997732089480024498
https://developer.nvidia.com/blog/focus-on-your-algorithm-nvidia-cuda-tile-handles-the-hardware/
https://developer.nvidia.com/blog/nvidia-cuda-13-1-powers-next-gen-gpu-programming-with-nvidia-cuda-tile-and-performance-gains
https://developer.nvidia.com/blog/simplify-gpu-programming-with-nvidia-cuda-tile-in-python
https://www.tomshardware.com/tech-industry/artificial-intelligence/jim-keller-criticizes-nvidias-cuda-and-x86-cudas-a-swamp-not-a-moat-x86-was-a-swamp-too
秒追ASI
?點(diǎn)贊、轉(zhuǎn)發(fā)、在看一鍵三連?
點(diǎn)亮星標(biāo),鎖定新智元極速推送!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.