GPU、CPU的異同


一、概念

  CPU(Center Processing Unit)即中央處理器,GPU(Graphics Processing Unit)即圖形處理器。

二、CPU和GPU的相同之處

  兩者都有總線和外界聯系,有自己的緩存體系,以及數字和邏輯運算單元,兩者都為了完成計算任務而設計。

三、CPU和GPU的不同之處

  CPU雖然有多核,但一般也就幾個,每個核都有足夠大的緩存和足夠多的數字和邏輯運算單元,需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理,並輔助有很多加速分支判斷甚至更復雜的邏輯判斷的硬件;

  GPU的核數遠超CPU,被稱為眾核(NVIDIA Fermi有512個核)。每個核擁有的緩存大小相對小,數字邏輯運算單元也少而簡單(GPU初始時在浮點計算上一直弱於CPU),面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境。

四、結論

  CPU擅長處理具有復雜計算步驟和復雜數據依賴的計算任務,如分布式計算,數據壓縮,人工智能,物理模擬,以及其他很多很多計算任務等。

  GPU由於歷史原因,是為了視頻游戲而產生的(至今其主要驅動力還是不斷增長的視頻游戲市場),在三維游戲中常常出現的一類操作是對海量數據進行相同的操作,如:對每一個頂點進行同樣的坐標變換,對每一個頂點按照同樣的光照模型計算顏色值。GPU的眾核架構非常適合把同樣的指令流並行發送到眾核上,采用不同的輸入數據執行。在2003-2004年左右,圖形學之外的領域專家開始注意到GPU與眾不同的計算能力,開始嘗試把GPU用於通用計算(即GPGPU)。之后NVIDIA發布了CUDA,AMD和Apple等公司也發布了OpenCL,GPU開始在通用計算領域得到廣泛應用,包括:數值分析,海量數據處理(排序,Map-Reduce等),金融分析等等。

  GPU是基於大的吞吐量設計的,特點是有很多的ALU和很少的cache。CPU擅長邏輯控制,串行的運算。和通用類型數據運算不同,GPU擅長的是大規模並發計算,這也正是密碼破解等所需要的。所以GPU除了圖像處理,也越來越多的參與到計算當中來。

  GPU的工作大部分就是這樣,計算量大,但沒什么技術含量,而且要重復很多很多次。就像你有個工作需要算幾億次一百以內加減乘除一樣,最好的辦法就是雇上幾十個小學生一起算,一人算一部分,反正這些計算也沒什么技術含量,純粹體力活而已。而CPU就像老教授,積分微分都會算,就是工資高,一個老教授資頂二十個小學生,你要是富士康你雇哪個?純粹的人海戰術。這種策略基於一個前提,就是小學生A和小學生B的工作沒有什么依賴性,是互相獨立的。很多涉及到大量計算的問題基本都有這種特性,比如你說的破解密碼,挖礦和很多圖形學的計算。這些計算可以分解為多個相同的簡單小任務,每個任務就可以分給一個小學生去做。但還有一些任務涉及到“流”的問題。比如你去相親,雙方看着順眼才能繼續發展。總不能你這邊還沒見面呢,那邊找人把證都給領了。這種比較復雜的問題都是CPU來做的。

  總而言之,CPU和GPU因為最初用來處理的任務就不同,所以設計上有不小的區別。而某些任務和GPU最初用來解決的問題比較相似,所以用GPU來算了。GPU的運算速度取決於雇了多少小學生,CPU的運算速度取決於請了多么厲害的教授。教授處理復雜任務的能力是碾壓小學生的,但是對於沒那么復雜的任務,還是頂不住人多。當然現在的GPU也能做一些稍微復雜的工作了,相當於升級成初中生高中生的水平。但還需要CPU來把數據喂到嘴邊才能開始干活,究竟還是靠CPU來管的。

Ps.什么類型的程序適合在GPU上運行?

  (1)計算密集型的程序。所謂計算密集型(Compute-intensive)的程序,就是其大部分運行時間花在了寄存器運算上,寄存器的速度和處理器的速度相當,從寄存器讀寫數據幾乎沒有延時。可以做一下對比,讀內存的延遲大概是幾百個時鍾周期;讀硬盤的速度就不說了,即便是SSD, 也實在是太慢了。

  (2)易於並行的程序。GPU其實是一種SIMD(Single Instruction Multiple Data)架構, 他有成百上千個核,每一個核在同一時間最好能做同樣的事情。

    當程序員為CPU編寫程序時,他們傾向於利用復雜的邏輯結構優化算法從而減少計算任務的運行時間,即Latency。當程序員為GPU編寫程序時,則利用其處理海量數據的優勢,通過提高總的數據吞吐量(Throughput)來掩蓋Lantency。目前,CPU和GPU的區別正在逐漸縮小,因為GPU也在處理不規則任務和線程間通信方面有了長足的進步。另外,功耗問題對於GPU比CPU更嚴重。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM