近日,摩爾線(xiàn)程在北京發(fā)布多款軟硬件新品,包括新一代GPU“春曉”、面向個(gè)人電腦的消費(fèi)級(jí)顯卡MTT S80和服務(wù)器計(jì)算卡MTT S3000、一體化計(jì)算設(shè)備“MCCX元計(jì)算一體機(jī)”,以及開(kāi)發(fā)套件、數(shù)字人解決方案等。GPU“春曉”做為本次發(fā)布會(huì)的核心產(chǎn)品受到廣泛關(guān)注。
?
摩爾線(xiàn)程“春曉”GPU ?圖源:摩爾線(xiàn)程
“春曉”是摩爾線(xiàn)程的第二顆GPU,也是摩爾線(xiàn)程首顆面相國(guó)內(nèi)消費(fèi)級(jí)市場(chǎng)發(fā)售的GPU,它強(qiáng)調(diào)游戲、元宇宙與渲染用途,最重要的是,這顆GPU支持英偉達(dá)CUDA生態(tài)。
其實(shí)經(jīng)常關(guān)注顯卡的同學(xué)總能從英偉達(dá)的發(fā)布會(huì)上聽(tīng)到CUDA這個(gè)詞,例如最新的RTX3060有擁有多少顆CUDA核心,某某游戲首發(fā)即支持CUDA生態(tài)等。作為顯卡領(lǐng)域的高頻詞匯,很多人好奇CUDA到底是什么?為什么國(guó)產(chǎn)顯卡會(huì)用到英偉達(dá)的技術(shù)?本文將帶你了解即熟悉又陌生的CUDA。
CUDA是什么?
CUDA(Compute Unified Device Architecture,統(tǒng)一計(jì)算架構(gòu))是由英偉達(dá)所推出的一種集成技術(shù),是該公司對(duì)于GPGPU的正式名稱(chēng)。通過(guò)這個(gè)技術(shù),用戶(hù)可利用NVIDIA的GPU進(jìn)行圖像處理之外的運(yùn)算,CUDA也是首次可以利用GPU作為C-編譯器的開(kāi)發(fā)環(huán)境。簡(jiǎn)單來(lái)說(shuō),程序員平時(shí)如果不使用特定框架都是針對(duì)CPU進(jìn)行編程的,CUDA是全球最大GPU廠商英偉達(dá)推出的針對(duì)GPU的編程的架構(gòu)。
2006年,英偉達(dá)發(fā)布了CUDA,它提供了GPU編程的簡(jiǎn)易接口,程序員可以基于CUDA編譯基于GPU的應(yīng)用程序,利用GPU的并行計(jì)算能力更高效的解決復(fù)雜計(jì)算難題。在CUDA發(fā)布之前,程序員需要到顯卡內(nèi)核并利用機(jī)器碼進(jìn)行編譯,編程過(guò)程相當(dāng)繁瑣也很困難。CUDA的發(fā)布,相當(dāng)于將較為復(fù)雜的底層代碼封裝成了一個(gè)個(gè)簡(jiǎn)單接口,使用時(shí)直接調(diào)用,其在GPU編程領(lǐng)域的革命性不亞于C、Python、PHP等高等編程語(yǔ)言的發(fā)明。當(dāng)然,CUDA本身也是兼容C語(yǔ)言的,其本身就類(lèi)似C語(yǔ)言,這可以幫助程序員更快速上手CUDA?,F(xiàn)在主流的深度學(xué)習(xí)框架大多都基于CUDA進(jìn)行GPU加速運(yùn)算。
?
CUDA工作流程 ?圖源:CSDN
從硬件角度看,英偉達(dá)會(huì)經(jīng)常宣傳自家顯卡擁有的CUDA Core數(shù)量。CUDA Core其實(shí)就是英偉達(dá)的流處理器,也就是FP32計(jì)算單元,同樣的結(jié)構(gòu)在AMD的GPU內(nèi)叫做SP。與CUDA Core相對(duì)的還有Tensor Core張量核心,從字面上就能看出該核心主要針對(duì)深度學(xué)習(xí)中的Tensor計(jì)算設(shè)計(jì)。Tensor計(jì)算就是混合精度計(jì)算,即在底層硬件算子層面用半精度(FP16)進(jìn)行輸入和輸出,使用全精度(FP32)進(jìn)行計(jì)算放置丟失過(guò)多精度的操作,這個(gè)底層硬件就是Tensor Core。CUDA 9.0引入了一個(gè)“warp矩陣函數(shù)” C++語(yǔ)言API,以便開(kāi)發(fā)者可以使用GPU上的Tensor Core。
?
CUDA Core ?圖源:知乎
CUDA與 GPGPU的概念一脈相承。GPU就是傳統(tǒng)意義上的顯卡與圖形加速卡。隨著人工智能產(chǎn)業(yè)爆炸式增長(zhǎng),導(dǎo)致計(jì)算復(fù)雜化和算力不足,CPU并行計(jì)算能力遠(yuǎn)不如GPU,使得GPU在通用計(jì)算領(lǐng)域逐漸領(lǐng)先,為了進(jìn)一步專(zhuān)注通用計(jì)算,GPGPU便應(yīng)運(yùn)而生。GPGPU與CUDA之間關(guān)系十分密切。GPGPU其實(shí)是去掉了圖形顯示功能的GPU,它將全部能力都投入到通用計(jì)算上,CUDA的出現(xiàn)讓GPU真正實(shí)現(xiàn)更廣泛的通用計(jì)算。CUDA與GPGPU也直接推動(dòng)了AI與深度學(xué)習(xí)的發(fā)展與產(chǎn)業(yè)革命。
為什么要兼容CUDA?
當(dāng)我們了解了CUDA是怎么回事,也就方便解釋為什么國(guó)產(chǎn)GPU需要兼容CUDA。
前文提到,目前世界上的主流深度學(xué)習(xí)架構(gòu)都在使用CUDA,其主要原因就是深度學(xué)習(xí)的重要載體—GPU市場(chǎng)已被英偉達(dá)占領(lǐng)大半。隨之而來(lái)的,就是市面上絕大部分GPU相關(guān)軟件都是用CUDA開(kāi)發(fā),國(guó)產(chǎn)GPU兼容CUDA可以同時(shí)“繼承”英偉達(dá)打造好的軟件生態(tài),也有更多資料可供學(xué)習(xí),這對(duì)于蹣跚起步的國(guó)產(chǎn)GPU行業(yè)來(lái)說(shuō),減輕了不少開(kāi)發(fā)難度,也降低了推廣壓力。
從開(kāi)發(fā)角度分析。業(yè)內(nèi)GPU工程師稱(chēng)目前GPU市場(chǎng)可以籠統(tǒng)的分成兩大塊,分別是計(jì)算和渲染。此前國(guó)內(nèi)GPU廠商通常專(zhuān)注與計(jì)算方面的研發(fā),也有少部分渲染產(chǎn)品問(wèn)世,最近摩爾線(xiàn)程發(fā)布的GPU強(qiáng)調(diào)其具有強(qiáng)大的渲染能力。然而渲染賽道難度較大,其計(jì)算復(fù)雜度更高,除了通用計(jì)算,還包圖形渲染、前后端著色器配置、物體幾何屬性等需要處理。目前世界上標(biāo)準(zhǔn)API主要是CUDA與OpenCL,CUDA是英偉達(dá)系統(tǒng)架構(gòu),OpenCL則主要被AMD采用。采用標(biāo)準(zhǔn)化的API接口,無(wú)論是CUDA還是OpenCL,都可以極大減少開(kāi)發(fā)渲染類(lèi)GPU的前提投入,后期可以再做相應(yīng)的優(yōu)化,這樣可以降低與CUDA等 “地位”穩(wěn)固的GPU生態(tài)直接競(jìng)爭(zhēng)的難度。
從市場(chǎng)推廣角度看。英偉達(dá)的CUDA生態(tài)已經(jīng)問(wèn)世多年,與下游軟件、驅(qū)動(dòng)廠家已經(jīng)有了深度合作。大部分廠家對(duì)于GPU生態(tài)的觀點(diǎn),往往是不在乎GPU本身好與壞,而是關(guān)注GPU好不好用、能不能用。好不好用的評(píng)價(jià)較為主觀,但采用現(xiàn)成的英偉達(dá)CUDA接口進(jìn)行編程,可以規(guī)避大多數(shù)未知風(fēng)險(xiǎn),多數(shù)初創(chuàng)企業(yè)開(kāi)發(fā)GPU軟件采用統(tǒng)一接口也能增加開(kāi)發(fā)穩(wěn)定性,降低人才招聘難度。所以,構(gòu)建自己的GPU生態(tài)要慢慢起步,一味求快推廣自家生態(tài)只會(huì)把風(fēng)險(xiǎn)轉(zhuǎn)嫁給更多下游開(kāi)發(fā)者。
國(guó)產(chǎn)GPU要挑戰(zhàn)CUDA嗎?
CUDA本身涵蓋了多個(gè)技術(shù)領(lǐng)域,其開(kāi)發(fā)與后續(xù)更新都與英偉達(dá)自家GPU高度綁定,即使全部開(kāi)源,第三方廠家也難以完美移植到自家GPU上。從另一個(gè)角度看,英偉達(dá)在GPU領(lǐng)域的壟斷地位主要通過(guò)CUDA平臺(tái)上的軟件生態(tài)實(shí)現(xiàn)。國(guó)產(chǎn)GPU若想真正做到與英偉達(dá)一較高下,CUDA生態(tài)是繞不開(kāi)的最終BOSS。
知乎用戶(hù)對(duì)英偉達(dá)GPU生態(tài)做出分析。國(guó)產(chǎn)GPU廠商若無(wú)法做到與英偉達(dá)的架構(gòu)、封裝技術(shù)、驅(qū)動(dòng)優(yōu)化等都保持完全一致,CUDA生態(tài)就一定不會(huì)完美適配其他顯卡。做到完全移植,CUDA生態(tài)內(nèi)的各種庫(kù)以及套件等都需要做相應(yīng)調(diào)試,工作量太大。
此外,CUDA也并不是一成不變的。每隔一代GPU,CUDA架構(gòu)就會(huì)發(fā)生很大變化。每個(gè)驅(qū)動(dòng)小版本推送,CUDA都會(huì)做出部分微調(diào)。國(guó)產(chǎn)GPU如果完全基于CUDA生態(tài)進(jìn)行開(kāi)發(fā),那它的硬件更新將完全綁定英偉達(dá)的開(kāi)發(fā)進(jìn)程,這樣就失去了主動(dòng)性,且永遠(yuǎn)慢人一步。
不過(guò)內(nèi)開(kāi)發(fā)者也不用悲觀。CUDA本質(zhì)是一個(gè)計(jì)算結(jié)構(gòu),甚至是一個(gè)理念,它并不需要英偉達(dá)的完全授權(quán)。我們可以參考英偉達(dá)的有力競(jìng)爭(zhēng)者AMD。AMD的生態(tài)雖然基于開(kāi)源生態(tài)OpenCL開(kāi)發(fā),但AMD也制作了HIP的編程模式,與CUDA相比,其開(kāi)發(fā)函數(shù)甚至可以進(jìn)行直接替換。如果說(shuō)英偉達(dá)在GPU領(lǐng)域是摸著石頭過(guò)河的,那AMD就是摸著英偉達(dá)過(guò)河。國(guó)內(nèi)GPU廠家或許可以參考AMD發(fā)展模式,前期借鑒可以是后期創(chuàng)新的基礎(chǔ)。
寫(xiě)在最后
CUDA作為英偉達(dá)壟斷GPU領(lǐng)域的關(guān)鍵力量,是國(guó)產(chǎn)廠商必須面對(duì)的挑戰(zhàn)。CUDA在誕生之初,為人們?cè)谏疃葘W(xué)習(xí)與AI領(lǐng)域攻堅(jiān)克難立下汗馬功勞,但如果它被用來(lái)鉗制新力量的發(fā)展,CUDA也將成為英偉達(dá)的馬奇諾防線(xiàn)。
參考資料:
維基百科——CUDA https://zh.wikipedia.org/zh-sg/CUDA
CUDA是什么-CUDA簡(jiǎn)介 https://blog.csdn.net/syz201558503103/article/details/111058193
國(guó)產(chǎn)GPU要和英偉達(dá)分蛋糕,還是自己做生態(tài)? https://icspec.com/news/article-details/1948665
為什么國(guó)內(nèi)的AI芯片公司不去支持CUDA,是技術(shù)問(wèn)題還是版權(quán)問(wèn)題?https://www.zhihu.com/question/461354739/answer/1964488472