并行計算: 是一種將特定計算荔燎,分解成可以同時進行的獨立的較小計算的計算方式耻姥。然后重新組合或同步計算結(jié)果,形成原來較大計算的結(jié)果
? ? ? ? ? ? eg: 八核手機比單核手機執(zhí)行更快有咨,因為八核用的原理是因為執(zhí)行了并行計算
CPU:中央處理器琐簇,主要為串行指令而優(yōu)化(大白話:響應(yīng)速度快)。
GPU:圖形處理器座享,也稱顯示芯片等婉商,主要為大規(guī)模的并行運算而優(yōu)化(大白話:能同時處理大規(guī)模數(shù)據(jù)計算)
? ? ? ? ? >> 內(nèi)核數(shù)量:處理器中實際執(zhí)行計算的單元,CPU通常有4個渣叛、8個或16個核心丈秩,而GPU可能有數(shù)千個
顯卡:是硬件,? 主流顯卡是Nvidia的GPU,
? ? ? ? 顯卡系列:GeForce淳衙、Quadro癣籽、Tesla挽唉、p40
驅(qū)動:是軟件,沒有顯卡驅(qū)動筷狼,就不能識別GPU硬件,不能調(diào)用其計算資源匠童,Nvidia在Linux上的驅(qū)動安裝特別麻煩
CUDA:是Nvidia推出的只能用于自家GPU的并行計算框架(CUDA是軟件架構(gòu))埂材。只有安裝這個框架才能夠進行復(fù)雜的并行計算
問1? 為什么深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)需要GPU?
? ? ? 答案:a、深度學(xué)習(xí)本身需要大量計算,? GPU的并行計算能力汤求,恰當?shù)貪M足了深度學(xué)習(xí)的需求
? ? ? ? ? ? ? ? ?b俏险、 本質(zhì)上,神經(jīng)網(wǎng)絡(luò)是高度并行的(embarrassingly parallel)扬绪,用神經(jīng)網(wǎng)絡(luò)做的許多計算都可以很容易地分解成更小的計算竖独,每個計算都是獨立于其他計算的,這意味著任何計算都不依賴于任何其他計算的結(jié)果? ? 例如:卷積
問2:CUDA和深度學(xué)習(xí)框架關(guān)系:
?答: 主流的深度學(xué)習(xí)框架也都是基于CUDA進行GPU并行加速的挤牛,幾乎無一例外莹痢。還有一個叫做cudnn,是針對深度卷積神經(jīng)網(wǎng)絡(luò)的加速庫
問3: GPU一定比CPU快么墓赴?
? ? ? ? GPU只對特定的(專門的)任務(wù)更快竞膳, 如果一個任務(wù)已經(jīng)足夠小了,GPU不見得比CPU快诫硕,那么是沒必要遷移到GPU工作的坦辟。
? ? ? ? CPU需要很強的通用性來處理各種不同的數(shù)據(jù)類型,同時又要邏輯判斷又會引入大量的分支跳轉(zhuǎn)和中斷的處理章办。這些都使得CPU的內(nèi)部結(jié)構(gòu)異常復(fù)雜
? ? ? ? GPU面對的則是類型高度統(tǒng)一的锉走、相互無依賴的大規(guī)模數(shù)據(jù)和不需要被打斷的純凈的計算環(huán)境
問4:? 什么類型的程序適合在GPU上運行?
? ? ? ? 1藕届、計算密集型的程序挪蹭, 就是其大部分運行時間花在了寄存器運算上,寄存器的速度和處理器的速度相當翰舌,從寄存器讀寫數(shù)據(jù)幾乎沒有延時嚣潜,但是讀內(nèi)存的延遲大概是幾百個時鐘周期
? ? ? ? 2、易于并行的程序椅贱, GPU其實是一種SIMD(Single Instruction Multiple Data)架構(gòu)懂算, 他有成百上千個核,每一個核在同一時間最好能做同樣的事情