1. 程式人生 > >顯示卡、GPU和CUDA簡介

顯示卡、GPU和CUDA簡介

宣告: 本文部分內容來自網路。由於知識有限,有錯誤的地方還請指正。本帖為自己學習過程的記錄帖,如果對您有幫助,我將榮幸之至。歡迎和我一起討論,聯絡方式:新浪微博 @躺在草原看夕陽。
什麼是顯示卡?     顯示卡(Video card,Graphics card)全稱顯示介面卡,又稱顯示介面卡,是計算機最基本配置、最重要的配件之一。就像電腦聯網需要網絡卡,主機裡的資料要顯示在螢幕上就需要顯示卡。因此,顯示卡是電腦進行數模訊號轉換的裝置,承擔輸出顯示圖形的任務。具體來說,顯示卡接在電腦主機板上,它將電腦的數字訊號轉換成模擬訊號讓顯示器顯示出來。     原始的顯示卡一般都是整合在主機板上,只完成最基本的訊號輸出工作,並不用來處理資料。隨著顯示卡的迅速發展,就出現了GPU的概念,顯示卡也分為獨立顯示卡和整合顯示卡(見附1)。 什麼是GPU?
    GPU這個概念是由Nvidia公司於1999年提出的。GPU是顯示卡上的一塊晶片,就像CPU是主機板上的一塊晶片。那麼1999年之前顯示卡上就沒有GPU嗎?當然有,只不過那時候沒有人給它命名,也沒有引起人們足夠的重視,發展比較慢。     自Nvidia提出GPU這個概念後,GPU就進入了快速發展時期。簡單來說,其經過了以下幾個階段的發展: 1)僅用於圖形渲染,此功能是GPU的初衷,這一點從它的名字就可以看出:Graphic Processing Unit,圖形處理單元; 2)後來人們發現,GPU這麼一個強大的器件只用於圖形處理太浪費了,它應該用來做更多的工作,例如浮點運算。怎麼做呢?直接把浮點運算交給GPU是做不到的,因為它只能用於圖形處理(那個時候)。最容易想到的,是把浮點運算做一些處理,包裝
成圖形渲染任務,然後交給GPU來做。這就是GPGPU(General Purpose GPU)的概念。不過這樣做有一個缺點,就是你必須有一定的圖形學知識,否則你不知道如何包裝。 3)於是,為了讓不懂圖形學知識的人也能體驗到GPU運算的強大,Nvidia公司又提出了CUDA的概念。 什麼是CUDA?     CUDA(Compute Unified Device Architecture),通用平行計算架構,是一種運算平臺。它包含CUDA指令集架構以及GPU內部的平行計算引擎。你只要使用一種類似於C語言的CUDA C語言,就可以開發CUDA程式,從而可以更加方便的利用GPU強大的計算能力,而不是像以前那樣先將計算任務包裝成圖形渲染任務,再交由GPU處理。 注意,並不是所有GPU都支援CUDA。
CPU和GPU的關係     在沒有GPU之前,基本上所有的任務都是交給CPU來做的。有GPU之後,二者就進行了分工,CPU負責邏輯性強的事物處理和序列計算,GPU則專注於執行高度執行緒化的並行處理任務(大規模計算任務)。為什麼這麼分工?這是由二者的硬體構成決定的。     可以看出,CPU是“主(host)”而GPU是“從(device)”,GPU無論發展得多快,都只能是替CPU分擔工作,而不是取代CPU。 附1:獨立顯示卡和整合顯示卡的區別。     所謂整合,是指顯示卡整合在主機板上,不能隨意更換。而獨立顯示卡是作為一個獨立的器件插在主機板的AGP介面上的,可以隨時更換升級。     另外,整合顯示卡使用實體記憶體,而獨立顯示卡有自己的視訊記憶體。一般而言,同期推出的獨立顯示卡的效能和速度要比整合顯示卡好、快。     值得一提的是,整合顯示卡和獨立顯示卡都是有GPU的。 附2:Nvidia顯示卡分類。 GeForce系列:家庭娛樂。打遊戲必備; Quadro系列:專業繪圖設計。視訊渲染,經常使用3ds Max、Maya等軟體的必備。 Tesla系列:高階顯示卡,用於大規模的平行計算。土豪必備。     另外,目前比較流行的物理引擎PhysX,並不是所有顯示卡都支援。官方文件上說GeForce 8及之後的顯示卡都支援。
結束語: CUDA只是一種平行計算架構,相關的概念還有OpenCL、OpenMP等。我們下期再介紹。