gpu對編譯有影響嗎
Ⅰ 關於GPU的問題!
目錄:
第一章:第二代及以後的GPU工作流程簡介
第二章:DirectX8和DirectX9 GPU的傳統流水線
第三章:頂點和像素操作指令
第四章:傳統GPU指令的執行
第五章:統一渲染架構
第六章:G80和R600的統一渲染架構實現
第七章:G80與R600效能對比
第八章:尷尬的中端--Geforce8600簡析
前面4章 我將先簡要介紹下DirectX8/9顯卡的核心----圖形處理單元GPU的工作流程和指令處理情況
從第5章開始討論統一渲染架構、新一代DirectX10 GPU的特性,G80/Geforce8800與R600/RadeonHD2900XT的架構具體實現及其區別。最後將會對中端最受關注的Geforce8600進行相應的簡單分析。
第一章:第二代及以後的GPU工作流程簡介
簡單(而不一定絕對科學)的說:GPU主要完成對3D圖形的處理--圖形的生成渲染。
GPU的圖形(處理)流水線完成如下的工作:(並不一定是按照如下順序)
頂點處理:這階段GPU讀取描述3D圖形外觀的頂點數據並根據頂點數據確定3D圖形的形狀及位置關系,建立起3D圖形的骨架。在支持DX8和DX9規格的GPU中,這些工作由硬體實現的Vertex Shader(定點著色器)完成。
光柵化計算:顯示器實際顯示的圖像是由像素組成的,我們需要將上面生成的圖形上的點和線通過一定的演算法轉換到相應的像素點。把一個矢量圖形轉換為一系列像素點的過程就稱為光柵化。例如,一條數學表示的斜線段,最終被轉化成階梯狀的連續像素點。
紋理帖圖:頂點單元生成的多邊形只構成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對多變形表面的帖圖,通俗的說,就是將多邊形的表面貼上相應的圖片,從而生成「真實」的圖形。TMU(Texture mapping unit)即是用來完成此項工作。
像素處理:這階段(在對每個像素進行光柵化處理期間)GPU完成對像素的計算和處理,從而確定每個像素的最終屬性。在支持DX8和DX9規格的GPU中,這些工作由硬體實現的Pixel Shader(像素著色器)完成。
最終輸出:由ROP(光柵化引擎)最終完成像素的輸出,1幀渲染完畢後,被送到顯存幀緩沖區。
總結:GPU的工作通俗的來說就是完成3D圖形的生成,將圖形映射到相應的像素點上,對每個像素進行計算確定最終顏色並完成輸出。
第二章:DirectX8和DirectX9 GPU的傳統流水線
前面的工作流程其實已經說明了問題。本章來總結一下,承前啟後。
傳統的GPU功能部件我們不妨將其分為頂點單元和像素流水線兩部分。
頂點單元由數個硬體實現的Vertex Shader組成。
傳統的像素流水線由幾組PSU(Pixel Shader Unit)+TMU+ROP組成。
於是,傳統的GPU由頂點單元生成多邊形,並由像素流水線負責像素渲染和輸出。
對於像素流水線需要做的說明是:雖然傳統的流水線被認為=1PSU+1TMU+1ROP,但這個比例不是恆定的,例如在RadeonX1000(不包括X1800)系列中被廣為稱道的3:1黃金架構,PSU:TMU:ROP的數量為3:1:1。一塊典型的X1900顯卡具有48個PSU,16個TMU和16個ROP。之所以採用這種設計方法,主要考慮到在當今的游戲中,像素指令數要遠遠大於紋理指令的數量。ATI憑借這個優秀的架構,成功擊敗了Geforce7,在DX9後期取得了3D效能上的領先。
總結:傳統的GPU由頂點單元生成多邊形,像素流水線渲染像素並輸出,一條像素流水線包含PSU,TMU,和ROP(有的資料中不包含ROP),比例通常為1:1:1,但不固定。
第三章:頂點和像素操作指令
GPU通過執行相應的指令來完成對頂點和像素的操作。
熟悉OpenGL或Direct3D編程的人應該知道,像素通常使用RGB三原色和alpha值共4個通道(屬性)來描述。而對於頂點,也通常使用XYZ和W 4個通道(屬性)來描述。因而,通常執行一條頂點和像素指令需要完成4次計算,我們這里成這種指令為4D矢量指令(4維)。當然,並不是所有的指令都是4D指令,在實際處理中,還會出現大量的1D標量指令以及2D,3D指令。
總結:由於定點和像素通常用4元組表示屬性,因而頂點和像素操作通常是4D矢量操作,但也存在標量操作。
第四章:傳統GPU指令的執行
傳統的GPU基於SIMD的架構。SIMD即Single Instruction Multiple Data,單指令多數據。
其實這很好理解,傳統的VS和PS中的ALU(算術邏輯單元,通常每個VS或PS中都會有一個ALU,但這不是一定的,例如G70和R5XX有兩個)都能夠在一個周期內(即同時)完成對矢量4個通道的運算。比如執行一條4D指令,PS或VS中的ALU對指令對應定點和像素的4個屬性數據都進行了相應的計算。這便是SIMD的由來。這種ALU我們暫且稱它為4D ALU。
需要注意的是,4D SIMD架構雖然很適合處理4D指令,但遇到1D指令的時候效率便會降為原來的1/4。此時ALU 3/4的資源都被閑置。為了提高PS VS執行1D 2D 3D指令時的資源利用率,DirectX9時代的GPU通常採用1D+3D或2D+2D ALU。這便是Co-issue技術。這種ALU對4D指令的計算時仍然效能與傳統的ALU相同,但當遇到1D 2D 3D指令時效率則會高不少,例如如下指令:
ADD R0.xyz , R0,R1 //此指令是將R0,R1矢量的x,y,z值相加 結果賦值給R0
ADD R3.x , R2,R3 //此指令是將R2 R3矢量的w值相加 結果賦值給R3
對於傳統的4D ALU,顯然需要兩個周期才能完成,第一個周期ALU利用率75% ,第二個周期利用率25%。而對於1D+3D的ALU,這兩條指令可以融合為一條4D指令,因而只需要一個周期便可以完成,ALU利用率100%。
但當然,即使採用co-issue,ALU利用率也不可能總達到100%,這涉及到指令並行的相關性等問題,而且,更直觀的,上述兩條指令顯然不能被2D+2D ALU一周期完成,而且同樣,兩條2D指令也不能被1D+3D ALU一周期完成。傳統GPU在對非4D指令的處理顯然不是很靈活。
總結:傳統的GPU中定點和像素處理分別由VS和PS來完成,每個VS PS單元中通常有一個4D ALU,可以在一個周期完成4D矢量操作,但這種ALU對1D 2D 3D操作效率低下,為了彌補,DX9顯卡中ALU常被設置為1D+3D 2D+2D等形式。
第五章:統一渲染架構
相對於DirectX 9來說,最新的DirectX 10最大的改進在於提出了統一渲染架構,即Unified Shader。
傳統的顯卡GPU一直採用分離式架構,頂點處理和像素處理分別由Vertex Shader和Pixel Shader來完成,於是,當GPU核心設計完成時,PS和VS的數量便確定下來了。但是不同的游戲對於兩者處理量需求是不同的,這種固定比例的PS VS設計顯然不夠靈活,為了解決這個問題,DirectX10規范中提出了了統一渲染架構。
不論是頂點數據還是像素數據,他們在計算上都有很多共同點,例如通常情況下,他們都是4D矢量,而且在ALU中的計算都是沒有分別的浮點運算。這些為統一渲染的實現提供了可能。
在統一渲染架構中,PS單元和VS單元都被通用的US單元所取代,nVidia的實現中稱其為streaming processer,即流處理器,這種US單元既可以處理頂點數據,又可以處理像素數據,因而GPU可以根據實際處理需求進行靈活的分配,這樣便有效避免了傳統分離式架構中VS和PS工作量不均的情況。
總結:統一渲染架構使用US(通常為SP)單元取代了傳統的固定數目的VS和PS單元,US既可以完成頂點操作,又可以完成像素操作,因而可以根據游戲需要靈活分配,從而提高了資源利用率。
第六章:G80和R600的統一渲染架構實現
以下我們著重討論G80和R600的統一著色單元而不考慮紋理單元,ROP等因素。
G80 GPU中安排了16組共128個統一標量著色器,被叫做stream processors,後面我們將其簡稱為SP。每個SP都包含有一個全功能的1D ALU。該ALU可以在一周期內完成乘加操作(MADD)。
也許有人已經注意到了,在前面傳統GPU中VS和PS的ALU都是4D的,但在這里,每個SP中的ALU都是1D標量ALU。沒錯,這就是很多資料中提及的MIMD(多指令多數據)架構,G80走的是徹底的標量化路線,將ALU拆分為了最基本的1D 標量ALU,並實現了128個1D標量SP,於是,傳統GPU中一個周期完成的4D矢量操作,在這種標量SP中需4個周期才能完成,或者說,1個4D操作需要4個SP並行處理完成。
這種實現的最大好處是靈活,不論是1D,2D,3D,4D指令,G80得便宜其全部將其拆成1D指令來處理。指令其實與矢量運算拆分一樣。
例如一個4D矢量指令 ADD R0.xyzw , R0,R1 R0與R1矢量相加,結果賦R0
G80的編譯器會將其拆分為4個1D標量運算指令並將其分派給4個SP:
ADD R0.x , R0,R1
ADD R0.y , R0,R1
ADD R0.z , R0,R1
ADD R0.w, R0,R1
綜上:G80的架構可以用128X1D來描述。
R600的實現方式則與G80有很大的不同,它仍然採用SIMD架構。
在R600的核心裡,共設計了4組共64個流處理器,但每個處理器中擁有1個5D ALU,其實更加准確地說,應該是5個1D ALU。因為每個流處理器中的ALU可以任意以1+1+1+1+1或1+4或2+3等方式搭配(以往的GPU往往只能是1D+3D或2D+2D)。ATI將這些ALU稱作streaming processing unit,因而,ATI宣稱R600擁有320個SPU。
我們考慮R600的每個流處理器,它每個周期只能執行一條指令,但是流處理器中卻擁有5個1D ALU。ATI為了提高ALU利用率,採用了VLIW體系(Very Large Instruction Word)設計。將多個短指令合並成為一組長的指令交給流處理器去執行。例如,R600可以5條1D指令合並為一組5DVLIW指令。
對於下述指令:
ADD R0.xyz , R0,R1 //3D
ADD R4.x , R4,R5 //1D
ADD R2.x , R2,R3 //1D
R600也可以將其集成為一條VLIW指令在一個周期完成。
綜上:R600的架構可以用64X5D的方式來描述。
總結:G80將操作徹底標量化,內置128個1D標量SP,每個SP中有一個1D ALU,每周期處理一個1D操作,對於4D矢量操作,則將其拆分為4個1D標量操作。
R600仍採用SIMD架構,擁有64個SP,每個SP中有5個1D ALU,因而通常聲稱R600有320個PSU,
每個SP只能處理一條指令,ATI採用VLIW體系將短指令集成為長的VLIW指令來提高資源利用率,例如5條1D標量指令可以被集成為一條VLIW指令送入SP中在一個周期完成。
第七章:G80與R600效能對比
從前一章的討論可以看出,R600的ALU規模64X5D=320明顯比G80的128X1D=128要大,但是為何在實際的測試中,基於R600的RadeonHD2900XT並沒有取得對G80/Geforce8800GTX的性能優勢?本章將試圖從兩者流處理器設計差別上來尋找答案,對於紋理單元,ROP,顯存帶寬則不做重點討論。事實上,R600的顯存帶寬也要大於G80。
我們將從頻率和執行效能兩個方面來說明問題:
1、頻率:G80隻擁有128個1D流處理器,在規模上處於絕對劣勢,於是nVidia採用了shader頻率與核心頻率非同步的方式來提高性能。Geforce8800GTX雖然核心頻率只有575MHZ,但shader頻率卻高達1375MHZ,即SP工作頻率為核心頻率的兩倍以上,而R600則相對保守地採用了shader和核心同步的方式,在RadeonHD2900XT中,兩者均為740MHZ。這樣一來,G80的shader頻率幾乎是R600的兩倍,於是就相當於同頻率下G80的SP數加倍達到256個,與R600的320個接近了很多。在處理乘加(MADD)指令的時候,740MHZ的R600的理論峰值浮點運算速度為:740MHZ*64*5*2=473.6GFLOPS 而shader頻率為1350MHZ的G80的浮點運算速度為:1350MHZ*128*1*2=345.6GFLOPS,兩者的差距並不像SP規模差距那麼大。
2、執行效能:G80雖說shader頻率很高,但由於數量差距懸殊,即使非同步也無法補回理論運算速率的差距。於是,要尋找答案,還要從兩者流處理器的具體設計著手。
在G80中,每個矢量操作都會被拆分為1D標量操作來分配給不同的SP來處理,如果不考慮指令並行性等問題,G80在任何時刻,所有SP都是充分利用的。而R600則沒這么幸運,因為每個流處理器只能同時處理一條指令,因而R600要將短指令合並為能充分利用SP內5DALU運算資源的VLIW指令,但是這種合並並不是總能成功。目前沒有資料表明R600可以將指令拆開重組,也就是說,R600不能每時每刻都找到合適的指令拼接為5D指令來滿載他的5D SP,這樣的話我們假設處理純4D指令的情況,不能拆分重組的話,R600每個SP只能處理一條4D指令,利用率80%,而對於G80,將指令拆開成1D操作,無論何時都能100%利用。而且,R600的結構對編譯器的要求很高,編譯器必須盡可能尋找Shader指令中的並行性,並將其拼接為合適的長指令,而G80則只需簡單拆分即可。
另外還需要說明的一點是,R600中每個SP的5個1D ALU並不是全功能的,據相關資料,每組5個ALU中,只有一個能執行函數運算,浮點運算和Multipy運算,但不能進行ADD運算,其餘的4各職能執行MADD運算。而G80的每個1D ALU是全功能的,這一點也在一定程度上影響了R600的效能。
總結:雖然R600的ALU規模遠大於G80,但G80的SP運行頻率幾乎是R600的兩倍,而且G80的體系架構採用完全標量化的計算,資源利用率更高,執行效能也更高,因而總體性能不落後於R600。
第八章:尷尬的中端--Geforce8600簡析
在新一代中端顯卡中,最早發布也是最受關注的莫過於nVidia的G84---Geforce8600系列。
但是相比其高高在上的價格,它的性能表現實在不盡如人意,很多測試中均落後於價格低於它的老一代高端顯卡Geforce7900GS。本章將利用前面討論的結論對G84核心的SP處理能力作簡要地分析。
G84是G80核心的高度精簡版本,SP數量從G80的128個銳減為32個,顯存位寬也降為1/3--128bit。
拋開顯存位寬和TMU ROP,我們著重看SP,G84的SP頻率與核心頻率也不相同,例如8600GT,核心頻率只有540MHZ,shader頻率卻高達1242MHZ,即核心頻率的兩倍多,我們粗略按兩倍記,則G84核心相當於核心shader同步的64(個1D標量) SP,而傳統的VS和PS中ALU是4D的,於是可以說G84的計算能力相當於傳統VS和PS總數為64/4=16的顯卡,粗略比較,它與Geforce7600(PS+VS=17)的計算能力相近。但當然,事實這樣比較是有問題的,因為在G7X中,每個PS中有兩個4D ALU,因而7600的運算能力高於傳統PS+VS=17的顯卡。下面的計算就說明了問題:(MADD操作)
對於7600GT ,VS為4D+1D PS為4D+4D 核心頻率560MHZ 理論峰值浮點運算速度:
560MHZ*(12*(4+4)+5*(1+4))*2=135.52GFLOPS
而對於8600GT:1242MHZ*32*1*2=79.4GFLOPS
由此可見,8600GT的峰值運算速度甚至遠低於上代的7600GT,更不用跟7900GS相比了。但是,實際情況下,迫於傳統架構所限,G7X滿載的情況基本不可能出現,G7X的實際運算速率要遠低於理論值,而對於G8X架構,執行效率則高很多,實際運算速率會更加接近理論極限。而且支持SM4.0的G8X寄存器數目也要遠多於G7X,眾多效率優勢,使得Geforce8600GT僅憑借少量的SP就足以擊敗上代中端7600GT。
但是作為DX10顯卡,僅僅擊敗7600GT顯然不是最終目標,僅32SP的它在計算量要求空前之高的DX10游戲中表現極差,根本不能滿足玩家要求。
總結:8600GT性能上取代7600GT的目標憑借著高效的統一渲染架構總算勉強完成,但過少的SP數量使得其顯然難以擊敗上代高端,更不用說流暢運行DX10游戲了,而高高在上的價位更使其處境不利,歸根到底,nVidia對G84 SP數量的吝嗇以及過高的價格定位造就了Geforce8600的尷尬,因此,就目前的情況來看,選用8600系列顯然不如Geforce7900和RadeonX1950GT來的劃算。
Ⅱ gpu使用過高對電腦有壞處嗎
不會,使用率高只是說明在滿載工作
在滿載的工作下,只要穩定不超過80度,一般是不會對gpu,也就是顯卡部分有影響的
你可放心使用,祝你好運
Ⅲ 為什麼編譯出的 gromacs 多 GPU 加速效果不好
一個可能的原因是 boost 的版本較低。
改進辦法是執行如下命令:
# sudo apt-get install libboost-all-dev
然後按照文章步驟安裝就可以了,為了便於閱覽,我們把步驟也貼在這里:
機器操作系統為 Ubuntu14.04,安裝了 CUDA7.5。
在家目錄下建立 gromacs 目錄做為工作目錄下,拷貝了 4 個安裝包:
openmpi-1.6.5.tar.gz
fftw-3.3.3.tar.gz
cmake-2.8.9.tar
gromacs-5.0.4.tar.gz
1.安裝 openmpi
$cd ~/gromacs
$tar –xvf openmpi-1.6.5.tar.gz
$cd openmpi-1.6.5
$./configure --prefix=/opt/openmpi
$sudo make
$sudo make install
2.安裝 fftw
$cd ~/gromacs
$tar –xvf fftw-3.3.3.tar.gz
$cd fftw-3.3.3
$./configure --prefix=/opt/fftw –enable-float –enable-shared
$sudo make
$sudo make install
3.安裝 cmake
$cd ~/gromacs
$tar xvf cmake-2.8.9.tar
$cd cmake-2.8.9
$./bootstrap
$sudo make
$sudo make install
4.編譯 gromacs GPU 版本
$cd ~/gromacs
$mkdir build-gpu
$cd build-gpu
$sudo cmake .. -DFFTWF_LIBRARY=/opt/fftw/lib/libfftw3f.so -DFFTWF_INCLUDE_DIR=/opt/fftw/include -DGMX_MPI=ON –DGMX_GPU=ON -DCMAKE_INSTALL_PREFIX=/opt/gromacs-5.0.4-gpu
$sudo make
$sudo make install
步驟 4 編譯 gromacs 時,cmake 步驟如果有如下提示信息的話,說明 boost 版本低:
Ⅳ 使用GPU編程,一定能夠提高運行速度嗎
主頻也叫時鍾頻率,單位是MHz(或GHz),用來表示CPU的運算、處理數據的速度。CPU的主頻=外頻×倍頻系數。很多人認為主頻就決定著CPU的運行速度,這不僅是個片面的,而且對於伺服器來講,這個認識也出現了偏差。至今,沒有一條確定的公式能夠實現主頻和實際的運算速度兩者之間的數值關系,即使是兩大處理器廠家Intel英特爾和AMD,在這點上也存在著很大的爭議,從Intel的產品的發展趨勢,可以看出Intel很注重加強自身主頻的發展。像其他的處理器廠家,有人曾經拿過一塊1G的全美達處理器來做比較,它的運行效率相當於2G的Intel處理器。
主頻和實際的運算速度存在一定的關系,但並不是一個簡單的線性關系. 所以,CPU的主頻與CPU實際的運算能力是沒有直接關系的,主頻表示在CPU內數字脈沖信號震盪的速度。在Intel的處理器產品中,也可以看到這樣的例子:1 GHz Itanium晶元能夠表現得差不多跟2.66 GHz至強( Xeon)/Opteron一樣快,或是1.5 GHz Itanium 2大約跟4 GHz Xeon/Opteron一樣快。CPU的運算速度還要看CPU的流水線、匯流排等等各方面的性能指標。
主頻和實際的運算速度是有關的,只能說主頻僅僅是CPU性能表現的一個方面,而不代表CPU的整體性能。
外頻
外頻是CPU的基準頻率,單位是MHz。CPU的外頻決定著整塊主板的運行速度。通俗地說,在台式機中,所說的超頻,都是超CPU的外頻(當然一般情況下,CPU的倍頻都是被鎖住的)相信這點是很好理解的。但對於伺服器CPU來講,超頻是絕對不允許的。前面說到CPU決定著主板的運行速度,兩者是同步運行的,如果把伺服器CPU超頻了,改變了外頻,會產生非同步運行,(台式機很多主板都支持非同步運行)這樣會造成整個伺服器系統的不穩定。
目前的絕大部分電腦系統中外頻與主板前端匯流排不是同步速度的,而外頻與前端匯流排(FSB)頻率又很容易被混為一談,下面的前端匯流排介紹談談兩者的區別。
前端匯流排(FSB)頻率
前端匯流排(FSB)頻率(即匯流排頻率)是直接影響CPU與內存直接數據交換速度。有一條公式可以計算,即數據帶寬=(匯流排頻率×數據位寬)/8,數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率。比方,現在的支持64位的至強Nocona,前端匯流排是800MHz,按照公式,它的數據傳輸最大帶寬是6.4GB/秒。
外頻與前端匯流排(FSB)頻率的區別:前端匯流排的速度指的是數據傳輸的速度,外頻是CPU與主板之間同步運行的速度。也就是說,100MHz外頻特指數字脈沖信號在每秒鍾震盪一億次;而100MHz前端匯流排指的是每秒鍾CPU可接受的數據傳輸量是100MHz×64bit÷8bit/Byte=800MB/s。
其實現在「HyperTransport」構架的出現,讓這種實際意義上的前端匯流排(FSB)頻率發生了變化。IA-32架構必須有三大重要的構件:內存控制器Hub (MCH) ,I/O控制器Hub和PCI Hub,像Intel很典型的晶元組 Intel 7501、Intel7505晶元組,為雙至強處理器量身定做的,它們所包含的MCH為CPU提供了頻率為533MHz的前端匯流排,配合DDR內存,前端匯流排帶寬可達到4.3GB/秒。但隨著處理器性能不斷提高同時給系統架構帶來了很多問題。而「HyperTransport」構架不但解決了問題,而且更有效地提高了匯流排帶寬,比方AMD Opteron處理器,靈活的HyperTransport I/O匯流排體系結構讓它整合了內存控制器,使處理器不通過系統匯流排傳給晶元組而直接和內存交換數據。這樣的話,前端匯流排(FSB)頻率在AMD Opteron處理器就不知道從何談起了。
CPU的位和字長
位:在數字電路和電腦技術中採用二進制,代碼只有「0」和「1」,其中無論是 「0」或是「1」在CPU中都是 一「位」。
字長:電腦技術中對CPU在單位時間內(同一時間)能一次處理的二進制數的位數叫字長。所以能處理字長為8位數據的CPU通常就叫8位的CPU。同理32位的CPU就能在單位時間內處理字長為32位的二進制數據。位元組和字長的區別:由於常用的英文字元用8位二進制就可以表示,所以通常就將8位稱為一個位元組。字長的長度是不固定的,對於不同的CPU、字長的長度也不一樣。8位的CPU一次只能處理一個位元組,而32位的CPU一次就能處理4個位元組,同理字長為64位的CPU一次可以處理8個位元組。
倍頻系數
倍頻系數是指CPU主頻與外頻之間的相對比例關系。在相同的外頻下,倍頻越高CPU的頻率也越高。但實際上,在相同外頻的前提下,高倍頻的CPU本身意義並不大。這是因為CPU與系統之間數據傳輸速度是有限的,一味追求高主頻而得到高倍頻的CPU就會出現明顯的「瓶頸」效應—CPU從系統中得到數據的極限速度不能夠滿足CPU運算的速度。一般除了工程樣版的Intel的CPU都是鎖了倍頻的,少量的如Inter 酷睿2 核心的奔騰雙核E6500K和一些至尊版的CPU不鎖倍頻,而AMD之前都沒有鎖,現在AMD推出了黑盒版CPU(即不鎖倍頻版本,用戶可以自由調節倍頻,調節倍頻的超頻方式比調節外頻穩定得多)。
緩存
緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是由於CPU晶元面積和成本的因素來考慮,緩存都很小。
L1 Cache(一級緩存)是CPU第一層高速緩存,分為數據緩存和指令緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般伺服器CPU的L1緩存的容量通常在32—256KB。
L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,以前家庭用CPU容量最大的是512KB,現在筆記本電腦中也可以達到2M,而伺服器和工作站上用CPU的L2高速緩存更高,可以達到8M以上。
L3 Cache(三級緩存),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對游戲都很有幫助。而在伺服器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件系統緩存行為及較短消息和處理器隊列長度。
其實最早的L3緩存被應用在AMD發布的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進晶元內部,而是集成在主板上。在只能夠和系統匯流排頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為伺服器市場所推出的Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。
但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比緩存增加帶來更有效的性能提升。
CPU擴展指令集
CPU依靠指令來計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為復雜指令集和精簡指令集兩部分,而從具體運用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SSE3、SSE4系列和AMD的3DNow!等都是CPU的擴展指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。通常會把CPU的擴展指令集稱為」CPU的指令集」。SSE3指令集也是目前規模最小的指令集,此前MMX包含有57條命令,SSE包含有50條命令,SSE2包含有144條命令,SSE3包含有13條命令。目前SSE4也是最先進的指令集,英特爾酷睿系列處理器已經支持SSE4指令集,AMD會在未來雙核心處理器當中加入對SSE4指令集的支持,全美達的處理器也將支持這一指令集。
CPU內核和I/O工作電壓
從586CPU開始,CPU的工作電壓分為內核電壓和I/O電壓兩種,通常CPU的核心電壓小於等於I/O電壓。其中內核電壓的大小是根據CPU的生產工藝而定,一般製作工藝越小,內核工作電壓越低;I/O電壓一般都在1.6~5V。低電壓能解決耗電過大和發熱過高的問題。
製造工藝
製造工藝的微米是指IC內電路與電路之間的距離。製造工藝的趨勢是向密集度愈高的方向發展。密度愈高的IC電路設計,意味著在同樣大小面積的IC中,可以擁有密度更高、功能更復雜的電路設計。現在主要的180nm、130nm、90nm、65nm、45納米。最近inter已經有32納米的製造工藝的酷睿i3/i5系列了。
而AMD則表示、自己的產品將會直接跳過32nm工藝(2010年第三季度生產少許32nm產品、如Orochi、Llano)於2011年中期初發布28nm的產品(名稱未定)
指令集
(1)CISC指令集
CISC指令集,也稱為復雜指令集,英文名是CISC,(Complex Instruction Set Computer的縮寫)。在CISC微處理器中,程序的各條指令是按順序串列執行的,每條指令中的各個操作也是按順序串列執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。其實它是英特爾生產的x86系列(也就是IA-32架構)CPU及其兼容CPU,如AMD、VIA的。即使是現在新起的X86-64(也被成AMD64)都是屬於CISC的范疇。
要知道什麼是指令集還要從當今的X86架構的CPU說起。X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,IBM1981年推出的世界第一台PC機中的CPU—i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加了X87晶元,以後就將X86指令集和X87指令集統稱為X86指令集。
雖然隨著CPU技術的不斷發展,Intel陸續研製出更新型的i80386、i80486直到過去的PII至強、PIII至強、Pentium 3,Pentium 4系列,最後到今天的酷睿2系列、至強(不包括至強Nocona),但為了保證電腦能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟體資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。由於Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。x86CPU目前主要有intel的伺服器CPU和AMD的伺服器CPU兩類。
(2)RISC指令集
RISC是英文「Reced Instruction Set Computing 」 的縮寫,中文意思是「精簡指令集」。它是在CISC指令系統基礎上發展起來的,有人對CISC機進行測試表明,各種指令的使用頻度相當懸殊,最常使用的是一些比較簡單的指令,它們僅占指令總數的20%,但在程序中出現的頻度卻佔80%。復雜的指令系統必然增加微處理器的復雜性,使處理器的研製時間長,成本高。並且復雜指令需要復雜的操作,必然會降低計算機的速度。基於上述原因,20世紀80年代RISC型CPU誕生了,相對於CISC型CPU ,RISC型CPU不僅精簡了指令系統,還採用了一種叫做「超標量和超流水線結構」,大大增加了並行處理能力。RISC指令集是高性能CPU的發展方向。它與傳統的CISC(復雜指令集)相對。相比而言,RISC的指令格式統一,種類比較少,定址方式也比復雜指令集少。當然處理速度就提高很多了。目前在中高檔伺服器中普遍採用這一指令系統的CPU,特別是高檔伺服器全都採用RISC指令系統的CPU。RISC指令系統更加適合高檔伺服器的操作系統UNIX,現在Linux也屬於類似UNIX的操作系統。RISC型CPU與Intel和AMD的CPU在軟體和硬體上都不兼容。
目前,在中高檔伺服器中採用RISC指令的CPU主要有以下幾類:PowerPC處理器、SPARC處理器、PA-RISC處理器、MIPS處理器、Alpha處理器。
(3)IA-64
EPIC(Explicitly Parallel Instruction Computers,精確並行指令計算機)是否是RISC和CISC體系的繼承者的爭論已經有很多,單以EPIC體系來說,它更像Intel的處理器邁向RISC體系的重要步驟。從理論上說,EPIC體系設計的CPU,在相同的主機配置下,處理Windows的應用軟體比基於Unix下的應用軟體要好得多。
Intel採用EPIC技術的伺服器CPU是安騰Itanium(開發代號即Merced)。它是64位處理器,也是IA-64系列中的第一款。微軟也已開發了代號為Win64的操作系統,在軟體上加以支持。在Intel採用了X86指令集之後,它又轉而尋求更先進的64-bit微處理器,Intel這樣做的原因是,它們想擺脫容量巨大的x86架構,從而引入精力充沛而又功能強大的指令集,於是採用EPIC指令集的IA-64架構便誕生了。IA-64 在很多方面來說,都比x86有了長足的進步。突破了傳統IA32架構的許多限制,在數據的處理能力,系統的穩定性、安全性、可用性、可觀理性等方面獲得了突破性的提高。
IA-64微處理器最大的缺陷是它們缺乏與x86的兼容,而Intel為了IA-64處理器能夠更好地運行兩個朝代的軟體,它在IA-64處理器上(Itanium、Itanium2 ……)引入了x86-to-IA-64的解碼器,這樣就能夠把x86指令翻譯為IA-64指令。這個解碼器並不是最有效率的解碼器,也不是運行x86代碼的最好途徑(最好的途徑是直接在x86處理器上運行x86代碼),因此Itanium 和Itanium2在運行x86應用程序時候的性能非常糟糕。這也成為X86-64產生的根本原因。
(4)X86-64 (AMD64 / EM64T)
AMD公司設計,可以在同一時間內處理64位的整數運算,並兼容於X86-32架構。其中支持64位邏輯定址,同時提供轉換為32位定址選項;但數據操作指令默認為32位和8位,提供轉換成64位和16位的選項;支持常規用途寄存器,如果是32位運算操作,就要將結果擴展成完整的64位。這樣,指令中有「直接執行」和「轉換執行」的區別,其指令欄位是8位或32位,可以避免欄位過長。
x86-64(也叫AMD64)的產生也並非空穴來風,x86處理器的32bit定址空間限制在4GB內存,而IA-64的處理器又不能兼容x86。AMD充分考慮顧客的需求,加強x86指令集的功能,使這套指令集可同時支持64位的運算模式,因此AMD把它們的結構稱之為x86-64。在技術上AMD在x86-64架構中為了進行64位運算,AMD為其引入了新增了R8-R15通用寄存器作為原有X86處理器寄存器的擴充,但在而在32位環境下並不完全使用到這些寄存器。原來的寄存器諸如EAX、EBX也由32位擴張至64位。在SSE單元中新加入了8個新寄存器以提供對SSE2的支持。寄存器數量的增加將帶來性能的提升。與此同時,為了同時支持32和64位代碼及寄存器,x86-64架構允許處理器工作在以下兩種模式:Long Mode(長模式)和Legacy Mode(遺傳模式),Long模式又分為兩種子模式(64bit模式和Compatibility mode兼容模式)。該標准已經被引進在AMD伺服器處理器中的Opteron處理器.
而今年也推出了支持64位的EM64T技術,再還沒被正式命為EM64T之前是IA32E,這是英特爾64位擴展技術的名字,用來區別X86指令集。Intel的EM64T支持64位sub-mode,和AMD的X86-64技術類似,採用64位的線性平面定址,加入8個新的通用寄存器(GPRs),還增加8個寄存器支持SSE指令。與AMD相類似,Intel的64位技術將兼容IA32和IA32E,只有在運行64位操作系統下的時候,才將會採用IA32E。IA32E將由2個sub-mode組成:64位sub-mode和32位sub-mode,同AMD64一樣是向下兼容的。Intel的EM64T將完全兼容AMD的X86-64技術。現在Nocona處理器已經加入了一些64位技術,Intel的Pentium 4E處理器也支持64位技術。
應該說,這兩者都是兼容x86指令集的64位微處理器架構,但EM64T與AMD64還是有一些不一樣的地方,AMD64處理器中的NX位在Intel的處理器中將沒有提供。
超流水線與超標量
在解釋超流水線與超標量前,先了解流水線(pipeline)。流水線是Intel首次在486晶元中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成5—6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高CPU的運算速度。經典奔騰每條整數流水線都分為四級流水,即指令預取、解碼、執行、寫回結果,浮點流水又分為八級流水。
超標量是通過內置多條流水線來同時執行多個處理器,其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。例如Pentium 4的流水線就長達20級。將流水線設計的步(級)越長,其完成一條指令的速度越快,因此才能適應工作主頻更高的CPU。但是流水線過長也帶來了一定副作用,很可能會出現主頻較高的CPU實際運算速度較低的現象,Intel的奔騰4就出現了這種情況,雖然它的主頻可以高達1.4G以上,但其運算性能卻遠遠比不上AMD 1.2G的速龍甚至奔騰III。
封裝形式
CPU封裝是採用特定的材料將CPU晶元或CPU模塊固化在其中以防損壞的保護措施,一般必須在封裝後CPU才能交付用戶使用。CPU的封裝方式取決於CPU安裝形式和器件集成設計,從大的分類來看通常採用Socket插座進行安裝的CPU使用PGA(柵格陣列)方式封裝,而採用Slot x槽安裝的CPU則全部採用SEC(單邊接插盒)的形式封裝。現在還有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封裝技術。由於市場競爭日益激烈,目前CPU封裝技術的發展方向以節約成本為主。
多線程
同時多線程Simultaneous multithreading,簡稱SMT。SMT可通過復制處理器上的結構狀態,讓同一個處理器上的多個線程同步執行並共享處理器的執行資源,可最大限度地實現寬發射、亂序的超標量處理,提高處理器運算部件的利用率,緩和由於數據相關或Cache未命中帶來的訪問內存延時。當沒有多個線程可用時,SMT處理器幾乎和傳統的寬發射超標量處理器一樣。SMT最具吸引力的是只需小規模改變處理器核心的設計,幾乎不用增加額外的成本就可以顯著地提升效能。多線程技術則可以為高速的運算核心准備更多的待處理數據,減少運算核心的閑置時間。這對於桌面低端系統來說無疑十分具有吸引力。Intel從3.06GHz Pentium 4開始,所有處理器都將支持SMT技術。
多核心
多核心,也指單晶元多處理器(Chip multiprocessors,簡稱CMP)。CMP是由美國斯坦福大學提出的,其思想是將大規模並行處理器中的SMP(對稱多處理器)集成到同一晶元內,各個處理器並行執行不同的進程。與CMP比較, SMT處理器結構的靈活性比較突出。但是,當半導體工藝進入0.18微米以後,線延時已經超過了門延遲,要求微處理器的設計通過劃分許多規模更小、局部性更好的基本單元結構來進行。相比之下,由於CMP結構已經被劃分成多個處理器核來設計,每個核都比較簡單,有利於優化設計,因此更有發展前途。目前,IBM 的Power 4晶元和Sun的 MAJC5200晶元都採用了CMP結構。多核處理器可以在處理器內部共享緩存,提高緩存利用率,同時簡化多處理器系統設計的復雜度。
2005年下半年,Intel和AMD的新型處理器也將融入CMP結構。新安騰處理器開發代碼為Montecito,採用雙核心設計,擁有最少18MB片內緩存,採取90nm工藝製造,它的設計絕對稱得上是對當今晶元業的挑戰。它的每個單獨的核心都擁有獨立的L1,L2和L3 cache,包含大約10億支晶體管。
SMP
SMP(Symmetric Multi-Processing),對稱多處理結構的簡稱,是指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及匯流排結構。在這種技術的支持下,一個伺服器系統可以同時運行多個處理器,並共享內存和其他的主機資源。像雙至強,也就是所說的二路,這是在對稱處理器系統中最常見的一種(至強MP可以支持到四路,AMD Opteron可以支持1-8路)。也有少數是16路的。但是一般來講,SMP結構的機器可擴展性較差,很難做到100個以上多處理器,常規的一般是8個到16個,不過這對於多數的用戶來說已經夠用了。在高性能伺服器和工作站級主板架構中最為常見,像UNIX伺服器可支持最多256個CPU的系統。
構建一套SMP系統的必要條件是:支持SMP的硬體包括主板和CPU;支持SMP的系統平台,再就是支持SMP的應用軟體。為了能夠使得SMP系統發揮高效的性能,操作系統必須支持SMP系統,如WINNT、LINUX、以及UNIX等等32位操作系統。即能夠進行多任務和多線程處理。多任務是指操作系統能夠在同一時間讓不同的CPU完成不同的任務;多線程是指操作系統能夠使得不同的CPU並行的完成同一個任務 。
要組建SMP系統,對所選的CPU有很高的要求,首先、CPU內部必須內置APIC(Advanced Programmable Interrupt Controllers)單元。Intel 多處理規范的核心就是高級可編程中斷控制器(Advanced Programmable Interrupt Controllers–APICs)的使用;再次,相同的產品型號,同
Ⅳ gpu使用率高對顯卡有害嗎
GPU佔用很高說明顯卡的性能得到充分的使用,只要溫度在正常范圍內就可以。如果GPU和CPU的溫度過高會導致運行頻率降低,玩游戲時就會卡。
一、佔用率過高的原因主要有:
1、防殺毒軟體造成故障, 由於部分軟體都加入了對網頁、插件、郵件的隨機監控,加大了系統負擔。
2、驅動沒有經過認證,造成CPU資源佔用100% ,大量的測試版的驅動在網上泛濫,造成了難以發現的故障原因。
3、病毒、木馬造成 大量的蠕蟲病毒在系統內部迅速復制,造成CPU佔用資源率據高不下。
4、windows XP系統中使用滑鼠右鍵也會導致CPU佔用率過高。
二、解決方法:
1、由於防殺毒軟體造成的,沒有特別好的解決方案,盡量使用最少的監控服務,或升級硬體配備。
2、使用顯卡驅動時注意,建議使用微軟認證的或由官方發布的驅動,並且嚴格核對型號、版本。
3、可靠的殺毒軟體徹底清理系統內存和本地硬碟,並且打開系統設置軟體,查看有無異常啟動的程序。經常性更新升級殺毒軟體和防火牆,加強防毒意識,掌握正確的防殺毒知識。
4、通過任務管理器進程,把多餘的進程關掉。
(5)gpu對編譯有影響嗎擴展閱讀:
顯卡常見故障檢修:
故障現象:顯卡虛焊,不限於顆粒或者顯示核心本身導致花屏
顯卡出現花屏症狀是一種比較常見的電腦故障,在遇到顯卡花屏問題,大部分用戶並不清楚其緣由,通常都會表現得手忙腳亂,甚至將原本正常的硬體更換掉。
花屏的原因可能有很多樣,但主要還是跟顯卡的幾個核心部件有關系。顯示核心的損壞,以及顯存的虛焊和脫焊,都有可能會造成花屏——因為這時候是用於生成畫面的材質在顯存中讀取不正確,因而無法正確載入紋理和貼圖。
除了顯卡自身的原因,超顯卡導致核心/顯存過熱、驅動問題也可能造成花屏,但這些處理起來稍微簡單一些。而顯示核心的損壞,以及顯存的虛焊和脫焊這個問題處理起來比較麻煩,即使是最低等級的顯存虛焊,一般也需要BGA焊接台才能搞定,一般人是比較缺乏這個條件的。
解決方法:
如果只是驅動問題,那麼重新更新驅動就好了。如果不幸遇上虛焊、脫焊了,在質保期的話,還是先向廠家申請,要是連質保期都過了,建議把顯卡送迅維快修這樣的專業機構進行維修,雖然簡單來說就是重新上焊錫並穩固冷凝的過程,也有過顯卡修復的案例,但也不能保證100%的修復率,實在不行只能換新的了。
Ⅵ GPU的作用作用
GPU是一種專門在個人電腦、工作站、游戲機和一些移動設備(如平板電腦、智能手機等)上做圖像和圖形相關運算工作的微處理器。
GPU使顯卡減少了對CPU的依賴,並進行部分原本CPU的工作,尤其是在3D圖形處理時GPU所採用的核心技術有硬體T&L、紋理壓縮和凹凸映射貼圖等,而硬體T&L技術可以說是GPU的標志。
intel不但是世界上最大的CPU生產銷售商,也是世界最大的GPU生產銷售商。intel的GPU在現在完全是集成顯卡,用於intel的主板和intel的筆記本。要是只按發售數量計算,intel隨著他主板發售的集成GPU占據了整個GPU市場的60%以上。
(6)gpu對編譯有影響嗎擴展閱讀
圖形處理器由以下器件組成:
(1)顯示主晶元顯卡的核心,俗稱GPU,它的主要任務是對系統輸人的視頻信息進行構建和渲染。
(2)顯示緩沖存儲器用來存儲將要顯示的圖形信息以及保存圖形運算的中間數據;顯示緩存的大小和速度直接影響著主晶元性能的發揮。
(3)RAMD/A轉換器把二進制的數字轉換成為和顯示器相適應的模擬信號。
參考資料來源:網路-圖形處理器
Ⅶ 始終使用GPU進行畫面製作對游戲運行速度有影響嗎
當然有影響啦,兩邊兒都是在用gpu進行渲染的。
Ⅷ opencv_python4.1如何GPU加速,需不需要重新編譯之類的
需要重新編譯opencv 的,最後getCudaEnabledDeviceCount();這個函數返回值大於零才行 // first.cpp : 定義控制台應用程序的入口點。 // #include "stdafx.h" #include #include "opencv2/opencv.hpp" #include "opencv2/gpu/gpu.hpp" #pragma co..
Ⅸ gpu性能差對手機有哪些影響
聊Q和使用辦公軟體和gpu沒什麼大關系,gpu是對圖像的處理,比如玩3D游戲之類。cpu806能彌補很多了。
Ⅹ GPU能做什麼
GPU英文全稱Graphic Processing Unit,中文翻譯為「圖形處理器」。GPU是相對於CPU的一個概念,由於在現代的計算機中(特別是家用系統,游戲的發燒友)圖形的處理變得越來越重要,需要一個專門的圖形的核心處理器。
GPU的作用
GPU是顯示卡的「心臟」,也就相當於CPU在電腦中的作用,它決定了該顯卡的檔次和大部分性能,同時也是2D顯示卡和3D顯示卡的區別依據。2D顯示晶元在處理3D圖像和特效時主要依賴CPU的處理能力,稱為「軟加速」。3D顯示晶元是將三維圖像和特效處理功能集中在顯示晶元內,也即所謂的「硬體加速」功能。顯示晶元通常是顯示卡上最大的晶元(也是引腳最多的)。現在市場上的顯卡大多採用NVIDIA和ATI兩家公司的圖形處理晶元。
於是NVIDIA公司在1999年發布GeForce 256圖形處理晶元時首先提出GPU的概念。GPU使顯卡減少了對CPU的依賴,並進行部分原本CPU的工作,尤其是在3D圖形處理時。GPU所採用的核心技術有硬體T&L、立方環境材質貼圖和頂點混合、紋理壓縮和凹凸映射貼圖、雙重紋理四像素256位渲染引擎等,而硬體T&L技術可以說是GPU的標志。
簡單說GPU就是能夠從硬體上支持T&L(Transform and Lighting,多邊形轉換與光源處理)的顯示晶元,因為T&L是3D渲染中的一個重要部分,其作用是計算多邊形的3D位置和處理動態光線效果,也可以稱為「幾何處理」。一個好的T&L單元,可以提供細致的3D物體和高級的光線特效;只大多數PC中,T&L的大部分運算是交由CPU處理的(這就也就是所謂的軟體T&L),由於CPU的任務繁多,除了T&L之外,還要做內存管理、輸入響應等非3D圖形處理工作,因此在實際運算的時候性能會大打折扣,常常出現顯卡等待CPU數據的情況,其運算速度遠跟不上今天復雜三維游戲的要求。即使CPU的工作頻率超過1GHz或更高,對它的幫助也不大,由於這是PC本身設計造成的問題,與CPU的速度無太大關系。
GPU與DSP的區別
GPU在幾個主要方面有別於DSP架構。其所有計算均使用浮點演算法,而且目前還沒有位或整數運算指令。此外,由於GPU專為圖像處理設計,因此存儲系統實際上是一個二維的分段存儲空間,包括一個區段號(從中讀取圖像)和二維地址(圖像中的X、Y坐標)。此外,沒有任何間接寫指令。輸出寫地址由光柵處理器確定,而且不能由程序改變。這對於自然分布在存儲器之中的演算法而言是極大的挑戰。最後一點,不同碎片的處理過程間不允許通信。實際上,碎片處理器是一個SIMD數據並行執行單元,在所有碎片中獨立執行代碼。
盡管有上述約束,但是GPU還是可以有效地執行多種運算,從線性代數和信號處理到數值模擬。雖然概念簡單,但新用戶在使用GPU計算時還是會感到迷惑,因為GPU需要專有的圖形知識。這種情況下,一些軟體工具可以提供幫助。兩種高級描影語言CG和HLSL能夠讓用戶編寫類似C的代碼,隨後編譯成碎片程序匯編語言。Brook是專為GPU計算設計,且不需要圖形知識的高級語言。因此對第一次使用GPU進行開發的工作人員而言,它可以算是一個很好的起點。Brook是C語言的延伸,整合了可以直接映射到GPU的簡單數據並行編程構造。經 GPU存儲和操作的數據被形象地比喻成「流」(stream),類似於標准C中的數組。核心(Kernel)是在流上操作的函數。在一系列輸入流上調用一個核心函數意味著在流元素上實施了隱含的循環,即對每一個流元素調用核心體。Brook還提供了約簡機制,例如對一個流中所有的元素進行和、最大值或乘積計算。Brook還完全隱藏了圖形API的所有細節,並把GPU中類似二維存儲器系統這樣許多用戶不熟悉的部分進行了虛擬化處理。用Brook編寫的應用程序包括線性代數子程序、快速傅立葉轉換、光線追蹤和圖像處理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速緩存、SSE匯編優化Pentium 4執行條件下,許多此類應用的速度提升高達7倍之多。
對GPU計算感興趣的用戶努力將演算法映射到圖形基本元素。類似Brook這樣的高級編程語言的問世使編程新手也能夠很容易就掌握GPU的性能優勢。訪問GPU計算功能的便利性也使得GPU的演變將繼續下去,不僅僅作為繪制引擎,而是會成為個人電腦的主要計算引擎。