0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CUDA簡(jiǎn)介:CUDA編程模型和接口

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Ken He ? 2022-04-19 15:38 ? 次閱讀

本項(xiàng)目為CUDA官方手冊(cè)的中文翻譯版,有個(gè)人翻譯并添加自己的理解。主要介紹CUDA編程模型和接口。

1.1 我們?yōu)槭裁匆褂?a href="http://www.wenjunhu.com/tags/gpu/" target="_blank">GPU

GPU(Graphics Processing Unit)在相同的價(jià)格和功率范圍內(nèi),比CPU提供更高的指令吞吐量和內(nèi)存帶寬。許多應(yīng)用程序利用這些更高的能力,在GPU上比在CPU上運(yùn)行得更快(參見GPU應(yīng)用程序)。其他計(jì)算設(shè)備,如FPGA,也非常節(jié)能,但提供的編程靈活性要比GPU少得多。

GPU和CPU在功能上的差異是因?yàn)樗鼈兊脑O(shè)計(jì)目標(biāo)不同。雖然 CPU 旨在以盡可能快的速度執(zhí)行一系列稱為線程的操作,并且可以并行執(zhí)行數(shù)十個(gè)這樣的線程。但GPU卻能并行執(zhí)行成千上萬個(gè)(攤銷較慢的單線程性能以實(shí)現(xiàn)更大的吞吐量)。

GPU 專門用于高度并行計(jì)算,因此設(shè)計(jì)時(shí)更多的晶體管用于數(shù)據(jù)處理,而不是數(shù)據(jù)緩存和流量控制。

下圖顯示了 CPU 與 GPU 的芯片資源分布示例。

pYYBAGJeZ2KATOe0AABsHBaw-Os076.png

將更多晶體管用于數(shù)據(jù)處理,例如浮點(diǎn)計(jì)算,有利于高度并行計(jì)算。GPU可以通過計(jì)算隱藏內(nèi)存訪問延遲,而不是依靠大數(shù)據(jù)緩存和復(fù)雜的流控制來避免長(zhǎng)時(shí)間的內(nèi)存訪問延遲,這兩者在晶體管方面都是昂貴的。

1.2 CUDA?:通用并行計(jì)算平臺(tái)和編程模型

2006 年 11 月,NVIDIA? 推出了 CUDA?,這是一種通用并行計(jì)算平臺(tái)和編程模型,它利用 NVIDIA GPU 中的并行計(jì)算引擎以比 CPU 更有效的方式解決許多復(fù)雜的計(jì)算問題。

CUDA 附帶一個(gè)軟件環(huán)境,允許開發(fā)人員使用 C++ 作為高級(jí)編程語言。 如下圖所示,支持其他語言、應(yīng)用程序編程接口或基于指令的方法,例如 FORTRAN、DirectCompute、OpenACC。

poYBAGJeZ1yAKiiLAAH1q_EpXUQ299.png

1.3 可擴(kuò)展的編程模型

多核 CPU 和眾核 GPU 的出現(xiàn)意味著主流處理器芯片現(xiàn)在是并行系統(tǒng)。挑戰(zhàn)在于開發(fā)能夠透明地?cái)U(kuò)展可并行的應(yīng)用軟件,來利用不斷增加的處理器內(nèi)核數(shù)量。就像 3D 圖形應(yīng)用程序透明地將其并行性擴(kuò)展到具有廣泛不同內(nèi)核數(shù)量的多核 GPU 一樣。

CUDA 并行編程模型旨在克服這一挑戰(zhàn),同時(shí)為熟悉 C 等標(biāo)準(zhǔn)編程語言的程序員保持較低的學(xué)習(xí)曲線。

其核心是三個(gè)關(guān)鍵抽象——線程組的層次結(jié)構(gòu)、共享內(nèi)存和屏障同步——它們只是作為最小的語言擴(kuò)展集向程序員公開。

這些抽象提供了細(xì)粒度的數(shù)據(jù)并行和線程并行,嵌套在粗粒度的數(shù)據(jù)并行和任務(wù)并行中。它們指導(dǎo)程序員將問題劃分為可以由線程塊并行獨(dú)立解決的粗略子問題,并將每個(gè)子問題劃分為可以由塊內(nèi)所有線程并行協(xié)作解決的更精細(xì)的部分。

這種分解通過允許線程在解決每個(gè)子問題時(shí)進(jìn)行協(xié)作來保留語言表達(dá)能力,同時(shí)實(shí)現(xiàn)自動(dòng)可擴(kuò)展性。實(shí)際上,每個(gè)線程塊都可以在 GPU 內(nèi)的任何可用multiprocessor上以亂序、并發(fā)或順序調(diào)度,以便編譯的 CUDA 程序可以在任意數(shù)量的多處理器上執(zhí)行,如下圖所示,并且只有運(yùn)行時(shí)系統(tǒng)需要知道物理multiprocessor個(gè)數(shù)。

這種可擴(kuò)展的編程模型允許 GPU 架構(gòu)通過簡(jiǎn)單地?cái)U(kuò)展multiprocessor和內(nèi)存分區(qū)的數(shù)量來跨越廣泛的市場(chǎng)范圍:高性能發(fā)燒友 GeForce GPU ,專業(yè)的 Quadro 和 Tesla 計(jì)算產(chǎn)品 (有關(guān)所有支持 CUDA 的 GPU 的列表,請(qǐng)參閱支持 CUDA 的 GPU)。

pYYBAGJeZ1WAWhqdAAAqnDtQ7Es238.png

注意:GPU 是圍繞一系列流式多處理器 (SM: Streaming Multiprocessors) 構(gòu)建的(有關(guān)詳細(xì)信息,請(qǐng)參閱硬件實(shí)現(xiàn))。 多線程程序被劃分為彼此獨(dú)立執(zhí)行的線程塊,因此具有更多multiprocessor的 GPU 將比具有更少多處理器的 GPU 在更短的時(shí)間內(nèi)完成程序執(zhí)行。

關(guān)于作者

Ken He 是 NVIDIA 企業(yè)級(jí)開發(fā)者社區(qū)經(jīng)理 & 高級(jí)講師,擁有多年的 GPU 和人工智能開發(fā)經(jīng)驗(yàn)。自 2017 年加入 NVIDIA 開發(fā)者社區(qū)以來,完成過上百場(chǎng)培訓(xùn),幫助上萬個(gè)開發(fā)者了解人工智能和 GPU 編程開發(fā)。在計(jì)算機(jī)視覺,高性能計(jì)算領(lǐng)域完成過多個(gè)獨(dú)立項(xiàng)目。并且,在機(jī)器人無人機(jī)領(lǐng)域,有過豐富的研發(fā)經(jīng)驗(yàn)。對(duì)于圖像識(shí)別,目標(biāo)的檢測(cè)與跟蹤完成過多種解決方案。曾經(jīng)參與 GPU 版氣象模式GRAPES,是其主要研發(fā)者。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5072

    瀏覽量

    103515
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4767

    瀏覽量

    129206
  • 人工智能
    +關(guān)注

    關(guān)注

    1794

    文章

    47622

    瀏覽量

    239581
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FacenetPytorch人臉識(shí)別方案--基于米爾全志T527開發(fā)板

    算法實(shí)現(xiàn)人臉識(shí)別深度神經(jīng)網(wǎng)絡(luò)1.簡(jiǎn)介 Facenet-PyTorch 是一個(gè)基于 PyTorch 框架實(shí)現(xiàn)的人臉識(shí)別庫。它提供了 FaceNet 模型的 PyTorch 實(shí)現(xiàn),可以用于訓(xùn)練自己的人
    發(fā)表于 11-28 15:57

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗(yàn)】--了解算力芯片GPU

    從而充分利用 GPU的強(qiáng)大計(jì)算能力。在CUDA編程模型中,GPU的計(jì)算資源被組織為線期線程塊和線程網(wǎng)格3級(jí)。線程是基本的執(zhí)行單元,線程塊是包含多個(gè)線程的組,線程網(wǎng)格包含多個(gè)線程塊的組。線程塊和線程網(wǎng)格
    發(fā)表于 11-03 12:55

    有沒有大佬知道NI vision 有沒有辦法通過gpu和cuda來加速圖像處理

    有沒有大佬知道NI vision 有沒有辦法通過gpu和cuda來加速圖像處理
    發(fā)表于 10-20 09:14

    接口芯片的編程模型方法是什么

    接口芯片的編程模型方法是一個(gè)復(fù)雜的話題,涉及到硬件設(shè)計(jì)、軟件編程、通信協(xié)議等多個(gè)方面。 1. 接口芯片概述
    的頭像 發(fā)表于 09-30 11:30 ?273次閱讀

    怎么在TMDSEVM6678: 6678自帶的FFT接口CUDA提供CUFFT函數(shù)庫選擇?

    請(qǐng)教一下gpgpu上包括4個(gè)Riscv cpu和一個(gè)DPU, 沒有6678,要替換原來信號(hào)處理用的6678,該怎么在6678自帶的FFT接口CUDA提供CUFFT函數(shù)庫選擇?
    發(fā)表于 09-27 07:20

    打破英偉達(dá)CUDA壁壘?AMD顯卡現(xiàn)在也能無縫適配CUDA

    電子發(fā)燒友網(wǎng)報(bào)道(文/梁浩斌)一直以來,圍繞CUDA打造的軟件生態(tài),是英偉達(dá)在GPU領(lǐng)域最大的護(hù)城河,尤其是隨著目前AI領(lǐng)域的發(fā)展加速,市場(chǎng)火爆,英偉達(dá)GPU+CUDA的開發(fā)生態(tài)則更加穩(wěn)固,AMD
    的頭像 發(fā)表于 07-19 00:16 ?4799次閱讀

    英國(guó)公司實(shí)現(xiàn)英偉達(dá)CUDA軟件在AMD GPU上的無縫運(yùn)行

    7月18日最新資訊,英國(guó)創(chuàng)新科技企業(yè)Spectral Compute震撼發(fā)布了其革命性GPGPU編程工具包——“SCALE”,該工具包實(shí)現(xiàn)了英偉達(dá)CUDA軟件在AMD GPU上的無縫遷移與運(yùn)行,標(biāo)志著在GPU計(jì)算領(lǐng)域,NVIDIA長(zhǎng)期以來的市場(chǎng)壟斷地位或?qū)⒂瓉碇卮筇魬?zhàn)。
    的頭像 發(fā)表于 07-18 14:40 ?691次閱讀

    軟件生態(tài)上超越CUDA,究竟有多難?

    神壇的,還是圍繞CUDA打造的一系列軟件生態(tài)。 ? 英偉達(dá)——CUDA的絕對(duì)統(tǒng)治 ? 相信對(duì)GPU有過一定了解的都知道,英偉達(dá)的最大護(hù)城河就是CUDACUDA在后端架構(gòu)上處于絕對(duì)的統(tǒng)
    的頭像 發(fā)表于 06-20 00:09 ?3753次閱讀

    借助NVIDIA Aerial CUDA增強(qiáng)5G/6G的DU性能和工作負(fù)載整合

    Aerial CUDA 加速無線接入網(wǎng) (RAN)可加速電信工作負(fù)載,使用 CPU、GPU 和 DPU 在云原生加速計(jì)算平臺(tái)上提供更高水平的頻譜效率 (SE)。
    的頭像 發(fā)表于 05-24 11:10 ?642次閱讀
    借助NVIDIA Aerial <b class='flag-5'>CUDA</b>增強(qiáng)5G/6G的DU性能和工作負(fù)載整合

    英偉達(dá)CUDA-Q平臺(tái)推動(dòng)全球量子計(jì)算研究

    英偉達(dá)今日公布了其重要戰(zhàn)略決策,即采用開源的CUDA-Q平臺(tái),旨在推動(dòng)德國(guó)、日本和波蘭等國(guó)家超運(yùn)中心在量子計(jì)算領(lǐng)域的創(chuàng)新研究。CUDA-Q作為英偉達(dá)推出的一款開源平臺(tái),不僅與QPU無關(guān),還實(shí)現(xiàn)了量子
    的頭像 發(fā)表于 05-14 11:45 ?696次閱讀

    NVIDIA 通過 CUDA-Q 平臺(tái)為全球各地的量子計(jì)算中心提供加速

    —— NVIDIA 于今日宣布將通過開源的 NVIDIA CUDA-Q? 量子計(jì)算平臺(tái),助力全球各地的國(guó)家級(jí)超算中心加快量子計(jì)算的研究發(fā)展。 ? 德國(guó)、日本和波蘭的超算中心將使用該平臺(tái)來賦能他們由 NVIDIA
    發(fā)表于 05-13 15:21 ?215次閱讀
    NVIDIA 通過 <b class='flag-5'>CUDA</b>-Q 平臺(tái)為全球各地的量子計(jì)算中心提供加速

    Keil使用AC6編譯提示CUDA版本過高怎么解決?

    \' ArmClang: warning: Unknown CUDA version 10.2. Assuming the latest supported version 10.1
    發(fā)表于 04-11 07:56

    英偉達(dá)AI霸主地位遭巨頭聯(lián)手挑戰(zhàn),CUDA壟斷遭破局

    據(jù)最新外媒報(bào)道,科技界的巨頭們——高通、谷歌和英特爾等,已經(jīng)聯(lián)手向英偉達(dá)發(fā)起了一場(chǎng)挑戰(zhàn),意圖打破其在CUDA平臺(tái)上的壟斷局面。
    的頭像 發(fā)表于 03-28 14:39 ?1028次閱讀

    摩爾線程MUSA/MUSIFY與英偉達(dá)CUDA無依賴,開發(fā)者無憂

    首先,摩爾線程MUSA/MUSIFY并不受到英偉達(dá)CUDA這項(xiàng)條款的限制,使用者可以放心地使用其相關(guān)內(nèi)容。MUSA即摩爾線程自行研發(fā),享有高度自主知識(shí)產(chǎn)權(quán)的全功能GPU先進(jìn)計(jì)算統(tǒng)一系統(tǒng)架構(gòu);
    的頭像 發(fā)表于 03-06 09:22 ?1381次閱讀

    GPU CUDA 編程的基本原理是什么

    神經(jīng)網(wǎng)絡(luò)能加速的有很多,當(dāng)然使用硬件加速是最可觀的了,而目前除了專用的NPU(神經(jīng)網(wǎng)絡(luò)加速單元),就屬于GPU對(duì)神經(jīng)網(wǎng)絡(luò)加速效果最好了
    的頭像 發(fā)表于 03-05 10:26 ?893次閱讀
    GPU <b class='flag-5'>CUDA</b> <b class='flag-5'>編程</b>的基本原理是什么