加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

CUDA:英偉達(dá)最深的護(hù)城河,加速計(jì)算行業(yè)發(fā)展的時(shí)代引擎!

05/20 15:03
7245
閱讀需 15 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

CUDA為GPU賦予了新的使命,推進(jìn)計(jì)算行業(yè)快速發(fā)展,讓計(jì)算從“CPU處理”時(shí)代向CPU與GPU“協(xié)同處理”時(shí)代邁進(jìn)。今天讓我一起來聊一聊加速計(jì)算行業(yè)發(fā)展的時(shí)代引擎--CUDA!

一、CUDA提出背景:發(fā)揮GPU強(qiáng)大的并行計(jì)算能力,拓展GPU應(yīng)用場景

2006年,英偉達(dá)推出殺手級產(chǎn)品-GeForce 7300GT,精準(zhǔn)定位中低端GPU市場,其憑借超高性價(jià)比成功擊敗老對手的ATi Radeon X1600。

憑借GeForce 7300GT的成功,英偉達(dá)在圖形處理市場份額持續(xù)攀升,截至2006年底,其市場份額超過70%,占據(jù)絕對領(lǐng)先地位。

但英偉達(dá)并不滿足于圖形處理市場的成功,想為GPU開拓更多的應(yīng)用場景,讓其充分發(fā)揮并行計(jì)算能力強(qiáng)大的優(yōu)勢,使其不再局限于“圖形處理”領(lǐng)域。

想要實(shí)現(xiàn)這個(gè)想法并不容易,因?yàn)楫?dāng)時(shí)的GPU和CPU之間存在著很大的差異:首先,GPU和CPU之間使用PCIe接口來通信,這個(gè)接口的帶寬低和延遲高,導(dǎo)致數(shù)據(jù)傳輸效率很差。其次,GPU和CPU之間使用不同的內(nèi)存空間和管理方式,導(dǎo)致內(nèi)存訪問和同步復(fù)雜。最重要的是,GPU和CPU之間使用不同的指令集和編程模型,導(dǎo)致程序開發(fā)和移植困難。同時(shí),由于GPU和CPU之間使用不同的調(diào)度和執(zhí)行機(jī)制,導(dǎo)致任務(wù)分配和協(xié)調(diào)困難。

為了解決這些問題,NVIDIA需要找到一個(gè)合作伙伴,一個(gè)能夠提供強(qiáng)大的CPU,并且愿意支持NVIDIA的想法的合作伙伴。當(dāng)時(shí)的英特爾已經(jīng)是CPU市場的霸主,它擁有強(qiáng)大的技術(shù)實(shí)力和市場影響力。但同時(shí)也面臨著諸多挑戰(zhàn),例如:摩爾定律的瓶頸,功耗墻的限制,多核心擴(kuò)展的困難,新興領(lǐng)域的競爭,即科學(xué)計(jì)算、機(jī)器學(xué)習(xí)、密碼學(xué)等領(lǐng)域?qū)PU提出了更高的要求。英特爾也在尋找一種新的技術(shù)方案,一種可以提高CPU性能、降低CPU功耗、增強(qiáng)CPU并行性、拓展CPU應(yīng)用領(lǐng)域的技術(shù)方案。2006年,由英偉達(dá)首席科學(xué)家David Kirk親自帶隊(duì),開發(fā)了一個(gè)基于英偉達(dá) GPU 平臺(tái)上面定制的特殊計(jì)算體系/算法?- CUDA(Compute Unified Device Architecture,統(tǒng)一計(jì)算架構(gòu))!它讓GPU和CPU通過一種全新的方式實(shí)現(xiàn)高效地交換數(shù)據(jù),它使GPU不僅能處理圖形任務(wù),還能處理通用計(jì)算任務(wù),擴(kuò)展GPU在科學(xué)計(jì)算、機(jī)器學(xué)習(xí)、密碼學(xué)等領(lǐng)域應(yīng)用。2006年,英偉達(dá)和英特爾達(dá)成了一項(xiàng)歷史性的合作協(xié)議,他們共同開發(fā)了一種基于CUDA的新型GPU,即G80 GPU(GeForce 8800 GTX)。

二、CUDA魔法加持:GPU計(jì)算效率實(shí)現(xiàn)最大化

CUDA本身是一種并行計(jì)算平臺(tái)和編程模型,其編程語言是一種“類C語言”,兼容C語言,CUDA編程語言和C語言差異并不大,非常適合普通開發(fā)者使用。CUDA改進(jìn)了DRAM的讀寫靈活性,使得GPU與CPU的機(jī)制相吻合,同時(shí),CUDA也提供了片上(on-chip)共享內(nèi)存,使得線程之間可以共享數(shù)據(jù)。應(yīng)用程序可以利用共享內(nèi)存來減少DRAM的數(shù)據(jù)傳送,減少對DRAM內(nèi)存帶寬的依賴。在CUDA的加持下GPU計(jì)算效率實(shí)現(xiàn)最大化,從而幫助GPU擴(kuò)展到所有適合并行計(jì)算的領(lǐng)域,GPU也逐漸成為了GPGPU。下面我們通過一個(gè)具體例子來說明CPU、GPU 與CUDA優(yōu)化的GPU運(yùn)算能力的差異。

當(dāng)我們要算100次從1到100的加法:如果使用一個(gè)4線程的CPU,CPU需要進(jìn)行100/4*100=2500次計(jì)算。如果使用一個(gè)1000線程的GPU,GPU需要進(jìn)行100/1000*100=10次計(jì)算。如果使用CUDA優(yōu)化的英偉達(dá)的GPU,它能提供優(yōu)化算法的“1+100,2+99的這種利用首尾相加再除以2”的方法來簡化計(jì)算,那么使用CUDA優(yōu)化的GPU只需要100/1000*100/5=2 次計(jì)算。相比CPU,采用CUDA優(yōu)化的GPU計(jì)算效率提升了近百倍。相比普通GPU,CUDA優(yōu)化的GPU計(jì)算效率也提升了5倍,所以,即便競爭對手的GPU在硬件參數(shù)上比肩英偉達(dá)GPU,但缺少CUDA的優(yōu)化,其計(jì)算效率還是無法比肩英偉達(dá)GPU。

三、CUDA架構(gòu)組成:開發(fā)庫、運(yùn)行期環(huán)境和驅(qū)動(dòng)

從體系結(jié)構(gòu)的組成來說,CUDA包含了三個(gè)部分:開發(fā)庫、運(yùn)行期環(huán)境和驅(qū)動(dòng)。

1.開發(fā)庫

它是基于CUDA所提供的應(yīng)用開發(fā)庫。以CUDA 1.1為例,它提供了兩個(gè)標(biāo)準(zhǔn)數(shù)學(xué)運(yùn)算庫——CUFFT(離散快速傅立葉變換)和CUBLAS(離散基本線性計(jì)算)的實(shí)現(xiàn)。這兩個(gè)數(shù)學(xué)運(yùn)算庫所解決的是典型的大規(guī)模的并行計(jì)算問題,也是在密集數(shù)據(jù)計(jì)算中非常常見的計(jì)算類型。開發(fā)人員可以在開發(fā)庫基礎(chǔ)上快速、方便的建立起自己的計(jì)算應(yīng)用。此外,開發(fā)人員也可以在CUDA的技術(shù)基礎(chǔ)上實(shí)現(xiàn)出更多的開發(fā)庫。

2.運(yùn)行期環(huán)境

它提供了應(yīng)用開發(fā)接口和運(yùn)行期組件,包括基本數(shù)據(jù)類型的定義和各類計(jì)算、類型轉(zhuǎn)換、內(nèi)存管理、設(shè)備訪問和執(zhí)行調(diào)度等函數(shù)?;贑UDA開發(fā)的程序代碼在實(shí)際執(zhí)行中分為兩種,一種是運(yùn)行在CPU上的宿主代碼(Host Code),一種是運(yùn)行在GPU上的設(shè)備代碼(Device Code)。由于不同類型的代碼運(yùn)行的物理位置不同,以及訪問到的資源不同,因此對應(yīng)的運(yùn)行期組件也分為公共組件、宿主組件和設(shè)備組件三個(gè)部分,基本上囊括了所有在GPGPU開發(fā)中所需要的功能和能夠使用到的資源接口,開發(fā)人員可以通過運(yùn)行期環(huán)境的編程接口實(shí)現(xiàn)各種類型的計(jì)算。

3.驅(qū)動(dòng)

基于CUDA開發(fā)的應(yīng)用必須有NVIDIA CUDA-enable的硬件支持,而不同版本GPU之間存在差異,因此驅(qū)動(dòng)部分基本上可以理解為是CUDA-enable的GPU的設(shè)備抽象層,提供硬件設(shè)備的抽象訪問接口。CUDA提供運(yùn)行期環(huán)境也是通過這一層來實(shí)現(xiàn)各種功能。

四、CUDA推廣策略:完全免費(fèi)使用,不求短期回報(bào),快速占領(lǐng)市場

英偉達(dá)CEO黃仁極具遠(yuǎn)見,將拓展GPU應(yīng)用領(lǐng)域作為公司首要任務(wù)。因此,CUDA推出后完全免費(fèi),不求短期回報(bào),完全推廣的策略,使CUDA平臺(tái)開發(fā)者快速增長,同時(shí)也幫助英偉達(dá)在AI市場搶占先機(jī)。英偉達(dá)大力支持CUDA系統(tǒng)在AI及相關(guān)領(lǐng)域的開發(fā)與推廣,早在2006年,英偉達(dá)每年投入高達(dá)5億美元的研發(fā)經(jīng)費(fèi)(全年?duì)I收 30 億美元),對CUDA進(jìn)行持續(xù)更新與優(yōu)化?,并讓當(dāng)時(shí)美國大學(xué)與科研機(jī)構(gòu)免費(fèi)使用,這讓CUDA迅速在AI以及通用計(jì)算領(lǐng)域開花結(jié)果。

CUDA發(fā)展歷程:持續(xù)演進(jìn)與優(yōu)化,革命從未停止

為了讓廣大開發(fā)者更方便的使用GPU的計(jì)算能力,英偉達(dá)不斷優(yōu)化CUDA開發(fā)庫與驅(qū)動(dòng)系統(tǒng)。從2006年發(fā)布至今,共發(fā)布了12個(gè)大版本,52個(gè)小版本,經(jīng)過英偉達(dá)持續(xù)地更與新迭代,CUDA功能與性能進(jìn)一步優(yōu)化、兼容性不斷調(diào)整、支持更多計(jì)算架構(gòu)、錯(cuò)誤得到修復(fù)、穩(wěn)定性逐步改善。

1.功能增強(qiáng)

CUDA的每個(gè)新版本都會(huì)帶來一些新功能或API。例如,CUDA 10引入了一個(gè)全新的任務(wù)圖功能,它允許用戶將一系列的任務(wù)(例如內(nèi)核、數(shù)據(jù)傳輸?shù)龋┙M織成一個(gè)圖形,從而提高執(zhí)行效率。而CUDA 11則引入了新的編程模型和庫功能。

2.性能提升

隨著版本升級,CUDA性能持續(xù)不斷地優(yōu)化,以提高運(yùn)行速度和效率。例如,CUDA 9引入了Cooperative Groups(一個(gè)新的編程模型),可以幫助開發(fā)者更容易地編寫并行和并發(fā)代碼。

3.兼容性調(diào)整

每個(gè)新版本對舊版編譯的代碼的兼容性有所不同。有些新版本可能不再支持一些舊版本的特性,或者對某些API的行為進(jìn)行了修改。

4.錯(cuò)誤修復(fù)和穩(wěn)定性改進(jìn)

每一個(gè)新版本的CUDA都會(huì)修復(fù)一些已知的錯(cuò)誤,并且提高CUDA的穩(wěn)定性和可靠性。這些改進(jìn)使得新版本的CUDA在實(shí)際使用中更加穩(wěn)定,可以處理更多的任務(wù)。

5.支持更多計(jì)算架構(gòu)

每個(gè)CUDA版本都支持一系列的計(jì)算架構(gòu),隨著版本的升級,支持的計(jì)算架構(gòu)列表也會(huì)更新。有些新的計(jì)算價(jià)格可能只在新版本的CUDA中得到支持。例如:CUDA8.0,9.x,10.x。

CUDA8.0:● 費(fèi)米 (Fermi,GTX580)●?開普勒(Kepler,GTX680,GTX780Ti,GTX Titan,Titan Z,Tesla K80)●?麥克斯韋(Maxwell,GTX980Ti,Titan X,Tesla M40)●?帕斯卡(Pascal,GTX1080Ti,Titan Xp,Tesla P100)

CUDA9.x:●?開普勒(Kepler,GTX680,GTX780Ti,GTX Titan,Titan Z,Tesla K80)●?麥克斯韋(Maxwell,GTX980Ti,Titan X,Tesla M40)●?帕斯卡(Pascal,GTX1080Ti,Titan Xp,Tesla P100)●?伏特(Volta,Titan V,Tesla V100)

CUDA10.x:●?開普勒(Kepler,GTX680,GTX780Ti,GTX Titan,Titan Z,Tesla K80)●?麥克斯韋(Maxwell,GTX980Ti,Titan X,Tesla M40)●?帕斯卡(Pascal,GTX1080Ti,Titan Xp,Tesla P100)●?伏特(Volta,Titan V,Tesla V100)●?圖靈(Turing,RTX2080Ti,Titan RTX,Tesla T4)經(jīng)過多年優(yōu)化與迭代,CUDA已經(jīng)形成獨(dú)特軟硬件配合的生態(tài)系統(tǒng),為英偉達(dá)GPU產(chǎn)品構(gòu)建了極深的護(hù)城河。

六、CUDA應(yīng)用場景:從圖形處理到科學(xué)計(jì)算,持續(xù)探索創(chuàng)新應(yīng)用領(lǐng)域

時(shí)至今日,支持CUDA的GPU銷量已經(jīng)超過1億,成千上萬的軟件開發(fā)人員使用免費(fèi)的CUDA軟件開發(fā)工具來解決各種應(yīng)用程序中的問題,而這些應(yīng)用程序從視頻與音頻處理和物理效果模擬到石油天然氣勘探、產(chǎn)品設(shè)計(jì)、醫(yī)學(xué)成像以及科學(xué)研究,涵蓋了各個(gè)領(lǐng)域。

1.圖形渲染與視覺效果作為GPU技術(shù)的基石,CUDA不僅加速了3D圖形渲染,還促進(jìn)了電影特效、建筑設(shè)計(jì)可視化、游戲開發(fā)等領(lǐng)域的實(shí)時(shí)渲染和物理模擬。

2.深度學(xué)習(xí)人工智能CUDA是推動(dòng)深度學(xué)習(xí)革命的關(guān)鍵技術(shù)之一。它支持諸如TensorFlow、PyTouch等主流深度學(xué)習(xí)框架,加速神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和推理過程,廣泛應(yīng)用于圖像識(shí)別、自然語言處理等AI應(yīng)用。

3.科學(xué)計(jì)算與工程模擬在物理與化學(xué)模擬、氣候研究、天文學(xué)、生物信息學(xué)等領(lǐng)域,CUDA被用來加速復(fù)雜的數(shù)值計(jì)算和模擬過程,例如分子動(dòng)力學(xué)模擬軟件AMBER就利用CUDA來加速新藥的研發(fā)(AMBER 是一款分子動(dòng)力學(xué)模擬程序,全世界在學(xué)術(shù)界與制藥企業(yè)中有超過60,000名研究人員使用該程序來加速新藥的探索工作)。

4.高性能計(jì)算與大數(shù)據(jù)處理在超級計(jì)算中心,CUDA被用于構(gòu)建高性能計(jì)算集群,例如德國、波蘭、日本的量子計(jì)算中心采用CUDA-Q平臺(tái)推進(jìn)量子計(jì)算研究。另一方面,CUDA加速了大數(shù)據(jù)的清洗、轉(zhuǎn)換、分析流程,極大地提升了數(shù)據(jù)科學(xué)家和分析師的工作效率。CUDA賦予GPU新的生命!它讓GPU不再只是一個(gè)圖像加速處理器,而是成為一個(gè)通用計(jì)算器。它讓開發(fā)者不再只是一個(gè)游戲開發(fā)者,而是一個(gè)工程師、科學(xué)家、藝術(shù)家。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
STM32F103CBT6TR 1 STMicroelectronics Mainstream Performance line, Arm Cortex-M3 MCU with 128 Kbytes of Flash memory, 72 MHz CPU, motor control, USB and CAN

ECAD模型

下載ECAD模型
$9.18 查看
STM32F103CBT6 1 STMicroelectronics Mainstream Performance line, Arm Cortex-M3 MCU with 128 Kbytes of Flash memory, 72 MHz CPU, motor control, USB and CAN

ECAD模型

下載ECAD模型
$11.49 查看
DSPIC33EP512MU810-I/PT 1 Microchip Technology Inc 16-BIT, FLASH, 60 MHz, MICROCONTROLLER, PQFP100, 12 X 12 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100
$10.04 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜