一、Why GPU
其實GPU計算比CPU并不是“效果好”,而是“速度快”。
計算就是計算,數學上都是一樣的,1+1用什么算都是2,CPU算神經網絡也是可以的,算出來的神經網絡放到實際應用中效果也很好,只不過速度會很慢罷了。
GPU的起源
GPU全稱叫做graphics processing unit,圖形處理器,顧名思義就是處理圖形的。
電腦顯示器上顯示的圖像,在顯示在顯示器上之前,要經過一些列處理,這個過程有個專有的名詞叫“渲染”。以前的計算機上沒有GPU,渲染就是CPU負責的。渲染是個什么操作呢,其實就是做了一系列圖形的計算,但這些計算往往非常耗時,占用了CPU的一大部分時間。而CPU還要處理計算機器許多其他任務。因此就專門針對圖形處理的這些操作設計了一種處理器,也就是GPU。這樣CPU就可以從繁重的圖形計算中解脫出來。
由于GPU是專門為了渲染設計的,那么他也就只能做渲染的那些事情。
渲染這個過程具體來說就是幾何點位置和顏色的計算,這兩者的計算在數學上都是用四維向量和變換矩陣的乘法,因此GPU也就被設計為專門適合做類似運算的專用處理器了。為什么說專用呢,因為很多事情他做不了。
CPU通用性強,但是專用領域性能低。工程就是折衷,這項強了,別的就弱了。再后來游戲、3D設計對渲染的要求越來越高,GPU的性能越做越強。論純理論計算性能,要比CPU高出幾十上百倍。
人們就想了,既然GPU這么強,那用GPU做計算是不是相比CPU速度能大大提升呢?于是就有了GPGPU(general purpose GPU,通用計算GPU)這個概念。但我們前面提到了,GPU是專門為了圖像渲染設計的,他只適用于那些操作。但幸運的是有些操作和GPU本職能做的那些東西非常像,那就可以通過GPU提高速度,比如深度學習。
深度學習中一類成功應用的技術叫做卷積神經網絡CNN,這種網絡數學上就是許多卷積運算和矩陣運算的組合,而卷積運算通過一定的數學手段也可以通過矩陣運算完成。這些操作和GPU本來能做的那些圖形點的矩陣運算是一樣的。因此深度學習就可以非常恰當地用GPU進行加速了。
以前GPGPU(通用GPU)概念不是很火熱,GPU設計出來就是為了圖形渲染。想要利用GPU輔助計算,就要完全遵循GPU的硬件架構。而現在GPGPU越來越流行,廠家在設計和生產GPU的時候也會照顧到計算領域的需求了。
二、GPGPU與GPU的區別
GPU的產生是為了解決圖形渲染效率的問題,但隨著技術進步,GPU越來越強大,尤其是shader出現之后(這個允許我們在GPU上編程),GPU能做的事越來越多,不再局限于圖形領域,也就有人動手將其能力擴展到其他計算密集的領域,這就是GP(General Purpose)GPU。
三、為什么快
比如說你用美圖xx軟件,給一張圖片加上模糊效果的時候,CPU會這么做:
使用一個模糊濾鏡算子的小窗口,從圖片的左上角開始處理,并從左往右,再從左往右進行游走處理,直到整個圖片被處理完成。因為CPU只有一個或者少數幾個核,所以執行這種運算的時候,只能老老實實從頭遍歷到最后。
但是有一些聰明的讀者會發現,每個窗口在處理圖片的過程中,都是獨立的,相互沒有關系的。那么同時用幾個濾鏡窗口來處理是不是更快一些? 于是我們有了GPU, 一般的GPU都有幾百個核心,意味著,我們可以同時有好幾百個濾鏡窗口來處理這張圖片。
所以說,GPU起初的設計目標就是為了處理這種圖形圖像的渲染工作,而這種工作的特性就是可以分布式、每個處理單元之間較為獨立,沒有太多的關聯。而一部分機器學習算法,比如遺傳算法,神經網絡等,也具有這種分布式及局部獨立的特性(e.g.比如說一條神經網絡中的鏈路跟另一條鏈路之間是同時進行計算,而且相互之間沒有依賴的),這種情況下可以采用大量小核心同時運算的方式來加快運算速度。
-
gpu
+關注
關注
28文章
4760瀏覽量
129129 -
人工智能
+關注
關注
1792文章
47492瀏覽量
239175 -
機器學習
+關注
關注
66文章
8428瀏覽量
132831
原文標題:為何GPU可以用于加速人工智能或者機器學習的計算速度?
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論