侵刪
筆記:
- GPU,是Graphics Processing Unit的簡寫,是現代顯卡中非常重要的一個部分,GPU是顯卡上的一塊芯片,就像CPU是主板上的一塊芯片。集成顯卡和獨立顯卡都是有GPU的。主要負責的任務是加速圖形處理速度。同時,GPU使顯卡減少了對CPU的依賴,並進行部分原本CPU的工作。
- GPU是顯示卡的“大腦”,它決定了該顯卡的檔次和大部分性能,同時也是2D顯示卡和3D顯示卡的區別依據。2D顯示芯片在處理3D圖像和特效時主要依賴CPU的處理能力,稱為“軟加速”。3D顯示芯片是將三維圖像和特效處理功能集中在顯示芯片內,也即所謂的“硬件加速”功能。
- 今天,GPU已經不再局限於3D圖形處理了,GPU通用計算技術發展已經引起業界不少的關注,事實也證明在浮點運算、並行計算等部分計算方面,GPU可以提供數十倍乃至於上百倍於CPU的性能,如此強悍的性能已經讓CPU廠商老大英特爾為未來而緊張。
- NVIDIA公司在1999年8月31日發布GeForce 256圖形處理芯片時首先提出GPU的概念。GPU之所以被稱為圖形處理器,最主要的原因是因為它可以進行幾乎全部與計算機圖形有關的數據運算,而這些在過去是CPU的專利。
- 人們希望將某些通用計算問題移植到GPU上來完成以提升效率,出現了所謂的GPGPU(General Purpose Graphic Process Unit),但是由於其開發難度較大,沒有被廣泛接受。
- 后來人們發現,GPU這么一個強大的器件只用於圖形處理太浪費了,它應該用來做更多的工作,例如浮點運算。怎么做呢?直接把浮點運算交給GPU是做不到的,因為它只能用於圖形處理(那個時候)。最容易想到的,是把浮點運算做一些處理,包裝成圖形渲染任務,然后交給GPU來做。這就是GPGPU(General Purpose GPU)的概念。不過這樣做有一個缺點,就是你必須有一定的圖形學知識,否則你不知道如何包裝。
- 2006年NVIDIA推出了第一款基於Tesla架構的GPU(G80),GPU已經不僅僅局限於圖形渲染,開始正式向通用計算領域邁進。
- 2007年6月,為了讓不懂圖形學知識的人也能體驗到GPU運算的強大,Nvidia公司又提出了CUDA的概念,同時也推出了CUDA(ComputerUnified Device Architecture計算統一設備結構)。CUDA 的編程語言基於標准C,因此任何有C 語言基礎的用戶都很容易地開發CUDA 的應用程序。由於這些特性,CUDA在推出后迅速發展,被廣泛應用於石油勘測、天文計算、流體力學模擬、分子動力學仿真、生物計算、圖像處理、音視頻編解碼等領域。
- GPU實際上是一組圖形函數的集合,而這些函數有硬件實現,只要用於3D游戲中物體移動時的坐標轉換及光源處理。以前,這些工作都是有CPU配合特定軟件進行的,GPU從某種意義上講就是為了在圖形處理過程中充當主角而出現的。
- 右圖就是一個簡單的GPU結構示意圖,一塊標准的GPU主要包括2D Engine、3D Engine、VideoProcessing Engine、FSAA Engine、顯存管理單元等。其中,3D運算中起決定作用的是3DEngine,這是現代3D顯卡的靈魂,也是區別GPU等級的重要標志。
- 隨着CUDA的進一步開發和完善,GPU 的運算能力也將得到進一步的強化。研究人員也已經開始使用CUDA,利用GPU數倍於CPU的浮點運算能力,進行各種各樣的科學模擬、運算。
- 曾經國內最快的超級計算機天河一號也采用了GPU處理器,其三分之二的計算能力由GPU處理器提供。
參考: What Is a GPU? Graphics Processing Units Defined
筆記:
- GPU vs. Graphics Card: What’s the Difference?
While the terms GPU and graphics card (or video card) are often used interchangeably, there is a subtle distinction between these terms. Much like a motherboard contains a CPU, a graphics card refers to an add-in board that incorporates the GPU. This board also includes the raft of components required to both allow the GPU to function and connect to the rest of the system.
- 其他看鏈接。
侵刪
筆記:
- 在早期的電腦並沒有GPU,圖像也是由CPU進行輸出。隨着計算機的發展,對實時圖像和視頻的需求大增,從而將圖形模塊從CPU中單獨拎出變成了顯卡。可以說CPU包攬了電腦中計算的所有部分,而GPU本是CPU中的一部分,特化了其圖形計算部分。所以可以看到,CPU與GPU設計的方向本來就是不同的。
- 為什么CPU和GPU大不相同?由於其設計目標的不同,它們分別針對了兩種不同的應用場景。CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理。這些都使得CPU的內部結構異常復雜。而GPU面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境。
-
於是CPU和GPU就呈現出非常不同的架構(示意圖):
圖片來自nVidia CUDA文檔。其中綠色的是計算單元,橙紅色的是存儲單元,橙黃色的是控制單元。
- CPU:核心數較少(通常幾個到十幾個),通用性較強。GPU:核心遠超CPU(現在英偉達的高端卡卡通常有幾千個了,但是GPU的核根本不是我們理解的“核”,是宣傳手段~)
-
2000多個核指的是sp(stream processor),只是ALU單元,不能算是核。GPU上真的可稱上核得叫SM(stream multiprocessor),SM才有完整得流水線,指令發射器等等。SM有多少呢?完整的NV fermi和開普勒架構只有16SM,但是呢,因為工藝的問題,旗艦型號一般只有15個,閹了一個……喊2000多個只不過是宣傳罷了。
- GPU的核其實不叫核,而是計算單元,很多的計算單元組合一個“小核”,然后若干個小核組成一個大核,而GPU就是由多個大核組成的,一個計算單元能開一個線程,FLOPs是CPU的幾十倍,所以適合做大型的parallel和float computing。CPU的物理核和GPU的“核”不是一個東西,CPU的核是通用計算,不是專門為矩陣乘法設計的,控制流比GPU強太多。
- GPU采用了數量眾多的計算單元和超長的流水線,但只有非常簡單的控制邏輯並省去了Cache。而CPU不僅被Cache占據了大量空間,而且還有有復雜的控制邏輯和諸多優化電路,相比之下計算能力只是CPU很小的一部分。
- CPU 力氣大啥P事都能干,還要協調。GPU 是CPU那家伙的小弟,老大讓他處理圖形,這方面處理簡單,但是量大,老大雖然能處理,可是老大只有那么幾個兄弟,所以不如交給小弟處理了,小弟兄弟多,有數百至數千個,而且是專門只干這行和只能干這行。
- 一個是通用計算,一個是專用計算。CPU主要負責操作系統和應用程序,GPU主要負責跟顯示相關的數據處理,GPU的活CPU一般都可以干,但是效率低下,現在也有GPGPU,可以干點CPU的活。