亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深度學(xué)習(xí)之GPU,CUDA和cuDNN的理解

 更新時間:2023年02月13日 14:13:17   作者:AI之路  
Cuda和cudnn是支持NVIDIA支持GPU的兩個庫,分別用于高性能計(jì)算和深度神經(jīng)網(wǎng)絡(luò)計(jì)算的支持,下面這篇文章主要給大家介紹了關(guān)于深度學(xué)習(xí)之GPU,CUDA和cuDNN的理解,需要的朋友可以參考下

我們知道做深度學(xué)習(xí)離不開GPU,不過一直以來對GPU和CPU的差別,CUDA以及cuDNN都不是很了解,所以找了些資料整理下,希望不僅可以幫助自己理解,也能夠幫助到其他人理解。

先來講講CPU和GPU的關(guān)系和差別吧。截圖來自資料1(CUDA的官方文檔):

從上圖可以看出GPU(圖像處理器,Graphics Processing Unit)和CPU(中央處理器,Central Processing Unit)在設(shè)計(jì)上的主要差異在于GPU有更多的運(yùn)算單元(如圖中綠色的ALU),而Control和Cache單元不如CPU多,這是因?yàn)镚PU在進(jìn)行并行計(jì)算的時候每個運(yùn)算單元都是執(zhí)行相同的程序,而不需要太多的控制。Cache單元是用來做數(shù)據(jù)緩存的,CPU可以通過Cache來減少存取主內(nèi)存的次數(shù),也就是減少內(nèi)存延遲(memory latency)。GPU中Cache很小或者沒有,因?yàn)镚PU可以通過并行計(jì)算的方式來減少內(nèi)存延遲。因此CPU的Cahce設(shè)計(jì)主要是實(shí)現(xiàn)低延遲,Control主要是通用性,復(fù)雜的邏輯控制單元可以保證CPU高效分發(fā)任務(wù)和指令。所以CPU擅長邏輯控制,是串行計(jì)算,而GPU擅長高強(qiáng)度計(jì)算,是并行計(jì)算。打個比方,GPU就像成千上萬的苦力,每個人干的都是類似的苦力活,相互之間沒有依賴,都是獨(dú)立的,簡單的人多力量大;CPU就像包工頭,雖然也能干苦力的活,但是人少,所以一般負(fù)責(zé)任務(wù)分配,人員調(diào)度等工作。

可以看出GPU加速是通過大量線程并行實(shí)現(xiàn)的,因此對于不能高度并行化的工作而言,GPU就沒什么效果了。而CPU則是串行操作,需要很強(qiáng)的通用性,主要起到統(tǒng)管和分配任務(wù)的作用。

————————————————————————-華麗的分割線——————————————————————-

CUDA的官方文檔(參考資料1)是這么介紹CUDA的:a general purpose parallel computing platform and programming model that leverages the parallel compute engine in NVIDIA GPUs to solve many complex computational problems in a more efficient way than on a CPU.

換句話說CUDA是NVIDIA推出的用于自家GPU的并行計(jì)算框架,也就是說CUDA只能在NVIDIA的GPU上運(yùn)行,而且只有當(dāng)要解決的計(jì)算問題是可以大量并行計(jì)算的時候才能發(fā)揮CUDA的作用。

接下來這段話摘抄自資料2。在 CUDA 的架構(gòu)下,一個程序分為兩個部份:host 端和 device 端。Host 端是指在 CPU 上執(zhí)行的部份,而 device 端則是在顯示芯片上執(zhí)行的部份。Device 端的程序又稱為 “kernel”。通常 host 端程序會將數(shù)據(jù)準(zhǔn)備好后,復(fù)制到顯卡的內(nèi)存中,再由顯示芯片執(zhí)行 device 端程序,完成后再由 host 端程序?qū)⒔Y(jié)果從顯卡的內(nèi)存中取回。

接下來這段話摘抄自資料2。在 CUDA 架構(gòu)下,顯示芯片執(zhí)行時的最小單位是thread。數(shù)個 thread 可以組成一個block。一個 block 中的 thread 能存取同一塊共享的內(nèi)存,而且可以快速進(jìn)行同步的動作。每一個 block 所能包含的 thread 數(shù)目是有限的。不過,執(zhí)行相同程序的 block,可以組成grid。不同 block 中的 thread 無法存取同一個共享的內(nèi)存,因此無法直接互通或進(jìn)行同步。因此,不同 block 中的 thread 能合作的程度是比較低的。不過,利用這個模式,可以讓程序不用擔(dān)心顯示芯片實(shí)際上能同時執(zhí)行的 thread 數(shù)目限制。例如,一個具有很少量執(zhí)行單元的顯示芯片,可能會把各個 block 中的 thread 順序執(zhí)行,而非同時執(zhí)行。不同的 grid 則可以執(zhí)行不同的程序(即 kernel)。

————————————————————————-華麗的分割線——————————————————————-

cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的針對深度神經(jīng)網(wǎng)絡(luò)的加速庫,是一個用于深層神經(jīng)網(wǎng)絡(luò)的GPU加速庫。如果你要用GPU訓(xùn)練模型,cuDNN不是必須的,但是一般會采用這個加速庫。

  • 參考資料1:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#thread-hierarchy
  • 參考資料2:http://www.smallgui.com/wp-content/uploads/2016/04/深入淺出談CUDA.pdf

補(bǔ)充:查詢版本命令

ubuntu:

cuda 版本 
nvcc -V
cat /usr/local/cuda/version.txt

cudnn 版本 
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

查看Nvidia GPU版本
nvidia-smi

//10s顯示一次
watch -n 10 nvidia-smi

nvidia-smi -l

到此這篇關(guān)于深度學(xué)習(xí)之GPU,CUDA和cuDNN的理解的文章就介紹到這了,更多相關(guān)GPU,CUDA和cuDNN理解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python-json校驗(yàn)-jsonpath解析

    python-json校驗(yàn)-jsonpath解析

    這篇文章主要介紹了python-json校驗(yàn)-jsonpath,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python RC4加密操作示例【測試可用】

    python RC4加密操作示例【測試可用】

    這篇文章主要介紹了python RC4加密操作,結(jié)合實(shí)例形式分析了python實(shí)現(xiàn)RC4加密功能的具體操作步驟與相關(guān)問題解決方法,需要的朋友可以參考下
    2019-09-09
  • Python列表計(jì)數(shù)及插入實(shí)例

    Python列表計(jì)數(shù)及插入實(shí)例

    這篇文章主要介紹了Python列表計(jì)數(shù)及插入的用法,以實(shí)例形式對列表的計(jì)數(shù)與插入用法做了較為詳細(xì)的分析,需要的朋友可以參考下
    2014-12-12
  • Python實(shí)現(xiàn)的可可愛愛的小粽子詳解

    Python實(shí)現(xiàn)的可可愛愛的小粽子詳解

    我突發(fā)奇想做一個關(guān)于粽子的小游戲,基本原理:操控粽子吃掉愛心,即可增加分?jǐn)?shù),經(jīng)過朋友game多測嘗試最終完成小游戲
    2022-06-06
  • python圖形用戶界面tkinter之標(biāo)簽Label的使用說明

    python圖形用戶界面tkinter之標(biāo)簽Label的使用說明

    這篇文章主要介紹了python圖形用戶界面tkinter之標(biāo)簽Label的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)

    詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)

    這篇文章主要介紹了詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • 基于pytorch中的Sequential用法說明

    基于pytorch中的Sequential用法說明

    這篇文章主要介紹了基于pytorch中的Sequential用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 老生常談Python序列化和反序列化

    老生常談Python序列化和反序列化

    下面小編就為大家?guī)硪黄仙U凱ython序列化和反序列化。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • cv2.imread?和?cv2.imdecode?用法及區(qū)別

    cv2.imread?和?cv2.imdecode?用法及區(qū)別

    對于路徑中含有中文的圖像,直接用cv2.imread讀取會報(bào)錯,上次看到有大佬使用cv2.imdecode就可以正常讀取,有點(diǎn)好奇,所以今天來記錄下二者用法和區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • Python 第一步 hello world

    Python 第一步 hello world

    Python 第一步 hello world 入門學(xué)習(xí)。
    2009-09-09

最新評論