談GPU的作用、原理及與CPU、DSP的區別
GPU和CPU的區別是什么?
本文引用地址:http://dyxdggzs.com/article/274881.htm要解釋兩者的區別,要先明白兩者的相同之處:兩者都有總線(xiàn)和外界聯(lián)系,有自己的緩存體系,以及數字和邏輯運算單元。一句話(huà),兩者都為了完成計算任務(wù)而設計。
兩者的區別在于存在于片內的緩存體系和數字邏輯運算單元的結構差異:CPU雖然有多核,但總數沒(méi)有超過(guò)兩位數,每個(gè)核都有足夠大的緩存和足夠多的數字和邏輯運算單元,并輔助有很多加速分支判斷甚至更復雜的邏輯判斷的硬件;GPU的核數遠超CPU,被稱(chēng)為眾核(NVIDIA Fermi有512個(gè)核)。每個(gè)核擁有的緩存大小相對小,數字邏輯運算單元也少而簡(jiǎn)單(GPU初始時(shí)在浮點(diǎn)計算上一直弱于CPU)。從結果上導致CPU擅長(cháng)處理具有復雜計算步驟和復雜數據依賴(lài)的計算任務(wù),如分布式計算,數據壓縮,人工智能,物理模擬,以及其他很多很多計算任務(wù)等。GPU由于歷史原因,是為了視頻游戲而產(chǎn)生的(至今其主要驅動(dòng)力還是不斷增長(cháng)的視頻游戲市場(chǎng)),在三維游戲中常常出現的一類(lèi)操作是對海量數據進(jìn)行相同的操作,如:對每一個(gè)頂點(diǎn)進(jìn)行同樣的坐標變換,對每一個(gè)頂點(diǎn)按照同樣的光照模型計算顏色值。GPU的眾核架構非常適合把同樣的指令流并行發(fā)送到眾核上,采用不同的輸入數據執行。在2003-2004年左右,圖形學(xué)之外的領(lǐng)域專(zhuān)家開(kāi)始注意到GPU與眾不同的計算能力,開(kāi)始嘗試把GPU用于通用計算(即GPGPU)。之后NVIDIA發(fā)布了CUDA,AMD和Apple等公司也發(fā)布了OpenCL,GPU開(kāi)始在通用計算領(lǐng)域得到廣泛應用,包括:數值分析,海量數據處理(排序,Map-Reduce等),金融分析等等。
簡(jiǎn)而言之,當程序員為CPU編寫(xiě)程序時(shí),他們傾向于利用復雜的邏輯結構優(yōu)化算法從而減少計算任務(wù)的運行時(shí)間,即Latency.當程序員為GPU編寫(xiě)程序時(shí),則利用其處理海量數據的優(yōu)勢,通過(guò)提高總的數據吞吐量(Throughput)來(lái)掩蓋Lantency.目前,CPU和GPU的區別正在逐漸縮小,因為GPU也在處理不規則任務(wù)和線(xiàn)程間通信方面有了長(cháng)足的進(jìn)步。另外,功耗問(wèn)題對于GPU比CPU更嚴重。
總的來(lái)講,GPU和CPU的區別是個(gè)很大的話(huà)題,甚至可以花一個(gè)學(xué)期用32個(gè)學(xué)時(shí)十幾次講座來(lái)講。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
評論