• 正文
    • 讓英偉達確立主導(dǎo)地位的并非芯片本身
    • CUDA構(gòu)成的三大核心要素
    • 防御壁壘的深度甚至超越了硬件本身
    • 從底層邏輯到上層策略的生態(tài)系統(tǒng)
    • CUDA在英偉達硬件生態(tài)中的核心地位
    • 結(jié)尾:
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

深度丨CUDA作為英偉達底層算法平臺的核心意義

05/08 15:30
667
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者 | 方文三

CUDA最初是為科學(xué)計算領(lǐng)域設(shè)計的,英偉達致力于在消費級游戲顯卡之外拓展新的市場機遇。借助CUDA的發(fā)展,英偉達成功地在數(shù)據(jù)中心等高性能計算領(lǐng)域找到了第二個增長點。

英偉達確立主導(dǎo)地位的并非芯片本身

GPU與CPU在設(shè)計上存在本質(zhì)差異。

CPU作為處理復(fù)雜任務(wù)的全能型處理器,一次僅能處理有限數(shù)量的任務(wù);

而GPU則如同流水線工人,擅長于同時執(zhí)行大量簡單且重復(fù)的計算。

自21世紀初,研究人員開始意識到GPU的非凡潛力。

然而,當(dāng)時GPU編程的復(fù)雜性令人望而卻步。

程序員需借助多種圖形API來引導(dǎo)GPU執(zhí)行非圖形任務(wù),效率極低。

對此,英偉達的工程師們深感憂慮。于是,在2006年,英偉達推出了CUDA。

一個允許程序員直接使用C語言(后續(xù)還支持Python、Fortran等語言)來控制GPU的平臺。

從此,GPU的角色不再局限于游戲的[渲染機器],而是轉(zhuǎn)變?yōu)橐粋€功能強大的通用計算引擎。

隨后,英偉達還推出了CUDA Toolkit,其中集成了調(diào)試工具、優(yōu)化器等,使得編程體驗更加流暢。

正是這些創(chuàng)新,使得CUDA從一項技術(shù)演變?yōu)橐粋€平臺,吸引了眾多開發(fā)者的加入。

這一成就歸功于人工智能的興起,特別是深度學(xué)習(xí)的迅猛發(fā)展。

2012年,深度學(xué)習(xí)模型AlexNet在ImageNet圖像識別大賽中大放異彩,震驚了科技界。

該模型的訓(xùn)練需要大量的矩陣計算,而GPU與CUDA正是這類計算的理想選擇。

這一生態(tài)系統(tǒng)的關(guān)鍵[種子]在2016年播下。

OpenAI接受了英偉達的捐贈,標(biāo)志著[世界上首臺專為人工智能設(shè)計的超級計算機]的誕生,其核心由8個基于Volta架構(gòu)的V100 GPU構(gòu)成。

數(shù)年后,隨著GPT系列的成功,行業(yè)標(biāo)準(zhǔn)被納入CUDA的語法之中,訓(xùn)練流程、算子接口、資源調(diào)度均圍繞CUDA構(gòu)建。

OpenAI的成功路徑迅速成為整個行業(yè)的默認選擇。

無論是谷歌的TensorFlow、Facebook的PyTorch,還是后來的Hugging Face transformers,都依賴于CUDA的底層支持。

英偉達借助這股東風(fēng),在AI崛起的關(guān)鍵時刻,悄然將CUDA從一個選項轉(zhuǎn)變?yōu)樾袠I(yè)標(biāo)準(zhǔn)。

CUDA構(gòu)成的三大核心要素

①開發(fā)函數(shù)庫:基于CUDA技術(shù),提供了一系列應(yīng)用開發(fā)庫。

CUDA數(shù)學(xué)庫(包括CUBLAS、CUFFT等)中,CUBLAS是基礎(chǔ)的線性代數(shù)子程序庫,它提供了矩陣乘法、向量運算等高性能線性代數(shù)操作函數(shù),顯著提升了線性代數(shù)計算的效率;

CUFFT則是快速傅里葉變換庫,用于高效計算離散傅里葉變換及其逆變換,在信號處理、圖像處理等領(lǐng)域具有廣泛的應(yīng)用。

CUDA深度學(xué)習(xí)庫(CUDNN)專為深度學(xué)習(xí)設(shè)計,提供了卷積、池化、歸一化等深度學(xué)習(xí)常用操作的高性能實現(xiàn),是深度學(xué)習(xí)框架如TensorFlow、PyTorch等在GPU上高效運行的關(guān)鍵支撐。

此外,還有其他實用庫,CUDA的并行算法庫Thrust,它提供了類似于C++STL的并行算法和數(shù)據(jù)結(jié)構(gòu),包括排序、搜索、規(guī)約等操作。

②CUDA運行時庫:提供了應(yīng)用開發(fā)接口和運行期組件,涵蓋了基本數(shù)據(jù)類型的定義以及各類計算、類型轉(zhuǎn)換、內(nèi)存管理、設(shè)備訪問和執(zhí)行調(diào)度等函數(shù)。

這些函數(shù)用于在主機(CPU)與設(shè)備(GPU)之間進行數(shù)據(jù)傳輸、內(nèi)存管理、內(nèi)核啟動等操作。

例如,開發(fā)者可以利用運行時庫函數(shù)將數(shù)據(jù)從主機內(nèi)存復(fù)制到GPU內(nèi)存,隨后啟動GPU內(nèi)核對這些數(shù)據(jù)進行計算,最終再將計算結(jié)果從GPU內(nèi)存復(fù)制回主機內(nèi)存。

③CUDA驅(qū)動:負責(zé)與底層GPU硬件通信,將CUDA程序轉(zhuǎn)換為GPU可理解的指令和數(shù)據(jù)格式,并管理GPU資源,如顯存分配、線程調(diào)度等。

它是CUDA程序與GPU硬件之間的橋梁,確保程序能夠在不同型號的英偉達 GPU 上順利運行。

防御壁壘的深度甚至超越了硬件本身

英偉達的CUDA生態(tài)系統(tǒng)并非單純的軟件工具集合,而是一個構(gòu)建于[開發(fā)者粘性-工具鏈壟斷-框架綁定-商業(yè)利益]之上的閉環(huán)體系。

①關(guān)于開發(fā)者粘性,CUDA之所以能夠占據(jù)主導(dǎo)地位,得益于其先發(fā)優(yōu)勢和規(guī)模效應(yīng)。

經(jīng)過二十年的積累,眾多開發(fā)者已經(jīng)形成了難以改變的[代碼慣性]。

若試圖將CUDA代碼遷移到其他平臺,很可能需要重寫30%-50%的核心邏輯(例如內(nèi)存管理、并行優(yōu)化),同時面臨30%-60%的性能損失,遷移成本極為龐大。

②就工具鏈壟斷而言,英偉達在過去二十年中不斷完善CUDA生態(tài)系統(tǒng),最終實現(xiàn)了從開發(fā)到部署的[全鏈條捆綁]。

舉例來說,CUDA擁有眾多卓越的深度學(xué)習(xí)加速庫,其底層庫如cuDNN、cuBLAS的優(yōu)化程度遠超競爭對手。

在ResNet-50推理任務(wù)中,cuDNN的性能是ROCm的MIOpen的2.3倍,是Intel oneDNN的3.1倍。

再如,CUDA的推理引擎TensorRT能夠?qū)⒛P屯评硌舆t降低至毫秒級別;

AMD的MIGraphX在相同精度下的延遲高出55%,華為昇騰的CANN引擎僅支持有限的算子。

③CUDA與主流AI框架的深度耦合,也助其形成了[框架即生態(tài)]的隱形壟斷。

以全球使用率最高的深度學(xué)習(xí)框架PyTorch為例,在其V2.3版本中,85%的算子優(yōu)化代碼僅針對CUDA實現(xiàn)。

至于PyTorch的新功能(如動態(tài)shape推理)也會優(yōu)先適配CUDA 12.x版本,而AMD ROCm則需等待社區(qū)貢獻代碼,適配周期平均會延遲六個月。

此外,CUDA在框架底層就獲得了英偉達的獨家優(yōu)化特權(quán),與其他競品形成了顯著的性能差距。

例如,PyTorch的TorchScript在編譯時會自動調(diào)用CUDA專屬優(yōu)化(如自動內(nèi)核融合);

而ROCm版本則需要開發(fā)者手動插入HIP API,這極大地增加了代碼的復(fù)雜性。

④英偉達通過Inception計劃,支持了眾多AI初創(chuàng)公司,這些公司被納入[英偉達生態(tài)]后,被要求優(yōu)先使用CUDA,并將代碼共享至NGC(英偉達GPU Cloud)模型庫。

從底層邏輯到上層策略的生態(tài)系統(tǒng)

CUDA及其衍生工具(如PTX、Run:AI、Omniverse)所構(gòu)建的,已不僅僅是一套工具鏈,而是一套從底層執(zhí)行邏輯到上層調(diào)度策略的完整操作系統(tǒng)。

一旦采用CUDA,就必須使用其編譯器,并遵循其張量并行模型設(shè)計;

使用Run:AI,就必須在該工具定義的資源調(diào)度規(guī)則中優(yōu)化算力

使用PTX,就要接受其底層線程分配和執(zhí)行方式。

換言之,從底層硬件編程到上層應(yīng)用開發(fā)、調(diào)試、優(yōu)化以及集群管理的各個層面,均由英偉達所定義。

今日之CUDA已不再是一種工具,而是一整套控制結(jié)構(gòu)。

英偉達所控制的,不僅僅是某個產(chǎn)品,而是整個AI工程世界的[運行方式]。

在Windows平臺上運行AI框架時,英偉達實際上控制著[中間三層],即AI軟件棧中最核心的執(zhí)行與接口層,這與微軟當(dāng)年通過Windows控制PC行業(yè)的情形如出一轍。

你可以更換鍵盤、鼠標(biāo),但無法更換操作系統(tǒng)。同樣,在AI時代,你可以更換供應(yīng)商,但無法繞過CUDA的接口。

CUDA在英偉達硬件生態(tài)中的核心地位

①與GPU硬件的深度融合:CUDA與英偉達GPU硬件之間存在著深度融合的關(guān)系,二者相輔相成,共同為用戶提供強大的計算能力。

CUDA 能夠充分發(fā)揮英偉達GPU硬件的性能優(yōu)勢,這得益于其獨特的設(shè)計和優(yōu)化。

以深度學(xué)習(xí)中的卷積計算為例,CUDA通過精心設(shè)計的線程調(diào)度和內(nèi)存訪問模式,能夠讓GPU的大量CUDA核心同時參與計算,極大地提高了卷積計算的速度。

在硬件加速功能方面,CUDA與英偉達GPU硬件緊密聯(lián)系,許多硬件加速功能只有通過CUDA才能充分發(fā)揮出來。

例如,英偉達GPU中的Tensor Core專門用于加速矩陣乘法和累加運算。

CUDA提供了相應(yīng)的編程接口,使得開發(fā)者能夠方便地利用Tensor Core的強大性能,在深度學(xué)習(xí)訓(xùn)練中實現(xiàn)更快的計算速度和更高的效率。

此外,CUDA對英偉達GPU硬件的調(diào)用具有獨特性,它能夠直接訪問GPU的硬件資源,實現(xiàn)高效的并行計算

這種直接訪問硬件的方式,減少了中間層的開銷,提高了計算效率,使得CUDA在處理大規(guī)模數(shù)據(jù)和復(fù)雜計算任務(wù)時具有明顯的優(yōu)勢。

②推動硬件產(chǎn)品的發(fā)展與迭代:CUDA的發(fā)展對英偉達硬件產(chǎn)品的更新?lián)Q代起到了重要的推動作用。

隨著CUDA功能的不斷增強和應(yīng)用場景的不斷拓展,對英偉達GPU硬件的性能和架構(gòu)提出了更高的要求,促使英偉達不斷優(yōu)化硬件架構(gòu),提升硬件性能,以滿足CUDA的需求。

在硬件架構(gòu)優(yōu)化方面,英偉達根據(jù)CUDA的并行計算需求,不斷改進GPU的架構(gòu)設(shè)計。

例如,從早期的Fermi架構(gòu)到后來的Volta、Ampere架構(gòu),英偉達不斷增加CUDA核心的數(shù)量,優(yōu)化內(nèi)存帶寬和緩存機制,提高GPU的并行計算能力和數(shù)據(jù)處理速度。

同時,CUDA的發(fā)展也促使英偉達不斷推出新的硬件產(chǎn)品,以適應(yīng)不同應(yīng)用場景的需求。

例如,英偉達推出的A100、H100等高端GPU產(chǎn)品,不僅在硬件性能上有了大幅提升,還針對CUDA進行了深度優(yōu)化,為人工智能、高性能計算等領(lǐng)域提供了更強大的計算支持。

這些新的硬件產(chǎn)品,反過來又促進了CUDA的發(fā)展和應(yīng)用,形成了良性循環(huán)。

③構(gòu)建完整的硬件生態(tài)系統(tǒng):CUDA在英偉達的硬件生態(tài)系統(tǒng)中扮演著連接硬件與軟件的關(guān)鍵角色。

它促進了基于英偉達GPU硬件的軟件和應(yīng)用的開發(fā),構(gòu)建了一個完整的硬件生態(tài)系統(tǒng)。

在這個生態(tài)系統(tǒng)中,CUDA作為核心平臺,吸引了眾多開發(fā)者基于其進行軟件和應(yīng)用的開發(fā)。

從深度學(xué)習(xí)框架到科學(xué)計算軟件,從數(shù)據(jù)分析工具到圖形圖像處理應(yīng)用,基于CUDA開發(fā)的軟件和應(yīng)用涵蓋了多個領(lǐng)域,滿足了不同用戶的需求。

以深度學(xué)習(xí)領(lǐng)域為例,TensorFlow、PyTorch等主流深度學(xué)習(xí)框架都對CUDA提供了良好的支持。

開發(fā)者可以利用這些框架在英偉達GPU上快速搭建和訓(xùn)練深度學(xué)習(xí)模型,實現(xiàn)高效的圖像識別、自然語言處理等任務(wù)。

在科學(xué)計算領(lǐng)域,諸如Matlab、LAMMPS等軟件也借助CUDA加速計算過程,提高了科研工作的效率。

結(jié)尾:

經(jīng)濟學(xué)中有一個經(jīng)典理論:[當(dāng)一個生態(tài)系統(tǒng)的遷移成本遠高于留存成本時,該生態(tài)系統(tǒng)便被鎖定。]

這正是CUDA的厲害之處——它使用戶產(chǎn)生了路徑依賴,而這種依賴不再局限于硬件層面的[兼容性],而是將整個AI工程師的思維方式納入其結(jié)構(gòu)之中。

無論是OpenCL/OneAPI、TVM/XLA、MLIR,抑或其他一些出發(fā)點良好的項目,我們目睹了眾多旨在構(gòu)建統(tǒng)一AI基礎(chǔ)設(shè)施的有力嘗試。

但遺憾的是,尚未有任何一個能提供令開發(fā)者完全滿意的結(jié)果。

項目逐漸走向碎片化,承諾未能兌現(xiàn),使用替代硬件的用戶手中的工具往往不盡人意。

現(xiàn)實情況是:唯有英偉達真正解決了這一問題。

部分資料參考:InfoQ:《GPU 編程[改朝換代]:英偉達終為CUDA 添加原生 Python 支持,百萬用戶變千萬?》,科魯叔叔趣說AI:《CUDA:英偉達的魔法引擎如何改變世界》,Rog3r:《究竟什么是英偉達的CUDA?真的堅不可摧嗎?》,半導(dǎo)體行業(yè)觀察:《如何打破CUDA壟斷?LLVM奠基人長文解讀》,牛山AI公園:《DeepSeek是否真繞開了CUDA?一文搞懂CUDA為何是英偉達的核心壁壘》

英偉達

英偉達

NVIDIA(中國大陸譯名:英偉達,港臺譯名:輝達),成立于1993年,是一家美國跨國科技公司,總部位于加利福尼亞州圣克拉拉市,由黃仁勛、克里斯·馬拉科夫斯基(Chris Malachowsky)和柯蒂斯·普里姆(Curtis Priem)共同創(chuàng)立。公司早期專注于圖形芯片設(shè)計業(yè)務(wù),隨著公司技術(shù)與業(yè)務(wù)發(fā)展,已成長為一家提供全棧計算的人工智能公司,致力于開發(fā)CPU、DPU、GPU和AI軟件,為建筑工程、金融服務(wù)、科學(xué)研究、制造業(yè)、汽車等領(lǐng)域的計算解決方案提供支持。

NVIDIA(中國大陸譯名:英偉達,港臺譯名:輝達),成立于1993年,是一家美國跨國科技公司,總部位于加利福尼亞州圣克拉拉市,由黃仁勛、克里斯·馬拉科夫斯基(Chris Malachowsky)和柯蒂斯·普里姆(Curtis Priem)共同創(chuàng)立。公司早期專注于圖形芯片設(shè)計業(yè)務(wù),隨著公司技術(shù)與業(yè)務(wù)發(fā)展,已成長為一家提供全棧計算的人工智能公司,致力于開發(fā)CPU、DPU、GPU和AI軟件,為建筑工程、金融服務(wù)、科學(xué)研究、制造業(yè)、汽車等領(lǐng)域的計算解決方案提供支持。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

AI芯天下是智能芯片行業(yè)垂直自媒體。采用媒體+行業(yè)的模式,堅持從芯出發(fā),用心服務(wù)的理念,致力于豐富的網(wǎng)絡(luò)基礎(chǔ)資源建設(shè)。官網(wǎng):http://www.world2078.com/ 公眾號:World_2078