GPGPU全稱General Purpose Computing on GPU,即在圖形處理器上進行通用計算。其中第一個“GP”通用目的(GeneralPurpose)而第二個“GP”則表示圖形處理(GraphicProcess),這兩個“GP”搭配起來即“通用圖形處理”。再加上“U”(Unit)就成為了完整的通用處理器。 人們一直在尋找各種加速圖像處理的方法,然而受到CPU本身在浮點計算能力上的限制,對於那些需要高密度計算的圖像處理操作,過去傳統的在CPU上實現的方法,並沒有在處理性能與效率上有很大進步。隨著可程式圖形處理器單元(GPU)在性能上的飛速發展,利用GPU加速圖像處理的技術逐漸成為研究熱點。
目前擁有雙向發展的AMD更需要讓GPU有個完美的發展前景,在GPU中基於了一套完整的DirectX、OpenGL開放標準,並且在發布了開源工具、Linux開源驅動之後又繼續向外界公開GPU的微代碼。AMD認為只有開放的標準才能讓自己走的更遠。而且AMD也希望與其他廠商共同前進集思廣益,共同打造出一個完美開放式的通用計算標準,雖然NVIDIA也加入了開源的行列,但AMD認為CUDA方式並不符合自己的開放方向而放棄採用。
在通用計算和圖形處理領域裡可以說是三國鼎立。Intel堪稱通用計算的龍頭,但是只有CPU而沒有真正獨立的GPU,雖然在各種宣傳中一再強調CPU的重要性,但從其收購Havok來看,Intel自然也想在圖形處理領域裡分一杯羹。而圖形領域裡的龍頭NVIDIA則與Intel相反,其只擁有GPU而沒有完整獨立的CPU。但最近兩年的發展趨勢不難看出NVIDIA正在努力的向通用計算領域裡挺進。而AMD在成功收購ATI之後,則是同時即擁有完整獨立的GPU和CPU,而GPGPU的概念也再一次成為關注焦點。
GPU的競爭遠比CPU的競爭來得激烈。通用PC的CPU就只有英特爾和AMD兩家大廠。而在GPU方面領先的是Nvdia和ATi兩家廠商,但能生產中低端產品的還有Intel、S3等好幾家廠商。它們的產品雖然不如前兩家,但在很多套用方面也能滿足用戶的需要,所以N記和A記只有拚命往前跑才不會死掉。CPU廠商沒有採用GPU的先進工藝是因為CPU廠商都有自己投資的生產線,不可能一下把原來的生產線都淘汰了上新的生產線,那樣做可能連當初投入的資金都難以收回。而GPU廠商由於種種原因,一般都是自己設計由別人代工的,比如找台積電代工。代工廠商為了能接到業務,只有不停升級自己的生產設備,這樣才能生存下來。所以造成以上原因。
就如你所說的一樣,CPU除了處理遊戲的AI,情節等方面的數據外,對於有些圖像方面也是由它完成的。當微軟每次發布新的DirectX時,並不是每款GPU都能支持DirectX新的特性,所以有些圖像方面的任務還得由CPU來完成。還有有些特性比如重力特性以前是由CPU來完成,現在有些GPU也能支持了,這些任務就由GPU來完成了。
另外
現在AMD收購了ATi顯示卡晶片的設計廠商,AMD看到今後CPU和GPU只有走一條融合的道路才能地競爭中占得先機。CPU和GPU如何配合默契才能最大地提高工作效率是AMD現在考慮的問題,也是英特爾的問題。
微軟發布windows7 其中一個顯著特性就是聯合GPU和CPU的強大實力,提升GPU在硬體使用的價值,在Windows7中,CPU與GPU組成了協同處理環境。CPU運算非常複雜的序列代碼,而GPU則運行大規模並行應用程式。微軟利用DirectX Compute將GPU作為作業系統的核心組成部分之一。DirectX Compute。它讓開發人員能夠利用 GPU的大規模並行計算能力,創造出引人入勝的消費級和專業級計算應用程式。簡單的說,DirectX Compute就是微軟開發的GPU通用計算接口,欲統一GPU通用計算標準。也就是說windows7 以後GPU的硬體地位將僅次於CPU,發揮出更大的效用。
開放圖形庫(英語:Open Graphics Library,縮寫為OpenGL)是個定義了一個跨程式語言、跨平台的應用程式接口(API)的規範,它用於生成二維、三維圖像。這個接口由近三百五十個不同的函式調用組成,用來從簡單的圖形比特繪製複雜的三維景象。而另一種程式接口系統是僅用於Microsoft Windows上的Direct3D。OpenGL常用於CAD、虛擬實境、科學可視化程式和電子遊戲開發。
OpenGL的高效實現(利用了圖形加速硬體)存在於Windows,很多UNIX平台和Mac OS。這些實現一般由顯示設備廠商提供,而且非常依賴於該廠商提供的硬體。開放原始碼庫Mesa是一個純基於軟體的圖形API,它的代碼兼容於OpenGL。但是,由於許可證的原因,它只聲稱是一個“非常相似”的API。
OpenGL規範由1992年成立的OpenGL架構評審委員會(ARB)維護。ARB由一些對創建一個統一的、普遍可用的API特別感興趣的公司組成。根據OpenGL官方網站,2002年6月的ARB投票成員包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是創立成員之一,但已於2003年3月退出。
OpenCL(OpenComputingLanguage,開放計算語言)是一個為異構平台編寫程式的框架,此異構平台可由CPU,GPU或其他類型的處理器組成。OpenCL由一門用於編寫kernels(在OpenCL設備上運行的函式)的語言(基於C99)和一組用於定義並控制平台的API組成。OpenCL提供了基於任務分區和數據分區的並行計算機制。
OpenCL類似於另外兩個開放的工業標準OpenGL和OpenAL,這兩個標準分別用於三維圖形和計算機音頻方面。OpenCL擴充了GPU圖形生成之外的能力。OpenCL由非盈利性技術組織Khronos Group掌管。
CUDA(ComputeUnifiedDeviceArchitecture,統一計算架構)是由NVIDIA所推出的一種集成技術,是該公司對於GPGPU的正式名稱。通過這個技術,用戶可利用NVIDIA的GeForce 8以後的GPU和較新的QuadroGPU進行計算。亦是首次可以利用GPU作為C-編譯器的開發環境。NVIDIA行銷的時候,往往將編譯器與架構混合推廣,造成混亂。實際上,CUDA可以兼容OpenCL或者自家的C-編譯器。無論是CUDA C-語言或是OpenCL,指令最終都會被驅動程式轉換成PTX代碼,交由顯示核心計算。