在AI大模型輪番刷屏的這兩年里,人們每次提到算力,都會(huì)首先想到英偉達(dá)顯卡,但是很多人卻不知道,想把英偉達(dá)的顯卡算力變成生產(chǎn)力,可不僅僅是把顯卡插進(jìn)主板然后啟動(dòng)那么簡(jiǎn)單。而是需要為其準(zhǔn)備一整套適配的軟件、算法,才能真正發(fā)揮出顯卡的性能,讓它幫你完成工作。
而CUDA就是英偉達(dá)為此準(zhǔn)備的一套軟件生態(tài),可以說(shuō)是英偉達(dá)真正的護(hù)城河。前段時(shí)間,CUDA迎來(lái)了13.1版本更新,該版本也被英偉達(dá)稱為自2006年CUDA發(fā)布以來(lái)最大規(guī)模的一次功能拓展。
![]()
圖源:英偉達(dá)
在此次更新中,英偉達(dá)推出了全新的CUDA Tile編程模型,并且提供了一整套的配套工具、文檔和調(diào)度特性。而在CUDA Tile更新后,不少著名半導(dǎo)體及AI從業(yè)者都表態(tài)點(diǎn)贊,認(rèn)為將改變整個(gè)行業(yè),估計(jì)有不少朋友就好奇了:一個(gè)編程模型的更新,為什么會(huì)影響整個(gè)AI行業(yè)?
CUDA Tile登場(chǎng),“模塊化”時(shí)代來(lái)了
如果只看“版本號(hào)+0.1”,很容易誤以為 CUDA 13.1 只是例行升級(jí),但翻完官方文檔和版本說(shuō)明后,小雷發(fā)現(xiàn)這次更新,幾乎是“從編程模型到資源管理再到工具鏈”的全鏈路升級(jí)。
先來(lái)說(shuō)說(shuō)此次更新的核心CUDA Tile,到底帶來(lái)了什么改變?簡(jiǎn)單來(lái)說(shuō),以前使用CUDA時(shí),要自己管理threadIdx、blockIdx等核心變量,而且還要手動(dòng)分配內(nèi)存使用參數(shù),然后再按SIMT模型進(jìn)行展開,做針對(duì)性的編程。
而CUDA Tile則是直接在算法層面把數(shù)據(jù)切成單獨(dú)的Tile(矩陣塊),開發(fā)者只需要針對(duì)矩陣塊的用途進(jìn)行編程即可,至于后續(xù)矩陣塊如何運(yùn)轉(zhuǎn)、是否需要調(diào)用 Tensor Core、TMA 等專用計(jì)算單元,就不需要開發(fā)者再去操心,由編譯器和運(yùn)行時(shí)系統(tǒng)在執(zhí)行階段自行決定。
![]()
圖源:英偉達(dá)
為了支撐這個(gè)新模型,英偉達(dá)在CUDA 13.1里引入了一個(gè)新的虛擬指令集CUDA Tile IR,并在上層給出了cuTile Python這個(gè)DSL。得益于這兩個(gè)新的開發(fā)工具,開發(fā)者可以直接用熟悉的Python寫tile kernel(矩陣塊內(nèi)核),再由Tile IR負(fù)責(zé)落到底層硬件。
其實(shí)類似的做法在計(jì)算行業(yè)里并不少見,華為的昇騰AI處理器開發(fā)中,“Tiling”(圖塊化編程)也是關(guān)鍵步驟,用于將算子的輸入數(shù)據(jù)分塊,以適應(yīng)NPU有限的片上內(nèi)存,阿里的ATB框架同樣采用了算子Tiling技術(shù)來(lái)優(yōu)化深度學(xué)習(xí)計(jì)算,可以說(shuō)核心思路都是為了降低開發(fā)及運(yùn)行的成本,并提高效率。
除了Tile,CUDA 13.1還優(yōu)化了不少基礎(chǔ)功能模塊,比如新的Green Contexts讓GPU的SM(核心計(jì)算單元)按實(shí)際運(yùn)行指令進(jìn)行資源分割,讓GPU可以優(yōu)先滿足低時(shí)延任務(wù)的資源需求,進(jìn)一步強(qiáng)化云服務(wù)器對(duì)在線服務(wù)等方面的支持。
此外,Multi-Process Service也得到了針對(duì)性的增強(qiáng),引入了MLOPart分區(qū)和靜態(tài)SM分區(qū)模式,讓多進(jìn)程共享GPU資源時(shí)能夠得到更準(zhǔn)確的資源劃分,對(duì)AI大模型這類混合負(fù)載為主的計(jì)算需求非常關(guān)鍵。
同時(shí),英偉達(dá)還對(duì)數(shù)學(xué)庫(kù)和工具鏈做了全面升級(jí),cuBLAS現(xiàn)在可以提供了基于Tensor Core的FP32/FP64仿真GEMM(用FP16/INT8等低精度計(jì)算拼湊出高精度結(jié)果),在Blackwell這類GPU上提供加速雙精度矩陣運(yùn)算支持,讓主流的Transformer、MoE等AI模型可以進(jìn)一步壓榨GPU性能。
![]()
可以說(shuō),CUDA 13.1幾乎從頭到尾都做了更新和升級(jí),以至于很多開發(fā)者都用:“一個(gè)新時(shí)代的到來(lái)”去形容此次更新。在這次版本更新后,手寫線程索引的時(shí)代算是結(jié)束了,甚至有人認(rèn)為這次更新的意義不亞于從匯編到Python,因?yàn)樗鼘UDA開發(fā)的門檻明顯拉低。
大家可以這么理解,以前編寫CUDA的庫(kù)和工具等玩意時(shí),等于要開發(fā)者從一根線纜開始把一臺(tái)汽車組裝起來(lái),雖然零件都是現(xiàn)成的,但是如果在拼裝過(guò)程中出現(xiàn)了一些小BUG,你就得在一籮筐的零件里找出有問(wèn)題的,然后再替換,費(fèi)時(shí)費(fèi)力不說(shuō)還對(duì)開發(fā)者的知識(shí)儲(chǔ)備有極高的要求。
而在CUDA 13.1之后,等于把汽車拆解成引擎、座椅、傳動(dòng)結(jié)構(gòu)、輪胎等完整的子系統(tǒng),你只需要決定這些系統(tǒng)的各自參數(shù)和功能,然后把它們拼在一起,就可以變成一個(gè)完整的程序運(yùn)行。
![]()
圖源:英偉達(dá)
對(duì)于AI行業(yè)來(lái)說(shuō),這也意味著想深度編譯CUDA程序,不再只能指望少數(shù)掌握了CUDA C++工程師,普通的開發(fā)者也可以通過(guò)閱讀英偉達(dá)提供的技術(shù)手冊(cè)來(lái)按部就班的部署。
而且,Tile IR本身就是一套虛擬指令集架構(gòu),相當(dāng)于在CUDA生態(tài)中再加入一個(gè)中間層,讓開發(fā)者不再需要面向底層硬件進(jìn)行開發(fā),只要后續(xù)英偉達(dá)在更新硬件時(shí)做好后端適配,應(yīng)用層就可以通過(guò)Tile IR直接適配新硬件,等于直接抹去了更換硬件所帶來(lái)的重新適配成本。
不過(guò)也有開發(fā)者對(duì)此表示擔(dān)憂,認(rèn)為一旦CUDA Tile的性能表現(xiàn)不如預(yù)期,那么想再進(jìn)行深度調(diào)試會(huì)麻煩,因?yàn)閷脮r(shí)開發(fā)者看到的都是一堆抽象的Tile運(yùn)算,無(wú)法像以前一樣直接觸及底層指令。
但是在小雷看來(lái),CUDA開發(fā)的簡(jiǎn)易化是不可阻擋的趨勢(shì),英偉達(dá)不可能還會(huì)走回頭路的。而且,CUDA 13.1并沒(méi)有剔除傳統(tǒng)SIMT開發(fā)工具,兩者其實(shí)是并存的,對(duì)于開發(fā)者來(lái)說(shuō)仍然可以用傳統(tǒng)方法來(lái)進(jìn)一步優(yōu)化程序。
CUDA 13.1的更新,就是給所有AI開發(fā)者遞上了新的“萬(wàn)用工具箱”,對(duì)于整個(gè)行業(yè)來(lái)說(shuō)都是重大的利好,也難怪有人認(rèn)為這是“新時(shí)代的到來(lái)”。
護(hù)城河or突破口?AI生態(tài)大戰(zhàn)即將到來(lái)
隨著CUDA 13.1的更新,針對(duì)AI生態(tài)的討論也再次引起了大家的關(guān)注,過(guò)去的AMD ROCm、Intel oneAPI也好,中國(guó)廠商的自研GPU也罷,很多都是在CUDA的基礎(chǔ)上,通過(guò)轉(zhuǎn)編譯來(lái)打造適配自家生態(tài)的版本。
或許有人覺(jué)得,這不就是抄襲嗎?確實(shí),不過(guò)也是無(wú)奈之舉,CUDA作為最成熟的AI生態(tài),擁有最廣泛的設(shè)備兼容性,其他生態(tài)想追趕,那就只能選擇“站在巨人的肩膀上”,才有可能成功,面對(duì)這種涉及到根本利益和未來(lái)話語(yǔ)權(quán)的爭(zhēng)奪,手段盡出才是王道。
![]()
圖源:英偉達(dá)
但是CUDA Tile的到來(lái),或許會(huì)讓這套適配體系變得更加困難,因?yàn)殚_發(fā)者一旦習(xí)慣用Tile IR+cuTile寫代碼,真正面對(duì)的接口就不再是具體線程、寄存器和block等工具,而是一整套Tile語(yǔ)義。
有開發(fā)者表示,想要兼容這套生態(tài)未來(lái)不僅要翻譯語(yǔ)法,還要重建一套理解tile運(yùn)算、映射到自家指令集和計(jì)算核心的編譯器,等于是被迫從“抄CUDA代碼”變成“抄 CUDA 編譯器”,難度和成本都翻倍。
不過(guò)也有人給出了不同的看法,傳奇芯片架構(gòu)師Jim Keller(蘋果A系列芯片、AMD Zen架構(gòu)、特斯拉FSD芯片的開發(fā)者)認(rèn)為CUDA Tile或許會(huì)加速CUDA的護(hù)城河消失。
看起來(lái)很匪夷所思,對(duì)吧?而Jim Keller的理由則是CUDA的優(yōu)勢(shì)是建立在其完善的庫(kù)和框架的基礎(chǔ)上,但是過(guò)高的上手門檻阻擋了大多數(shù)開發(fā)者。而CUDA Tile將讓Tiling將成為CUDA生態(tài)的主流,另一邊,業(yè)界的大多數(shù)主流AI生態(tài)其實(shí)早就轉(zhuǎn)向了Tiling。
換言之,Tiling是大家更熟悉的工具,只需要先解決好CUDA Tile代碼與其他Tiling 體系之間的互譯問(wèn)題,開發(fā)者就可以非常輕松地將CUDA軟件移植到其他AI芯片生態(tài)中,而不必再?gòu)牡讓咏Y(jié)構(gòu)開始重新梳理。
從這個(gè)角度來(lái)看,Jim Keller的觀點(diǎn)確實(shí)是有道理的,不過(guò)關(guān)鍵點(diǎn)就在于其他廠商是否愿意繼續(xù)跟隨英偉達(dá),打造一個(gè)適用于CUDA Tile的移植工具。其實(shí)國(guó)內(nèi)也有廠商在全盤復(fù)刻CUDA生態(tài),比如剛剛上市的摩爾線程,他們的MUSA生態(tài)的目標(biāo)就是在國(guó)產(chǎn)GPU上打造一個(gè)類似于CUDA的平臺(tái),讓同一套軟件能在圖形、計(jì)算、多媒體和AI等多個(gè)產(chǎn)品線上復(fù)用。
![]()
圖源:摩爾線程
為了解決生態(tài)問(wèn)題,摩爾線程打造了一套MUSA SDK,里面包括運(yùn)行時(shí)、編譯器、GPU 加速數(shù)學(xué)庫(kù)、神經(jīng)網(wǎng)絡(luò)庫(kù)和通信庫(kù),并提供MUSIFY這樣的遷移工具,允許開發(fā)者將CUDA代碼直接轉(zhuǎn)成MUSA版本,并且配備了一系列的專用庫(kù)來(lái)減少開發(fā)者切換生態(tài)的成本。
而在接下來(lái)的時(shí)間里,摩爾線程也需要考慮如何重建MUSA生態(tài)對(duì)CUDA生態(tài)的適配,并進(jìn)一步拓展其對(duì)國(guó)產(chǎn)芯片的適配性。如果摩爾線程可以整合好生態(tài),那么也可以更好承接CUDA生態(tài)的國(guó)產(chǎn)化,成為國(guó)產(chǎn)AI生態(tài)的基座之一。
當(dāng)然,要面對(duì)這個(gè)問(wèn)題的也不止摩爾線程,英特爾、AMD等其他芯片企業(yè)也是一樣的。不管怎樣,接下來(lái)幾年里,圍繞AI生態(tài)展開的博弈只會(huì)變得更加激烈。英偉達(dá)希望進(jìn)一步加深與AI行業(yè)的捆綁,而其他廠商則要在追趕CUDA生態(tài)的同時(shí)構(gòu)筑自己的護(hù)城河,一場(chǎng)沒(méi)有硝煙的戰(zhàn)爭(zhēng)已然到來(lái)。
雷科技2025“年度燈塔產(chǎn)品榜”評(píng)選啟動(dòng)!致敬堪稱“科技之光、時(shí)代大作”的科技產(chǎn)品,歡迎關(guān)注~
![]()
![]()
![]()
特別聲明:以上內(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.