GPGPU調(diào)研詳細(xì)報(bào)告_第1頁(yè)
GPGPU調(diào)研詳細(xì)報(bào)告_第2頁(yè)
GPGPU調(diào)研詳細(xì)報(bào)告_第3頁(yè)
GPGPU調(diào)研詳細(xì)報(bào)告_第4頁(yè)
GPGPU調(diào)研詳細(xì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

關(guān)于用于通用計(jì)算圖形處理器調(diào)研匯報(bào)一.引言1.1GPU介紹GPU,即圖形處理器(GraphicProcessingUnit),是一個(gè)相對(duì)于CPU概念,它專門用來(lái)在個(gè)人電腦、工作站或游戲機(jī)上處理圖形,影像等運(yùn)算微處理器。它是顯卡心臟,和顯卡板載內(nèi)存成為一個(gè)子系統(tǒng),共同決定計(jì)算機(jī)系統(tǒng)圖形處理性能。越來(lái)越多圖形應(yīng)用使得GPU在當(dāng)代計(jì)算機(jī)中作用越來(lái)越主要,在CPU主宰計(jì)算機(jī)性能幾十年后,GPU近十年中快速崛起,甚至幾乎達(dá)成了和CPU平起平坐地位。GPU是NVIDIA企業(yè)在1999年公布GeForce256繪圖處理芯片時(shí)首先提出概念,在此之前,電腦中處理影像輸出顯示芯片,通常極少被視為是一個(gè)獨(dú)立運(yùn)算單元。而ATI亦提出VPU(VideoProcessingUnit)概念。GPU使顯卡降低了對(duì)CPU依賴,并分擔(dān)了部分原本是由CPU所擔(dān)當(dāng)工作,尤其是在進(jìn)行3D圖形處理時(shí),功效愈加顯著。GPU所采取關(guān)鍵技術(shù)有硬件座標(biāo)轉(zhuǎn)換與光源、立方環(huán)境材質(zhì)貼圖和頂點(diǎn)混合、紋理壓縮和凹凸映射貼圖、雙重紋理四像素256位渲染引擎,硬體T&L(TransformandLighting,多邊形轉(zhuǎn)換與光源處理)技術(shù)等,其中,硬體T&L能夠說(shuō)是GPU標(biāo)志。1.2基于GPU通用計(jì)算傳統(tǒng)上,GPU應(yīng)用被局限于處理圖形渲染計(jì)算任務(wù),對(duì)于擁有先天強(qiáng)大并行計(jì)算能力GPU來(lái)說(shuō),這無(wú)疑是對(duì)計(jì)算資源極大浪費(fèi)。伴隨GPU可編程性不停提升,利用GPU完成通用計(jì)算研究漸漸活躍起來(lái)。將GPU用于圖形渲染以外領(lǐng)域計(jì)算稱為GPGPU(General-PurposeComputingonGraphicsProcessingUnits,基于GPU通用計(jì)算)。GPGPU通常采取CPU+GPU異構(gòu)模式,由CPU負(fù)責(zé)執(zhí)行復(fù)雜邏輯處理和事務(wù)管理等不適合數(shù)據(jù)并行計(jì)算,由GPU負(fù)責(zé)處理密集型大規(guī)模數(shù)據(jù)并行計(jì)算。這種利用GPU強(qiáng)大處理能力和高存放帶寬填補(bǔ)CPU性能不足計(jì)算方式,在發(fā)掘計(jì)算機(jī)潛在計(jì)算性能,及控制成本和性價(jià)比等方面有顯著優(yōu)勢(shì)。不過(guò),傳統(tǒng)GPGPU受硬件可編程性和開(kāi)發(fā)方式制約,應(yīng)用領(lǐng)域受到了限制,開(kāi)發(fā)難度也很大。從系統(tǒng)架構(gòu)上看,GPU是針對(duì)向量計(jì)算進(jìn)行了優(yōu)化高度并行數(shù)據(jù)流處理器,其中包含兩種流處理單元:頂點(diǎn)處理流水線(VertexShader)是多指令多數(shù)據(jù)流(MIMD)處理單元,而像素處理流水線(PixelShader)則是單指令多數(shù)據(jù)流(SIMD)處理單元。這種以數(shù)據(jù)流作為處理單元處理器,在對(duì)數(shù)據(jù)流處理上能夠獲取較高效率,所以最近幾年,很多研究人員開(kāi)創(chuàng)了一個(gè)新研究領(lǐng)域,即GPGPU,其主要研究?jī)?nèi)容就是除了在圖形處理這個(gè)方面以外,怎樣利用GPU來(lái)進(jìn)行更為廣泛應(yīng)用計(jì)算。最早GPGPU開(kāi)發(fā)直接使用了圖形學(xué)API編程。這種開(kāi)發(fā)方式要求編程人員將數(shù)據(jù)打包成紋理,將計(jì)算任務(wù)映射為對(duì)紋理渲染過(guò)程,用匯編或者高級(jí)著色器語(yǔ)言(如GLSL、Cg、HLSL)編寫shader程序,然后經(jīng)過(guò)圖形學(xué)API(Direct3D、OpenGL)執(zhí)行。這種“曲線救國(guó)”方式要求編程人員不但要熟悉自己需要實(shí)現(xiàn)計(jì)算和并行算法,還要對(duì)圖形學(xué)硬件和編程接口有深入了解。因?yàn)殚_(kāi)發(fā)難度大,傳統(tǒng)GPGPU并沒(méi)有被廣泛應(yīng)用。,斯坦福大學(xué)IanBuck等人對(duì)ANSIC進(jìn)行擴(kuò)展,開(kāi)發(fā)了基于NVIDIACgBrook源到源編譯器。Brook能夠?qū)㈩愃艭brookC語(yǔ)言經(jīng)過(guò)brcc編譯器編譯為Cg代碼,隱藏了利用圖形學(xué)API實(shí)現(xiàn)細(xì)節(jié),大大簡(jiǎn)化了開(kāi)發(fā)過(guò)程。但早期Brook編譯效率很低,而且只能使用像素著色器進(jìn)行運(yùn)算。受GPU架構(gòu)限制,Brook也缺乏有效數(shù)據(jù)通信機(jī)制。二.基于GPU通用計(jì)算發(fā)展現(xiàn)實(shí)狀況最先是ATI(現(xiàn)AMD)提出了通用計(jì)算概念,并搶先公布了自家通用計(jì)算平臺(tái)Stream,但因?yàn)榉N種原因后續(xù)開(kāi)發(fā)工作不是非常理想;而后NVIDIA企業(yè)開(kāi)發(fā)了名為CUDA通用GPU計(jì)算開(kāi)發(fā)包給業(yè)界,并小有結(jié)果,暫時(shí)處于領(lǐng)先位置,其定位于通用計(jì)算TESLA系列產(chǎn)品和CUDA架構(gòu)已經(jīng)開(kāi)始得到大量應(yīng)用。而英特爾方面也在緊鑼密鼓地開(kāi)發(fā)自己新一代顯示芯片——Larrabee,一個(gè)集成了10個(gè)x86處理器圖形顯示單元,能夠輕易將其轉(zhuǎn)換為通用計(jì)算單元。另外,伴隨AMD收購(gòu)ATI,AMD也日益重視用于通用計(jì)算領(lǐng)域GPU產(chǎn)品這塊蛋糕,在不停宣傳自己通用計(jì)算產(chǎn)品和STREAM架構(gòu)同時(shí),還力推OPENCL發(fā)展。而OPENCL則是建立在不一樣處理器架構(gòu)上,比喻說(shuō)x86CPU、CUDA架構(gòu)GPU和STREAM架構(gòu)GPU、Cell處理器乃至于ARM構(gòu)架DSP處理芯片等等一個(gè)標(biāo)準(zhǔn)開(kāi)放計(jì)算語(yǔ)言,得到了業(yè)界除了微軟以外絕大部分廠商支持,因?yàn)槲④浻凶约篋irectCompute,一樣支持基于不一樣架構(gòu)GPU通用計(jì)算。2.1NVIDIACUDA6月,NVIDIA推出了CUDA(ComputeUnifiedDeviceArchitecture,統(tǒng)一計(jì)算設(shè)備架構(gòu))。CUDA是一個(gè)將GPU作為數(shù)據(jù)并行計(jì)算設(shè)備軟硬件體系。到現(xiàn)在為止,CUDA版本已經(jīng)進(jìn)行了三次版本提升,功效不停完善,能夠很好地支持新硬件特征。CUDA不需要借助于圖形學(xué)API,并采取了比較輕易掌握類C語(yǔ)言進(jìn)行開(kāi)發(fā)。開(kāi)發(fā)人員能夠從熟悉C語(yǔ)言比較平穩(wěn)地從CPU過(guò)渡到GPU,而無(wú)須重新學(xué)習(xí)語(yǔ)法。當(dāng)然,要開(kāi)發(fā)高性能GPU通用計(jì)算程序,開(kāi)發(fā)人員依然需要掌握并行算法和GPU架構(gòu)方面知識(shí)。與以往GPU相比,支持CUDAGPU在架構(gòu)上有了顯著改進(jìn),這兩項(xiàng)改進(jìn)使CUDA架構(gòu)愈加適適用于GPU通用計(jì)算。一是采取了統(tǒng)一處理架構(gòu),能夠愈加有效地利用過(guò)去分布在頂點(diǎn)渲染器和像素渲染器計(jì)算資源;二是引入了片內(nèi)共享存放器,支持隨機(jī)寫入(scatter)和線程間通信。2.1.1GT200硬件架構(gòu)圖2.1GPU處理關(guān)鍵架構(gòu)經(jīng)過(guò)NVIDIA旗艦產(chǎn)品GT200系列關(guān)鍵架構(gòu)圖能夠看到,總共擁有十個(gè)流處理器陣列,每個(gè)陣列內(nèi)部擁有8×3=24個(gè)SM(多核流處理器),其中每8個(gè)為一組組成SIMT(單指令多線程架構(gòu)),并共享16K指令緩存,三組SIMT共享一級(jí)緩存。這么標(biāo)量流處理器設(shè)計(jì)適合執(zhí)行高度并行化指令,不論對(duì)于傳統(tǒng)圖形渲染,還是物理加速運(yùn)算、大規(guī)模數(shù)據(jù)處理都游刃有余。所以,第二代統(tǒng)一渲染架構(gòu)主要含義,就是將圖形處理架構(gòu)和并行計(jì)算架構(gòu)完美結(jié)合起來(lái),成為一顆真正意義上通用處理器,超越圖形處理器概念在每個(gè)SM內(nèi)部,除了包含8個(gè)SP(流處理器)之外,還有包含1個(gè)SFU(SpecialFunctionUnit,特殊功效單元),這個(gè)處理單元能夠用來(lái)輔助SP處理特殊函數(shù)運(yùn)算、插值屬性頂點(diǎn)+像素著色、執(zhí)行浮點(diǎn)乘法運(yùn)算指令(MUL)。GT200關(guān)鍵每個(gè)流處理器都能夠單獨(dú)執(zhí)行一條乘加指令(Multiplu-Add,也就是同時(shí)執(zhí)行一條乘法和一條加法指令),與此同時(shí)SFU還能夠在相同時(shí)鐘周期執(zhí)行另外一條乘法指令,相當(dāng)于每個(gè)流處理器都能同時(shí)執(zhí)行3條指令。GT200浮點(diǎn)運(yùn)算能力計(jì)算公式為:流處理器數(shù)×指令數(shù)×頻率=240×3×1296=933GFLOPS。NVIDIA將GT200關(guān)鍵設(shè)計(jì)成為圖形渲染架構(gòu)和并行計(jì)算架構(gòu)統(tǒng)一體,對(duì)于Dual-Issue效率深入優(yōu)化,達(dá)成了93%之高,這么雙指令執(zhí)行效率能夠讓GT200實(shí)際性能無(wú)限靠近于理論值。GT200關(guān)鍵每一個(gè)SM都包含了一個(gè)雙精度64Bit浮點(diǎn)運(yùn)算單元,這么GT200就相當(dāng)于一個(gè)30關(guān)鍵雙精度64Bit處理器,但GPU頻率要比CPU低很多,所以GT200理論64Bit浮點(diǎn)運(yùn)算能力大約與Intel頂級(jí)八關(guān)鍵至強(qiáng)處理器相當(dāng)。雙精度運(yùn)算量是單精度八倍,所以理論浮點(diǎn)運(yùn)算能力只有原來(lái)1/8,GT280雙精度64Bit浮點(diǎn)運(yùn)算能力大約在90GFLOPS左右。2.1.2CUDA軟件架構(gòu)CUDA主要提供了CUDAC和對(duì)應(yīng)COMPILER,CUDA庫(kù),CUDARUNTIMEAPI和CUDADRIVERAPI。CUDAC其實(shí)就是C擴(kuò)展;CUDA庫(kù)包含了很多有用數(shù)學(xué)應(yīng)用,如CUFFT等;CUDARUNTIME其實(shí)就是個(gè)JIT編譯器,動(dòng)態(tài)地將PTX中間代碼編譯成符合實(shí)際平臺(tái)硬件代碼,并作特定優(yōu)化;CUDADRIVER則是直接對(duì)應(yīng)API與GPU打交道接口;Nvcc編譯器能夠?qū)UDAC編譯成純C或者PTX或者GPUBIN。圖2.2CUDA軟件架構(gòu)下面以GT200系列為例,分析一下CUDA運(yùn)行情況,

在CUDA中程序執(zhí)行區(qū)域分為兩部分,CPU和GPU——HOST和DEVICE,任務(wù)組織和發(fā)送是在CPU里完成,但并行計(jì)算是在GPU里完成,每當(dāng)CPU碰到需要并行計(jì)算任務(wù),則將要做運(yùn)算組織成kernel,然后分配給GPU去執(zhí)行。CUDA在把任務(wù)正式提交給GPU前,會(huì)對(duì)kernel做些處理,讓kernel符合GPU體系架構(gòu),能夠把GPU想想成擁有上百個(gè)核CPU,把kernel當(dāng)成一個(gè)要?jiǎng)?chuàng)建為線程函數(shù),所以CUDA要將kernel創(chuàng)建上百個(gè)thread送到GPU中各個(gè)核上去運(yùn)行,但為了愈加好利用GPU資源,提升并行度,CUDA還要將這些thread加以優(yōu)化組織,將能利用共有資源線程組織到一個(gè)threadblock中,同一threadblock中thread能夠經(jīng)過(guò)shareDmemory共享數(shù)據(jù),每個(gè)threadblock最高可擁有512個(gè)線程。擁有一樣維度一樣kernelthreadblock被組織成一個(gè)grid,而CUDA處理任務(wù)最大單元便是grid了。這是CUDA中能夠使用內(nèi)存種類:

registers(Read-writeper-thread)

localmemory(Read-writeper-thread)

sharedmemory(Read-writeper-block)

globalmemory(Read-writeper-grid)

constantmemory(Read-onlyper-grid)

texturememory(Read-onlyper-grid)

GridGridGlobalMemoryBlock(0,0)SharedMemoryThread(0,0)RegistersThread(1,0)RegistersBlock(1,0)SharedMemoryThread(0,0)RegistersThread(1,0)RegistersHost圖2.3CUDA線程層次grid是怎樣在GPU上執(zhí)行呢?首先,每個(gè)SM最多能分配8個(gè)threadblock或者1024個(gè)thread,以待執(zhí)行,然后將這些thread組織成warp,每個(gè)warp包含32個(gè)thread,因?yàn)镾P執(zhí)行延遲通常是4個(gè)周期,類似執(zhí)行管線長(zhǎng)度有4級(jí),所以每個(gè)SP同時(shí)能夠執(zhí)行4條相同指令來(lái)充分消除這些延遲而一個(gè)SM中有8個(gè)SP,所以能夠同時(shí)執(zhí)行32個(gè)指令??梢?jiàn)GT200SM一次可執(zhí)行不一樣數(shù)據(jù)32條相同指令,而且能夠同時(shí)亂序執(zhí)行32個(gè)warp,因?yàn)楹芏嘀噶顖?zhí)行都是有延遲,比如等候輸入等,所以這時(shí)候就能夠切換到另外一個(gè)不用等候warp指令執(zhí)行了。很顯然SM沒(méi)有分支預(yù)測(cè)部分,也沒(méi)有錯(cuò)誤恢復(fù)機(jī)制,SM假設(shè)沒(méi)有隨機(jī)執(zhí)行指令,所以在碰到分支時(shí)候,SM必須等候分支跳轉(zhuǎn)地址計(jì)算完成才取下面指令,而后才開(kāi)始繼續(xù)工作。2.2ATISTREAMAMD/ATI企業(yè)在其GPGPU通用計(jì)算產(chǎn)品Stream中采取了Brook改進(jìn)版本Brook+作為高級(jí)開(kāi)發(fā)語(yǔ)言。Brook+編譯器工作方式與Brook不一樣,提升了效率。在推出Brook+1.3,在語(yǔ)法和編程模型上有顯著改進(jìn),并具備有效線程間數(shù)據(jù)通信伎倆,遺憾是,因?yàn)橥茝V不力,AMD將不再繼續(xù)升級(jí)BROOK+,轉(zhuǎn)而推進(jìn)并支持OPENCL。

ATI流計(jì)算模型包含了一套軟件系統(tǒng)以及ATI流處理器。下列圖展示了ATI流處理模塊之間關(guān)系:

圖2.4ATISTREAM架構(gòu)ATI流計(jì)算軟件為客戶端用戶提供了一個(gè)靈活完整接口,從而使開(kāi)發(fā)人員充分利用ATI硬件特征進(jìn)行流計(jì)算。

軟件主要分為下面幾個(gè)模塊:編譯器:把Brook+內(nèi)核代碼編譯成為獨(dú)立C++文件以及IL代碼。流處理器設(shè)備驅(qū)動(dòng):ATI流計(jì)算抽象模型(CAL)。性能分析工具:StreamKernelAnalyzer,能夠及時(shí)編譯Brook+,IL代碼,而且分析程序性能。性能庫(kù):AMD關(guān)鍵數(shù)學(xué)庫(kù)(ACML),這部分是專用于特定領(lǐng)域。在最新一代ATI流處理器中,編程模型應(yīng)用一個(gè)通用Shader語(yǔ)言。可編程流處理器能夠執(zhí)行用戶指定各種程序,這些程序被稱為內(nèi)核函數(shù)(Kernel)。這些流處理器能夠以一個(gè)單指令多數(shù)據(jù)(SIMD)形式執(zhí)行一些與圖形完全無(wú)關(guān)任務(wù)。這種編程模型被稱為流計(jì)算,內(nèi)存中存放大量相同類型數(shù)據(jù)能夠被分配到不一樣SIMD引擎中進(jìn)行處理,從而生成輸出數(shù)據(jù)。每一個(gè)在SIMD引擎中被處理實(shí)例被稱作為線程(Thread)。在每個(gè)Pass里,能夠有大量線程被映射到一個(gè)矩形區(qū)域中,這個(gè)矩形區(qū)域被稱為執(zhí)行區(qū)域(DomainofExecution)。流計(jì)算處理器為每組線程都分配到一組線程處理器(ThreadProcessor)中,直到全部線程都被處理。只有之前線程完成計(jì)算之后,后面線程才能夠得四處理。下列圖為一個(gè)簡(jiǎn)化ATI流計(jì)算模型:

圖2.5STREAM架構(gòu)流計(jì)算模型

圖2.6流處理器簡(jiǎn)易模型上圖為ATI流處理器簡(jiǎn)易模型。不一樣型號(hào)GPU會(huì)有不一樣性能參數(shù)(比如SIMD引擎數(shù)量),不過(guò)基本都是一樣模型。一個(gè)流處理器里面包含很多SIMD引擎。每個(gè)SIMD引擎又包含了很多Thread處理器,每個(gè)線程處理器能夠?qū)τ讵?dú)立數(shù)據(jù)進(jìn)行內(nèi)核所要求操作。線程處理器還不算是最小處理單元,一個(gè)線程處理器里面還包含了一定數(shù)量流計(jì)算關(guān)鍵,這些關(guān)鍵才是最基本進(jìn)行處理單元,他們能夠進(jìn)行整數(shù),單精度浮點(diǎn)數(shù),雙精度浮點(diǎn)數(shù)等操作。在同一時(shí)間內(nèi),一個(gè)SIMD引擎中全部線程處理器都執(zhí)行相同指令集,不一樣SIMD引擎是能夠執(zhí)行不一樣指令。

圖2.7ATISTREAM硬件架構(gòu)一個(gè)線程處理器中能夠同時(shí)最多處理五條指令。我們看到上圖中,一個(gè)線程處理器中有五個(gè)Streamcore。其中一個(gè)是能夠計(jì)算超越函數(shù),剩下四個(gè)能夠同時(shí)計(jì)算當(dāng)精度浮點(diǎn)數(shù)。雙精度浮點(diǎn)數(shù)處理是經(jīng)過(guò)把四個(gè)streamcore合起來(lái)才能夠處理,所以相對(duì)來(lái)說(shuō)要慢一些。除了streamcore,每個(gè)線程處理器實(shí)際還包含一個(gè)流控制器,他能夠處理一些條件分支情況。不一樣型號(hào)GPU細(xì)節(jié)參數(shù)都是不一樣。比如,在ATIRadeon3870GPU(RV670)這款GPU里面一共包含了4個(gè)SIMD引擎,每個(gè)SIMD引擎里面有16個(gè)線程處理器,而且每個(gè)處理器里面有5個(gè)streamcore。一共是320個(gè)物理處理關(guān)鍵單元。但同一個(gè)cycle中,每個(gè)SIMD引擎中全部線程處理器都必須執(zhí)行同一指令。為了隱藏內(nèi)存訪問(wèn)所帶來(lái)延遲,線程在發(fā)送了內(nèi)存訪問(wèn)命令之后會(huì)被立刻切換。GPU流處理器里面Cache并沒(méi)有CPU多,對(duì)于內(nèi)存訪問(wèn)優(yōu)化是經(jīng)過(guò)線程之間切換來(lái)進(jìn)行。在一個(gè)線程處理器中,每4個(gè)cycle中,實(shí)際能夠?qū)τ诰€程處理器指定四條指令。比如,還是剛才那個(gè)3870例子中,16個(gè)線程處理器執(zhí)行一樣指令,每個(gè)線程處理器中能夠一次執(zhí)行四條指令(因?yàn)槊總€(gè)線程處理器中有4個(gè)streamcore)。實(shí)際上,從外部看,3870SIMD引擎能夠同時(shí)處理64條指令。被同時(shí)執(zhí)行全部線程集合被稱為wavefront。這里面我們能夠了解為3870wavefront大小是64。wavefront大小是依照GPU型號(hào)不一樣而可變。比如,HD2600和HD2400wavefront大小分別是32和16,而AMDFireStream9170wavefront大小就是64了。在ATI流計(jì)算模型中,有三種內(nèi)存模型:host端內(nèi)存:這部分內(nèi)存就是host程序數(shù)據(jù)內(nèi)存等。他能夠被host端訪問(wèn),不過(guò)不能被GPUkernel訪問(wèn)。PCIe內(nèi)存:這部分內(nèi)存能夠被host端或者GPU端訪問(wèn),不過(guò)要做好同時(shí)工作。在CAL里面要用calCtxIsEventDone函數(shù),Brook+和OpenCL都已經(jīng)把這些內(nèi)容透明了,用戶能夠無(wú)視。Local內(nèi)存:這里局部是相對(duì)于GPU來(lái)說(shuō),那么很顯然,這種內(nèi)存是能夠被GPU訪問(wèn),不過(guò)不能被host端訪問(wèn)。有三種方式能夠拷貝內(nèi)存到流處理器內(nèi)存(局部?jī)?nèi)存)中:經(jīng)過(guò)calResMap經(jīng)過(guò)calCtxMemCopy經(jīng)過(guò)一些自定義內(nèi)核函數(shù)從PCIe內(nèi)存中拷貝。高效流處理器分配機(jī)制能夠很好隱藏內(nèi)存訪問(wèn)所帶來(lái)延遲。訪問(wèn)全局內(nèi)存cycle數(shù)量級(jí)在200左右,而訪問(wèn)sharedmemory或者register就會(huì)在幾個(gè)cycle內(nèi)搞定。這個(gè)差距是非常大。所認(rèn)為了能夠有效隱藏全局訪問(wèn)延遲,我們需要讓計(jì)算更密集。就是說(shuō)在盡可能少訪問(wèn)內(nèi)存情況下,多進(jìn)行計(jì)算操作。另外還要有足夠線程數(shù)量,上面例子是個(gè)最簡(jiǎn)單例子,訪問(wèn)全局延遲遠(yuǎn)遠(yuǎn)要大于四個(gè)指令讀取命令。一定要盡可能確保線程數(shù)量足夠,這么才能最好利用GPU硬件特征。當(dāng)然,這里絕對(duì)不是說(shuō)為了愈加好利用硬件,要增加一些無(wú)關(guān)計(jì)算,以及一些無(wú)用線程。線程當(dāng)然是越少越快,不過(guò)假如少到一定程度,甚至比streamcore數(shù)量還要少,GPU利用率是非常低。2.3INTELLarrabeeLarrabee將是Intel第一款獨(dú)立圖形處理器。它將是一款能夠執(zhí)行和多核CPU一樣任務(wù)、不過(guò)經(jīng)過(guò)提供更多處理數(shù)據(jù)通道來(lái)交付更多并行性多核處理器。Larrabee與AMD、NVIDIA通用計(jì)算圖形處理器技術(shù)不一樣,后二者使用StreamProcessing(流處理)來(lái)滿足對(duì)GPU計(jì)算需求。而Larrabee基于傳統(tǒng)x86架構(gòu),是一個(gè)可編程多關(guān)鍵架構(gòu),不一樣版本會(huì)有不一樣數(shù)量關(guān)鍵,并使用經(jīng)過(guò)調(diào)整x86指令集,性能上將會(huì)達(dá)成萬(wàn)億次浮點(diǎn)運(yùn)算級(jí)別。值得注意是,Larrabee中處理關(guān)鍵為次序執(zhí)行關(guān)鍵,與CPU中亂序執(zhí)行關(guān)鍵不一樣。在Larrabee內(nèi)部,每一個(gè)處理關(guān)鍵都能夠發(fā)出2條指令,這種架構(gòu)是繼承了最初飛躍處理器設(shè)計(jì)。首先Larrabee架構(gòu)具備衍生自雙指令執(zhí)行Pentium處理器純量管線,并采取具備完整連貫性高速緩存架構(gòu)短執(zhí)行管線。Larrabee架構(gòu)提供顯著最新改良技術(shù),如寬幅向量處理單元、多線程、64位延伸指令,以及精密指令預(yù)取功效。這將促使可用之運(yùn)算能力大幅提升,并能發(fā)揮程序設(shè)計(jì)師對(duì)英特爾架構(gòu)熟悉度及輕易入門程序開(kāi)發(fā)優(yōu)勢(shì)。同時(shí)Larrabee執(zhí)行流水線階層非常短,最初Pentium處理器執(zhí)行流水線僅有5個(gè)階層,這意味著擁有不錯(cuò)運(yùn)算效率。Larrabee將包含數(shù)個(gè)支持繪圖及其余應(yīng)用程序固定功效邏輯區(qū)塊,這些運(yùn)算單元被慎重選取以平衡及強(qiáng)化每瓦效能,并對(duì)架構(gòu)彈性與可編程化能力有所貢獻(xiàn)。Larrabee原生程序設(shè)計(jì)模式支持高度平行運(yùn)算應(yīng)用程序,亦包含采取非規(guī)則性數(shù)據(jù)結(jié)構(gòu)運(yùn)算。這項(xiàng)特征將促使繪圖API開(kāi)發(fā)、新繪圖算法更加快速創(chuàng)新,以及在繪圖處理器上執(zhí)行以現(xiàn)有個(gè)人計(jì)算機(jī)軟件開(kāi)發(fā)工具軟件所實(shí)作之真正通常目標(biāo)運(yùn)算。圖2.7三種架構(gòu)對(duì)比在算矢量處理單元部分。Pentium因?yàn)樵O(shè)計(jì)年代久遠(yuǎn),未曾出現(xiàn)過(guò)SIMD單指令多數(shù)據(jù)單元,而Larrabee在這方面有了巨大飛躍,支持16路矢量ALU算數(shù)邏輯單元。其運(yùn)算效能非常強(qiáng)大,這16路能夠同時(shí)執(zhí)行32bit浮點(diǎn)操作,這比INTEL所生產(chǎn)過(guò)任何處理器都要強(qiáng)大許多。介于Larrabee本身架構(gòu)優(yōu)勢(shì),這些矢量單元會(huì)愈加好發(fā)揮其作用。INTEL在指令預(yù)取方面會(huì)為L(zhǎng)arrabee做更多海量并行數(shù)據(jù)處理方面優(yōu)化。Larrabee全部超強(qiáng)性能,都是基于這16路矢量ALU邏輯運(yùn)算單元。這僅僅是Larrabee一個(gè)關(guān)鍵,當(dāng)它用于處理3D圖像時(shí)候,其內(nèi)部還有很多關(guān)鍵在并行工作。另外,INTEL還對(duì)Larrabee架構(gòu)指令集擴(kuò)展進(jìn)行了優(yōu)化改進(jìn)。比如16-Widevector指令,streamprocessing最好化緩存控制指令等。另外64-bit指令也得到了支持。簡(jiǎn)單得說(shuō)就是以x86基本指令集為基礎(chǔ)加上適當(dāng)streamprocessing指令。另外聽(tīng)說(shuō)當(dāng)前GPU原生指令集與CPU指令集非常相同。INTEL關(guān)于Larrabee指令擴(kuò)展并沒(méi)有進(jìn)行詳細(xì)介紹。GPU也有L2緩存因?yàn)榛赑entium處理器架構(gòu),所以Larrabee一樣沿用了完整L1/L2緩存設(shè)計(jì)。在顯存控制器方面,AMD和NVIDIAGPU使用是64bit顯存控制器,而且在芯片內(nèi)只有一組控制器。鑒于INTELLarrabee采取多關(guān)鍵設(shè)計(jì),內(nèi)部需要更多顯存帶寬,Larrabee將采取1024-bit雙向環(huán)形總線,單向傳輸位寬為512-bit。在加上GDDR5顯存助力,Larrabee將會(huì)有不錯(cuò)性能表現(xiàn)。Larrabee支持超高速相關(guān)性緩存,而且能夠跨越關(guān)鍵通信。L2高速緩存能夠被分割為2個(gè)部分,同時(shí)能夠用環(huán)形總線保持他們數(shù)據(jù)一致性。這么能夠促進(jìn)信息愈加好被傳遞,也讓繁重?cái)?shù)據(jù)處理變得愈加輕松。假如Larrabee全部處理關(guān)鍵都經(jīng)過(guò)一個(gè)雙向環(huán)形總線連接,每個(gè)方向提供512bit位寬。這條總線工作頻率,可能與Larrabee主頻相同。我們假設(shè)一下Larrabee運(yùn)行頻率為2GHz以上,那么這條總線將會(huì)提供非常高帶寬吞吐量,而且它工作頻率要遠(yuǎn)遠(yuǎn)高于AMDGPU。除此之外,Larrabee還同時(shí)能夠支持4路硬件線程。而Larrabee也能夠在CPU內(nèi)關(guān)鍵進(jìn)行4組套轉(zhuǎn)換。INTELCPU比如Nehalem都支持2-way多線程,Larrabee則為4-waymulti-threadCPU。而GPU產(chǎn)品中支持多線程則極少。GPU產(chǎn)品通常配置有數(shù)十以上線程硬件轉(zhuǎn)換功效。比如GeForceGT200在32存放器/線程時(shí)轉(zhuǎn)換為16warp。依照Larrabee資料,硬件多線程設(shè)計(jì)是為了在進(jìn)行編譯時(shí)候降低二級(jí)緩存等候時(shí)間為目標(biāo)。這與GPU硬件多threading不一樣。另外Larrabee硬件多線程比GPU少原因是架構(gòu)上不一樣。值得注意是,INTEL指出Larrabee“全方面支持IEEE標(biāo)準(zhǔn)單、雙精度浮點(diǎn)運(yùn)算”。相較于GPGPU來(lái)說(shuō),它最大優(yōu)勢(shì)就在于采取了大家熟悉x86架構(gòu)。現(xiàn)在多數(shù)軟件工程師仍不熟悉怎樣將GPU應(yīng)用在多任務(wù)處理及平行運(yùn)算上,這點(diǎn)就占了不少優(yōu)勢(shì)。但遺憾是,Intel近日表示將推遲Larrabee圖形處理器商業(yè)公布,原本Intel計(jì)劃在明年推出這款芯片,現(xiàn)在也沒(méi)有公布新公布日期。Intel最初計(jì)劃在開(kāi)始銷售這款多核芯片,不過(guò)現(xiàn)在日程卻落后下來(lái),Intel表示這款芯片還處于開(kāi)發(fā)階段,并仍將致力于交付這款圖形芯片,并將在明年深入討論這一計(jì)劃。Intel將在明年公布面向開(kāi)發(fā)者Larrabee樣本,以及一系列寫入和測(cè)試針對(duì)這款芯片工具。2.4OpenCL

雙核處理器計(jì)算機(jī)主導(dǎo)市場(chǎng)已經(jīng)快有5個(gè)年頭了,但為數(shù)眾多應(yīng)用軟件到現(xiàn)在為止仍不能很好支持雙核CPU,就算能夠支持雙核,在未來(lái)面對(duì)四核、八核或更多關(guān)鍵處理器時(shí)又要重新開(kāi)發(fā)。這個(gè)問(wèn)題都是因?yàn)槠脚_(tái)差異造成,也正因?yàn)檫@種差異存在,嚴(yán)重降低了軟件在各個(gè)平臺(tái)之間移植和運(yùn)行效率,為了處理這個(gè)問(wèn)題,6月中旬,負(fù)責(zé)推廣OpenGL等開(kāi)放式行業(yè)標(biāo)準(zhǔn)KhronosGroup宣告,它將正式組建一個(gè)工作組,起草針對(duì)CPU和GPU這么異架構(gòu)系統(tǒng)進(jìn)行并行計(jì)算編程無(wú)償開(kāi)放式API標(biāo)準(zhǔn)OpenCL(OpenComputingLanguage,即開(kāi)放計(jì)算語(yǔ)言)。

OpenCL是第一個(gè)面向異構(gòu)系統(tǒng)通用目標(biāo)并行編程開(kāi)放式、無(wú)償標(biāo)準(zhǔn),也是一個(gè)統(tǒng)一編程環(huán)境,便于軟件開(kāi)發(fā)人員為高性能計(jì)算服務(wù)器、桌面計(jì)算系統(tǒng)、手持設(shè)備編寫高效輕便代碼,而且廣泛適適用于多關(guān)鍵處理器(CPU)、圖形處理器(GPU)、Cell類型架構(gòu)以及數(shù)字信號(hào)處理器(DSP)等其余并行處理器,在游戲、娛樂(lè)、科研、醫(yī)療等各種領(lǐng)域都有寬廣發(fā)展前景。

圖2.8OpenCL想成為各種處理器應(yīng)用一個(gè)交集正因?yàn)锳pple等很多大企業(yè)支持,OpenCL從項(xiàng)目立項(xiàng)到去年12月份公布1.0標(biāo)準(zhǔn),之間僅用了6個(gè)月時(shí)間;而且現(xiàn)在宣稱支持OpenCL,并參加其中組員幾乎涵蓋了全球主要處理器、計(jì)算芯片供給商。

圖2.9已經(jīng)宣告支持OpenCLIT企業(yè)為了確保通用計(jì)算,OpenCL從五個(gè)方面進(jìn)行了要求,這其中現(xiàn)有硬件平臺(tái),也一樣包含有軟件平臺(tái)。1.系統(tǒng)調(diào)用全部硬件資源首先,OpenCL能夠調(diào)用系統(tǒng)內(nèi)全部計(jì)算資源,也就是說(shuō)不論是CPU、GPU,還是今后額外加入?yún)f(xié)處理器,全部都能夠在公共計(jì)算平臺(tái)上得到調(diào)用。今后用戶在使用基于OpenCL標(biāo)準(zhǔn)編寫程序時(shí),再也不會(huì)出現(xiàn)CPU占用率100%,而GPU占用率僅有1%這么不平衡現(xiàn)象了。在此基礎(chǔ)上,OpenCL還要加緊運(yùn)算速度并提升運(yùn)算效率,這個(gè)特點(diǎn)有點(diǎn)類似與現(xiàn)在分布式計(jì)算(也稱為“云計(jì)算”)——不一樣地方在于,云計(jì)算將龐大運(yùn)算任務(wù)分拆為很多小份,然后分配給互聯(lián)網(wǎng)上各臺(tái)計(jì)算機(jī);而OpenCL要做事情是將電腦中一個(gè)或者多個(gè)運(yùn)行程序按運(yùn)算量,平衡分配給系統(tǒng)中各個(gè)運(yùn)算部分。圖2.10OPENCL架構(gòu)OpenCL將系統(tǒng)中存放器抽象成一個(gè)全局內(nèi)存模型,比如我們使用計(jì)算機(jī)有4GB內(nèi)存、1GB顯存,但在OpenCL看來(lái)就是一個(gè)5GB存放器整體。不光是PC系統(tǒng),對(duì)于嵌入式設(shè)備中常見(jiàn)ARM、DSP、MIPS等處理關(guān)鍵,OpenCL也能夠提供良好支持。假如嵌入式處理器中集成有支持OpenCL規(guī)范3D、視頻加速模塊,這些模塊將飾演與ARM協(xié)處理器類似角色,深入加強(qiáng)系統(tǒng)性能。為了達(dá)成各種處理器平臺(tái)集中調(diào)用,OpenCL會(huì)將系統(tǒng)中各個(gè)處理器或者處理關(guān)鍵看作一個(gè)個(gè)處理單元。每個(gè)處理單元既能夠自行處理數(shù)據(jù),又能夠經(jīng)過(guò)OpenCL內(nèi)核進(jìn)行相互交流、提升工作效率。換句話講,程序員在寫程序時(shí)候面向是OpenCL內(nèi)核,他不用去管這個(gè)程序需要調(diào)用CPU,又或者調(diào)用GPU,將這些事情甩給OpenCL內(nèi)核去完成就能夠了。2.也是C擴(kuò)展對(duì)計(jì)算機(jī)編程有所了解人都知道,現(xiàn)在計(jì)算機(jī)語(yǔ)言種類繁多,最基礎(chǔ)機(jī)器語(yǔ)言生澀難懂,所以程序員們多使用高級(jí)語(yǔ)言。在高級(jí)語(yǔ)言中,又以C語(yǔ)言用途最廣、歷史也非常悠久,不論是微軟C++語(yǔ)言,又或者NVIDIACUDAAPI都基于C語(yǔ)言架構(gòu)體系。所以O(shè)penCL也將C語(yǔ)言作為并行程序模型基礎(chǔ),這么能夠讓廣大程序員輕松上手,并加緊OpenCL程序研發(fā)速度以及確保可移植性。3.與現(xiàn)有軟件體系通用OpenCL能否打開(kāi)市場(chǎng)關(guān)鍵原因就是能否實(shí)現(xiàn)與現(xiàn)有軟件資源對(duì)接,并快速推出新軟件。舉個(gè)最顯著例子,能從OpenCL中獲益最大當(dāng)屬GPU通用計(jì)算程序,一直以來(lái)GPU硬件發(fā)展和OpenGL(及其它3DAPI,如DirectX)都是相輔相成;所以,OpenGL即使只是面向3D處理領(lǐng)域程序接口,但其調(diào)用GPU資源能力和效率是毋庸置疑。在此基礎(chǔ)之上,OpenCL在制訂詳細(xì)規(guī)范時(shí),就能夠充分利用OpenGL現(xiàn)有一些特點(diǎn),“依葫蘆畫瓢”,從而能夠以更加快速度和更高效率來(lái)完成GPU通用計(jì)算程序。4.實(shí)現(xiàn)硬件平臺(tái)上通用正如文章開(kāi)始時(shí)所說(shuō)那樣,現(xiàn)在軟件開(kāi)發(fā)商往往要針對(duì)多個(gè)平臺(tái)開(kāi)發(fā)同一款軟件。這么一來(lái),參加開(kāi)發(fā)程序員就要吃透每一個(gè)硬件平臺(tái)結(jié)構(gòu)和開(kāi)發(fā)特征,這么才能做出發(fā)揮該平臺(tái)特點(diǎn)軟件產(chǎn)品。毫無(wú)疑問(wèn)地說(shuō),這是一個(gè)痛苦過(guò)程,不但要極大提升軟件開(kāi)發(fā)成本,也會(huì)因?yàn)殚_(kāi)發(fā)周期過(guò)長(zhǎng)而失去市場(chǎng)先機(jī)。OpenCL就很好地考慮到這點(diǎn),在未來(lái)融入OpenCL設(shè)計(jì)軟件將大大提升其跨平臺(tái)時(shí)兼容性,不但要在PC、游戲主機(jī)、服務(wù)器這么大塊頭上實(shí)現(xiàn)通用,還要向下囊括掌上設(shè)備以及嵌入式平臺(tái),即各種便攜游戲機(jī)、智能手機(jī)等等。我們能夠構(gòu)想一下,未來(lái)程序開(kāi)發(fā)人員只需要編寫一套程序安裝包,然后用用戶自行對(duì)照自己硬件條件,經(jīng)過(guò)調(diào)整相關(guān)設(shè)置來(lái)實(shí)現(xiàn)不一樣體系平臺(tái)、不一樣性能平臺(tái)之間程序通用性。這么一來(lái),OpenCL在實(shí)現(xiàn)通用計(jì)算同時(shí),也完成了在各個(gè)硬件平臺(tái)上跨平臺(tái)運(yùn)行。5.承前啟后,向上兼容在PC(x86)平臺(tái)上,各類軟件能夠說(shuō)95%以上實(shí)現(xiàn)向上兼容,為了確保程序延續(xù)性,OpenCL標(biāo)準(zhǔn)在制訂之初就考慮了向上兼容問(wèn)題,這點(diǎn)相信也是從x86架構(gòu)上得到啟發(fā)。OpenCL開(kāi)發(fā)人員表示,經(jīng)過(guò)可擴(kuò)展API以及通用庫(kù)文件來(lái)確保未來(lái)新硬件平臺(tái)也能夠運(yùn)行今天軟件。這么就讓OpenCL有了愈加好平臺(tái)延續(xù)性,為未來(lái)發(fā)展扎實(shí)了基礎(chǔ)。OpenCL并不是第一個(gè)基于通用計(jì)算標(biāo)準(zhǔn),不過(guò)三家競(jìng)爭(zhēng)激烈半導(dǎo)體巨頭,在支持OpenCL問(wèn)題上卻出奇一致。即使現(xiàn)有通用計(jì)算平臺(tái)已經(jīng)在分布式運(yùn)算、視頻加速方面取得了一定進(jìn)展,不過(guò)利用GPU或者是其它處理器進(jìn)行通用計(jì)算依然是一個(gè)新興市場(chǎng)。假如沒(méi)有一個(gè)強(qiáng)有力通用開(kāi)放協(xié)議來(lái)支持,任何企業(yè)都難以憑借一己之力快速和有效推廣通用計(jì)算理念。有了OpenCL支持,通用計(jì)算市場(chǎng)這塊蛋糕將會(huì)快速膨脹,這對(duì)于任何一家參加其中企業(yè)來(lái)說(shuō),都遠(yuǎn)遠(yuǎn)優(yōu)于獨(dú)自推廣自己專屬平臺(tái)。即使OpenCL現(xiàn)在只是一個(gè)襁褓中嬰兒,處于主流操作系統(tǒng)(微軟)不支持、軟硬件開(kāi)發(fā)未上正軌階段,不過(guò)不論怎樣,OpenCL向整個(gè)IT業(yè)走向通用計(jì)算大路上邁出了主要一步。按照其描繪藍(lán)圖,未來(lái)軟硬件都將從全平臺(tái)加速中取得極大性能提升。以IT產(chǎn)業(yè)發(fā)展速度,相信在很快未來(lái),OpenCL和通用計(jì)算必將貫通整個(gè)IT產(chǎn)業(yè),帶來(lái)系統(tǒng)設(shè)計(jì)和搭配新理念,并大幅提升硬件系統(tǒng)性能功耗比。

2.5directcomputer在OpenCL組員當(dāng)中,缺乏了一個(gè)有分量名字——Microsoft,其實(shí)微軟自有打算。微軟DirectCompute是一個(gè)全新GPU計(jì)算應(yīng)用程序接口(API),運(yùn)行于GPU架構(gòu)之上,它與OpenCL一樣,為開(kāi)發(fā)人員提供了并行計(jì)算API。當(dāng)前DX10GPU以及未來(lái)DX11GPU都能夠支持DirectCompute。它讓開(kāi)發(fā)人員能夠利用GPU大規(guī)模并行計(jì)算能力,創(chuàng)造出引人入勝消費(fèi)級(jí)和專業(yè)級(jí)計(jì)算應(yīng)用程序。在3月于美國(guó)加州舊金山舉行游戲開(kāi)發(fā)者大會(huì)(GDC)上,NVIDIA率先展示了預(yù)定年底推出DirectX11中主要功效即關(guān)于并行計(jì)算功效DirectCompute,NVIDIA展現(xiàn)三款Demo運(yùn)行于NVIDIA現(xiàn)有CUDA架構(gòu)上,WindowsVista和Windows7皆適用?,F(xiàn)有DX10類GPU和未來(lái)DX11CUDA架構(gòu)皆將支持DirectCompute,這讓開(kāi)發(fā)人員能夠充分利用NVIDIAGPU強(qiáng)大平行運(yùn)算能力。DirectCompute在現(xiàn)在兩億顆DirectX10GPU和未來(lái)DirectX11GPU上運(yùn)行良好。我們知道,下一代主流操作系統(tǒng)Windows7關(guān)鍵組成部分首次包含了GPU(圖形處理器)計(jì)算,這也意味著GPU不再僅用于圖形。在Windows7中,CPU與GPU組成了協(xié)同處理環(huán)境。它們分工是,CPU運(yùn)算非常復(fù)雜序列代碼,而GPU則運(yùn)行大規(guī)模并行應(yīng)用程序。所以,CPU與GPU功效平衡,能夠提供更加快、更可視化用戶體驗(yàn)。而Windows7中增添最主要一個(gè)組成部分,就是針對(duì)GPU支持運(yùn)算應(yīng)用程序DirectComputeAPI。這種API使用戶能夠享受非凡視覺(jué)體驗(yàn)和互動(dòng)體驗(yàn),比如高質(zhì)量視頻、照片等娛樂(lè)方式、方便快速與設(shè)備互動(dòng)、反應(yīng)更加快更靈敏電腦、逼真游戲效果等。雙核處理器早已經(jīng)成為PC系統(tǒng)標(biāo)準(zhǔn)配置,三核、四核更是進(jìn)入主流市場(chǎng),然而,現(xiàn)在只有為數(shù)不多游戲產(chǎn)品能夠?qū)Χ嗪似脚_(tái)提供良好支持,原因在于為多核平臺(tái)編程十分困難,只有高水準(zhǔn)開(kāi)發(fā)者才能夠勝任,但顯然并不是全部游戲企業(yè)都有這么一流好手。所以,直到今天為主,仍有很多數(shù)游戲都還只能在單線程下工作,即只能支持CPU單核運(yùn)作,其它關(guān)鍵計(jì)算力無(wú)法得到充分發(fā)掘。只要開(kāi)發(fā)者采取DirectX11作為開(kāi)發(fā)平臺(tái),那么代碼本身就能直接支持多核平臺(tái),DirectX11在底層接管了多核平臺(tái)資源分配問(wèn)題。DirectX11預(yù)示著多線程游戲真正步入現(xiàn)實(shí),我們才能夠說(shuō)多關(guān)鍵處理器被真正派上了用場(chǎng)。對(duì)于一套四核游戲平臺(tái),當(dāng)某個(gè)渲染場(chǎng)景中有些人像和它三個(gè)鏡像,DirectX11就會(huì)開(kāi)啟四個(gè)線程進(jìn)行并行處理,效率顯然要比現(xiàn)在單線程處理方式快上數(shù)倍。而更令人興奮是:多線程技術(shù)不但適適用于DirectX11平臺(tái),它同時(shí)也能夠讓現(xiàn)有DirectX10硬件受益。比如說(shuō)基于DirectX11開(kāi)發(fā)新款游戲,能夠很好支持多線程,而當(dāng)它在DirectX10硬件平臺(tái)上運(yùn)行時(shí),多核優(yōu)化機(jī)能依然有效,前提是AMD和NVIDIA必須為各自DX10硬件開(kāi)發(fā)出對(duì)應(yīng)驅(qū)動(dòng)軟件才行——就現(xiàn)在看來(lái),這項(xiàng)工作進(jìn)展非常順利。在DirectX11中,HLSL(MS'sHighLevelShaderLanguage,微軟高級(jí)程序語(yǔ)言)也被升級(jí)到5.0版本。HLSL與C語(yǔ)言比較類似,新版本改進(jìn)就是新增了類(Class)和接口(interface)支持,實(shí)現(xiàn)了面向?qū)ο笾С?。這么升級(jí)顯然順應(yīng)了時(shí)尚,不過(guò)我們相信依然會(huì)有很多程序員表示不滿,因?yàn)镠LSL5.0依然還不支持指針功效。

DirectX11技術(shù)改進(jìn)是漸進(jìn)式,并緊緊圍繞著開(kāi)發(fā)者需求,多線程、Tessellation鑲嵌化技術(shù)、ComputeShader通用計(jì)算著色器、面向?qū)ο驢LSL5.0,這些特征都極具實(shí)用價(jià)值,開(kāi)發(fā)者沒(méi)有拒絕理由。在微軟定義中,GPGPU和數(shù)據(jù)并行處理屬于一樣概念,它們能夠經(jīng)過(guò)GPU新并行處理模式ComputeShader來(lái)實(shí)現(xiàn),ComputeShader整合在Direct3D之中,能夠支持更多通用架構(gòu),通用數(shù)據(jù)結(jié)構(gòu)和通用算法。ComputeShader主要特征包含以下幾個(gè)方面:一是可預(yù)測(cè)線程調(diào)用。二是在線程之間共享存放器,從而減輕存放器壓力,降低無(wú)須要計(jì)算和I/O。三是離散寫入,增加了靈活性,能夠讀/寫任意數(shù)據(jù)結(jié)構(gòu),允許加入新算法以及整合Direct3D資源。它目標(biāo)應(yīng)用包含圖像/后處理、物理效果、光線追蹤、A-Buffer/OIT以及人工智能等等。ComputerShader并不像頂點(diǎn)著色器(VertexShader)和像素著色器(PixelShader)那樣作為管線一部分,而是與管線整合在一起。從管線輸出場(chǎng)景圖像經(jīng)過(guò)ComputeShader加工(比如加上光線追蹤效果或者物理加速效果),最終輸出成為最終圖像。我們已經(jīng)看到,一些新近上市應(yīng)用程序能夠利用GPU(圖形處理器)計(jì)算能力。它們展現(xiàn)了大幅性能提升。DirectCompute將讓開(kāi)發(fā)人員能夠更輕易地編寫應(yīng)用程序以及為數(shù)以百萬(wàn)計(jì)更多用戶帶來(lái)這些優(yōu)勢(shì)、提升數(shù)字媒體應(yīng)用程序性能。DirectCompute經(jīng)過(guò)讓數(shù)以百萬(wàn)計(jì)Windows7操作系統(tǒng)用戶都能夠觸及這項(xiàng)技術(shù),將使GPU計(jì)算從小眾市場(chǎng)邁入主流?!斑@當(dāng)然意味著,在軟件行業(yè)中,編寫可利用GPU(以及愈加好地利用多個(gè)CPU關(guān)鍵)特定種類應(yīng)用程序?qū)⒆兊糜悠毡?。不論是OpenCL、DirectCompute還是GPU特有開(kāi)發(fā)套件,GPU計(jì)算都將成為計(jì)算行業(yè)向前發(fā)展一支主要力量?!?.6小結(jié)讓GPU進(jìn)行通用計(jì)算已經(jīng)顯示出廣泛應(yīng)用前景,NVIDIA和AMD都推出了相關(guān)處理方案。伴隨OpenCL公布,計(jì)算將邁上一個(gè)新臺(tái)階,它將掀起GPU和CPU革命高潮,這就是異構(gòu)化計(jì)算API時(shí)代?,F(xiàn)在,AMD和NVIDIA兩家企業(yè)都已經(jīng)推出了用于通用計(jì)算硬件平臺(tái),還發(fā)展出Stream和CUDA架構(gòu)。不過(guò),在開(kāi)發(fā)者和硬件之間還有一條巨大鴻溝——怎樣讓一樣程序運(yùn)行于不一樣廠商平臺(tái)上,而OpenCL這個(gè)API出現(xiàn),將填平這道鴻溝。就如同3D游戲,用戶不論用哪家廠商顯示芯片都無(wú)所謂,只要芯片能夠支持游戲使用API就足夠了。另首先,在英特爾努力下,Larrabee腳步已經(jīng)離我們?cè)絹?lái)越近,這種劃時(shí)代CPU架構(gòu)看起來(lái)像是CPU和GPU混合體。在OpenCL問(wèn)世之前,NVIDIA已經(jīng)推出了CUDA架構(gòu),而且出售了使用GPU芯片進(jìn)行并行計(jì)算Tesla系列計(jì)算產(chǎn)品。CUDA屬于架構(gòu)范圍,如同處理器X86架構(gòu)一樣,它包含指令集ISA和硬件計(jì)算引擎,還包含一款C語(yǔ)言編譯器,并支持C/C++/FORTRAN/OpenCL/DirectX11等通用語(yǔ)言和API。12月10日,在OpenCL公布之后兩天,NVIDIA宣告CUDA支持OpenCL。

盡管如此,NVIDIA依然希望在OpenCL或者DirectX11之外保留自己一些東西,尤其是CUDAC語(yǔ)言,它是C語(yǔ)言擴(kuò)展,能夠用于CUDA平臺(tái)計(jì)算工具開(kāi)發(fā)。CUDAC語(yǔ)言更適合使用高級(jí)C語(yǔ)言用戶,通常程序員不需要熟悉圖形語(yǔ)言就能夠使用CUDA,而OpenCL則可訪問(wèn)較低層次硬件。經(jīng)過(guò)生成PTX代碼,最終這些代碼被GPU執(zhí)行。現(xiàn)在在異構(gòu)化計(jì)算進(jìn)度上,AMD比NVIDIA稍顯落后。AMD也更緊迫地宣告了Stream將支持OpenCL,而且將努力推進(jìn)API開(kāi)放進(jìn)程,同為KhronosOpenCL工作組關(guān)鍵組員,AMD顯然更不愿意看到競(jìng)爭(zhēng)對(duì)手CUDA坐大。所以極力支持OPENCL標(biāo)準(zhǔn),現(xiàn)在AMD方面一樣支持OpenCL最新版本。從定位來(lái)講,OpenCL重視是給出一個(gè)開(kāi)發(fā)平臺(tái),只要是支持OpenCL硬件,不論是GPU,還是CPU,甚至DSP芯片等,都能夠運(yùn)行在這個(gè)平臺(tái)上開(kāi)發(fā)軟件,不需依賴于特定硬件。而現(xiàn)在DirectCompute則更關(guān)注與Direct3D中圖形運(yùn)算部分緊密配合,給用戶帶來(lái)愈加逼真效果,GPU平臺(tái)上應(yīng)用才是它強(qiáng)項(xiàng)。在Windows平臺(tái)上,DirectX占據(jù)顯著優(yōu)勢(shì),尤其是游戲領(lǐng)域,繼續(xù)使用DirectX11才是最好方法。對(duì)于應(yīng)用軟件而言,到底是采取ComputerShader,還是OpenCL,或者是CUDAC語(yǔ)言以及Brook+,要看開(kāi)發(fā)商詳細(xì)情況。比如對(duì)高清編輯、圖形圖像方面應(yīng)用,能夠通用于多家GPU平臺(tái)ComputerShader和OpenCL可能會(huì)受到歡迎。在非Windows平臺(tái)上,OpenCL將起到更主要作用,它或許會(huì)囊括移動(dòng)和嵌入式平臺(tái)娛樂(lè)應(yīng)用以及科學(xué)計(jì)算等領(lǐng)域。Larrabee采取可編程方式實(shí)現(xiàn)圖形運(yùn)算,即使它是如假包換CPU,但在某種意義上,它也是一個(gè)“軟件GPU”。從圖形管線歷史發(fā)展示意圖中能夠看到,可編程化趨勢(shì)是自DirectX7以來(lái)時(shí)尚,而Larrabee能夠用軟件虛擬出除了材質(zhì)部分以外DirectX10圖形處理管線,對(duì)于DirectX11、OpenGL以及OpenCL等API,Larrabee也能經(jīng)過(guò)不一樣程序?qū)崿F(xiàn)它們,這種方式可能代表了未來(lái)時(shí)尚。三.GPGPU發(fā)展趨勢(shì)3.1并行處理大趨勢(shì)對(duì)于CPU未來(lái)發(fā)展,因?yàn)槟柖杉磳⒌诌_(dá)極限,不論從制程角度還是發(fā)燒量問(wèn)題,都使得經(jīng)過(guò)提升主頻來(lái)加速計(jì)算變得不那么實(shí)惠。Intel和AMD也很早就意識(shí)到了這個(gè)問(wèn)題,所以將目光投降了多核CPU。并行處理器,這個(gè)原本只有服務(wù)器和大型機(jī)才有技術(shù),如今也飛入了尋常百姓家。這種變革影響,對(duì)整個(gè)信息產(chǎn)業(yè),從底層硬件到上層軟件,都是非常深遠(yuǎn)。多核(MultiCore)發(fā)展是處理器并行歸宿,也是真正意義上可連續(xù)發(fā)展CPU并行處理方向。因?yàn)椴徽撌橇魉€還是超線程,都是對(duì)單關(guān)鍵運(yùn)算潛力挖掘,性能提升總會(huì)榨干或者極難繼續(xù)榨一天。另一個(gè)很大不一樣是,流水線和超線程只需要CPU內(nèi)部?jī)?yōu)化,上層程序不需要任何改動(dòng)即可坐享受性能提升;而多核應(yīng)用中,編譯器和軟件中并行算法會(huì)占有更主要地位。可是一旦變革完成,實(shí)現(xiàn)完整可擴(kuò)充多核架構(gòu),就能夠不停添加內(nèi)核和改良軟件算法迎來(lái)按級(jí)數(shù)增加性能大提升時(shí)代。全球著名電子技術(shù)類期刊《EE

Times》評(píng)選出十大新興技術(shù)中,并行處理技術(shù)名列其中,并認(rèn)為“并行處理技術(shù)已經(jīng)以雙核和四核個(gè)人電腦處理器以及用于嵌入應(yīng)用多核異質(zhì)處理器形式存在。不過(guò),業(yè)界迄今仍對(duì)多核處理器怎樣編程,以及怎樣充分發(fā)揮其運(yùn)算能力與功率效率知之甚少。自多核處理器問(wèn)世以來(lái),這便是信息技術(shù)關(guān)鍵問(wèn)題之一,困擾著整個(gè)業(yè)界,至今仍未得到完全處理?,F(xiàn)在,OpenCL、Cuba等倡議向我們描繪了美好前景,提出了將圖形處理器用作通用處理器以及現(xiàn)場(chǎng)可編程門陣列(FPGA)和軟件可編程處理器陣列前景?!痹陔p核伊始時(shí)候,曾有一期《程序員》專題討論雙核處理器和并行\(zhòng)o"軟件資訊"軟件設(shè)計(jì)方法,感覺(jué)未來(lái)軟件工程師一定要知道怎樣為多核處理器寫程序才能夠。但4年過(guò)去了,對(duì)于大部分軟件工程師好像一切都沒(méi)有什么改變。但大多數(shù)人還沒(méi)覺(jué)察,我們正在經(jīng)歷著整個(gè)計(jì)算架構(gòu)變革,美國(guó)試驗(yàn)室小伙子們,早就開(kāi)始研究怎樣高效利用1000個(gè)內(nèi)核處理器海洋(Seaofprocessors),微軟正在向.netframwork添加更完善并行類庫(kù)和支持,云計(jì)算、虛擬化市場(chǎng)也正野心勃勃準(zhǔn)備迎接真正多核時(shí)代暴發(fā)性發(fā)展。當(dāng)CPU進(jìn)入雙核多核,軟件架構(gòu)進(jìn)入分布式計(jì)算云計(jì)算時(shí)代后,他們共同點(diǎn)并行計(jì)算逐步成為一個(gè)新熱點(diǎn)。在這個(gè)大背景下,GPU并行處理能力無(wú)疑會(huì)引發(fā)業(yè)界極大重視,NVIDIA總裁甚至鼓吹GPU將主導(dǎo)并行計(jì)算,即使有些言過(guò)其實(shí),不過(guò)GPU必定會(huì)在通用計(jì)算領(lǐng)域占據(jù)一席之地。3.2分久必合,GPU與CPU趨于融合\o"CPU"CPU設(shè)計(jì)宗旨就是要從指令流中得到最高處理效能,即要用最短時(shí)間完成一項(xiàng)任務(wù),這就是串行計(jì)算,但串行計(jì)算架構(gòu)\o"CPU"CPU天生就不適合高性能計(jì)算領(lǐng)域所強(qiáng)調(diào)并行計(jì)算工作,這是為何\o"CPU"CPU現(xiàn)在成為了高性能計(jì)算性能提升瓶頸。相形之下,始于圖形處理\o"GPU"GPU一開(kāi)始就是被設(shè)計(jì)來(lái)處理大規(guī)模并行計(jì)算,數(shù)千萬(wàn)多邊形和像素并行處理使得\o"GPU"GPU在發(fā)展同時(shí)不停地加入更多處理關(guān)鍵并完善并行處理能力。INTEL中央架構(gòu)與規(guī)劃部門總經(jīng)理龐思立(StephenS.Pawlowski)談到,CPU引入多線程、多核、眾核等技術(shù),并行性能也是越來(lái)越強(qiáng),在向高吞吐量計(jì)算演進(jìn),而GPU也不再受限于以往固定功效,在向通用計(jì)算演進(jìn),但這兩種架構(gòu)都需要有好可編程性,而實(shí)際上,程序員們已經(jīng)習(xí)慣了X86架構(gòu),所以,最終這兩種架構(gòu)會(huì)走向融合,也就是說(shuō),不論用什么樣硬件,軟件開(kāi)發(fā)人員都能夠使用IA指令集來(lái)編程,讓軟件能夠同時(shí)跑在CPU和GPU上面,而不是象現(xiàn)在這么需要分別針對(duì)這兩種架構(gòu)去編程。正是基于此,英特爾計(jì)劃推出其GPU產(chǎn)品Larrabee和同時(shí)支持CPU與GPUCt編程語(yǔ)言。IntelClarkdale/Arrandale將會(huì)實(shí)現(xiàn)將顯示關(guān)鍵與處理器關(guān)鍵封裝在一起,在時(shí),SandyBridge將會(huì)晤世。對(duì)此,AMD行動(dòng)并未落后,AMD自從收購(gòu)ATI之后,已經(jīng)成為全球唯一一家能夠提供CPU、GPU和芯片組廠商,AMD企業(yè)早在就公布了“Fusion”計(jì)劃,而后又把宣傳口號(hào)變?yōu)椤癟heFutureisFusion”,同時(shí)打造Fusion品牌。AMD將會(huì)于推出首款代號(hào)為L(zhǎng)lanoFusion處理器,該處理器將會(huì)基于32nm工藝,由Globalfoundries負(fù)責(zé)生產(chǎn)。Llano將會(huì)集成四個(gè)處理器關(guān)鍵以及一個(gè)圖形處理關(guān)鍵,不過(guò)AMD將其稱為APU(AcceleratedProcessingUnit)。它目標(biāo)是將經(jīng)過(guò)圖形處理器實(shí)現(xiàn)具備照片真實(shí)感圖像和中央處理器強(qiáng)大處理功效融合為一體。AMD認(rèn)為:“融聚戰(zhàn)略也印證了這一點(diǎn),用戶和市場(chǎng)需要不再是單純處理器性能,而是在卓越平臺(tái)、出眾GPU以及AMD將率先推出Fusion芯片所能夠幫助客戶提升競(jìng)爭(zhēng)力能力?!贬槍?duì)此方案,AMDCTOHester表示:“X86指令集通用性當(dāng)然愈加好一些,但它執(zhí)行效率并不好,并不適合高性能并行計(jì)算處理?!彼?,AMD采取分離設(shè)計(jì),將GPU指令集整合于CPU之內(nèi),作為CPU指令集補(bǔ)充。NVIDIA首席科學(xué)家Kirk博士似乎也表示了一樣看法,他認(rèn)為X86交換性會(huì)給流處理器設(shè)計(jì)帶來(lái)難度,而NVIDIA則是針對(duì)GPU開(kāi)發(fā)適合流計(jì)算架構(gòu)。很顯著,NVIDIA和AMD都不可能輕易向英特爾指令集妥協(xié),彼此在未來(lái)高并行性計(jì)算領(lǐng)域競(jìng)爭(zhēng)是能夠預(yù)見(jiàn)。3.3GPU性能成長(zhǎng)空間依舊巨大圖形處理器(GPU)用于通用計(jì)算(GPGPU)及其相關(guān)方面問(wèn)題現(xiàn)在已成為一個(gè)熱門話題。實(shí)際上,整個(gè)IT產(chǎn)業(yè)都已經(jīng)敏銳地意識(shí)到了GPU通用計(jì)算將給PC帶來(lái)革命性改變,進(jìn)而影響到CPU發(fā)展。所以,不論NVIDIA、AMD,還是英特爾,都紛紛投身這一領(lǐng)域,從而拉開(kāi)新一輪技術(shù)競(jìng)賽序幕。近日,AMD旗艦產(chǎn)品RV870已經(jīng)超越NVIDIAGT200系列,RV870單精度浮點(diǎn)運(yùn)算能力為2720GFLOPS,雙精度浮點(diǎn)運(yùn)算能力為單精度1/5,也高達(dá)544GFLOPS。GT285單精度浮點(diǎn)運(yùn)算能力為1063GFLOPS,但雙精度下降為1/8,僅133GFLOPS。而NVIDIA則表示將在推出新一代旗艦產(chǎn)品FERMIGT300系列,將大幅度提升處理能力,尤其是通用計(jì)算方面,下面簡(jiǎn)單介紹一下。圖3.1Fermi基本計(jì)算單元FERMI全部流處理器現(xiàn)在都符合IEEE754-浮點(diǎn)算法(Cypress也是如此)和完整32位整數(shù)算法。同時(shí)全方面引入還有積和熔加運(yùn)算(FusedMultiply-Add/FMA),每循環(huán)操作數(shù)單精度512個(gè)、單精度256個(gè)(G200僅支持單精度FMA)。全部一切都符合業(yè)界標(biāo)準(zhǔn),計(jì)算結(jié)果不會(huì)產(chǎn)生意外偏差。雙精度浮點(diǎn)(FP64)性能大大提升,峰值執(zhí)行率能夠達(dá)成單精度浮點(diǎn)(FP32)1/2,而過(guò)去只有1/8,雙精度預(yù)計(jì)可達(dá)624GFlops。G80/GT200都是8個(gè)流處理器組成一組SM(StreamingMultiprocessor),F(xiàn)ermi增加到了32個(gè),最多16組,少于GT20030組,但流處理器總量從240個(gè)增至512個(gè)。除了流處理器,每組SM還有4個(gè)特殊功效單元(SpecialFunctionUnitSFU),用于執(zhí)行抽象數(shù)學(xué)和插值計(jì)算,GT200每組SM都有16KB共享內(nèi)存,由其中8個(gè)SP使用。它們不是緩存(cache),而是軟件管理內(nèi)存(memory),能夠?qū)懭?、讀取數(shù)據(jù)。為了滿足應(yīng)用程序和通用計(jì)算需要,F(xiàn)ermi引入了真正緩存,每組SM擁有64KB可配置內(nèi)存(共計(jì)1MB),可分成16KB共享內(nèi)存加48KB一級(jí)緩存,或者48KB共享內(nèi)存加16KB一級(jí)緩存,可靈活滿足不一樣類型程序需要。整個(gè)芯片擁有一個(gè)容量768KB共享二級(jí)緩存,執(zhí)行原子內(nèi)存操作(AMO)時(shí)候比GT200快5-20倍。Fermi全局分配邏輯則能夠向整個(gè)系統(tǒng)發(fā)送多個(gè)并行內(nèi)核,應(yīng)用程序在GPU和CUDA模式之間切換時(shí)間也快得多了,NVIDIA宣稱是GT20010倍。外部連接亦有改進(jìn),F(xiàn)ermi現(xiàn)在支持和CPU之間并行傳輸,而之前都是串行。NVIDIAFermi存放器文件、一級(jí)緩存、二級(jí)緩存、DRAM全部完整支持ECC錯(cuò)誤校驗(yàn),這一樣是為Tesla準(zhǔn)備,之前我們也提到過(guò)。Fermi統(tǒng)一了尋址空間,簡(jiǎn)化為一個(gè)指令,內(nèi)存地址取決于存放位置:最低位是當(dāng)?shù)?,然后是共享,剩下是全局。這種統(tǒng)一尋址空間是支持C++必需前提。GT80/GT200尋址空間都是32-bit,最多搭配4GBGDDR3顯存,而Fermi一舉支持64-bit尋址,即使實(shí)際尋址只有40-bit,支持顯存容量最多也可達(dá)驚人1TB,現(xiàn)在實(shí)際配置最多6GBGDDR5。NVIDIAFERMI主要技術(shù)特點(diǎn)總結(jié):-支持下一代IEEE754-雙精度浮點(diǎn)標(biāo)準(zhǔn)-支持ECC(錯(cuò)誤校驗(yàn)碼)以提升可靠性和精準(zhǔn)度-一級(jí)、二級(jí)多層緩存體系-支持C++編程語(yǔ)言-支持最多1TB系統(tǒng)內(nèi)存-并行內(nèi)核執(zhí)行、快速上下文切換、10倍速度原子指令、64位虛擬尋址空間、系統(tǒng)調(diào)用與遞歸函數(shù)NVIDIA首席科學(xué)家、高級(jí)副總裁WilliamJ.Dally在近日設(shè)計(jì)自動(dòng)化會(huì)議(DAC)上發(fā)演出講指出,GPU浮點(diǎn)計(jì)算性能今后會(huì)每?jī)赡攴环?,從而在達(dá)成20TFlops,是當(dāng)前最高水平大約15倍。GPU圖形關(guān)鍵現(xiàn)在擁有幾百個(gè)處理關(guān)鍵,多年后就會(huì)提升一個(gè)數(shù)量級(jí),確切地說(shuō)有望在六年后增加到大約5000個(gè)之多,擁有20TFlops浮點(diǎn)性能。單就NVIDIA而言,從55nm工藝、240個(gè)流處理器(GT200b)進(jìn)步到11nm和5000個(gè),中間必定會(huì)經(jīng)歷架構(gòu)上革命性改變。經(jīng)過(guò)長(zhǎng)達(dá)、每年52%改進(jìn),單線程處理器(CPU)性能提升在就已終止,不過(guò)GPU這種并行處理器仍能每年帶來(lái)超出70%性能提升。過(guò)去間,\o"GPU"GPU計(jì)算能力飛速發(fā)展,基本上平均6個(gè)月就性能翻倍,預(yù)計(jì)\o"GPU"GPU浮點(diǎn)性能將每?jī)赡攴环?.4GPU通用計(jì)算成為教育科研熱點(diǎn)截止到現(xiàn)在全球已經(jīng)有超出250所大學(xué)開(kāi)設(shè)了CUDA編程和GPU計(jì)算課程,僅在上個(gè)季度CUDA開(kāi)發(fā)工具包就被下載了超出90,000次。據(jù)統(tǒng)計(jì),全球超級(jí)計(jì)算研究中,有12%論文是基于NvidiaGPU。在全球掀起GPU計(jì)算浪潮同時(shí),中國(guó)科研院所、高等學(xué)府和企業(yè)在包含油氣勘探、離散模擬、三維掃描等領(lǐng)域利用GPU計(jì)算方面走到了世界前沿。如今,中科院、清華大學(xué)、中國(guó)同濟(jì)大學(xué)、上海交大、西安交大等7所高校已經(jīng)將基于CUDA架構(gòu)并行計(jì)算課程融入其教學(xué)之中,其中中科院和清華大學(xué)已經(jīng)走到全球CUDA應(yīng)用前列。中國(guó)科學(xué)院過(guò)程工程研究所和清華大學(xué)不但開(kāi)設(shè)了CUDA編程課程普及GPU計(jì)算,而且還成功將GPU計(jì)算應(yīng)用到大量科學(xué)以及工程設(shè)計(jì)研究項(xiàng)目中并取得CUDA卓越中心稱號(hào),在此之前,CUDA卓越中心已經(jīng)在哈佛大學(xué)、劍橋大學(xué)等五所學(xué)府設(shè)置。清華大學(xué)計(jì)算機(jī)系高性能所(HPC)陳文光教授表示:“清華大學(xué)已經(jīng)展開(kāi)對(duì)CUDA編程多項(xiàng)研究和應(yīng)用,并開(kāi)展了深入增強(qiáng)GPU可編程性研究工作。相對(duì)于傳統(tǒng)CPU計(jì)算來(lái)說(shuō),GPU為大規(guī)模并行計(jì)算提供了一個(gè)新選擇,具備很大發(fā)展?jié)摿Α!睙o(wú)獨(dú)有偶,INTEL新型GPU,Larrabee項(xiàng)目其實(shí)是隸屬于Tera-Scale計(jì)劃(“萬(wàn)億級(jí)別計(jì)算研究項(xiàng)目”。這個(gè)計(jì)劃主要工作內(nèi)容,就是分析未來(lái)內(nèi)人們對(duì)電腦及服務(wù)器應(yīng)用需求。這一計(jì)劃包括研究領(lǐng)域非常廣泛,共有超出400間大學(xué)、美國(guó)國(guó)防部高等研究計(jì)劃局(DARPA),以及像是微軟與惠普等相關(guān)企業(yè),共同為L(zhǎng)arrabee應(yīng)用進(jìn)行研究。美國(guó)橡樹(shù)嶺國(guó)家試驗(yàn)室宣告一項(xiàng)新超級(jí)計(jì)算機(jī)計(jì)劃,將采取nVidia下一代GPU架構(gòu)Fermi。依照雙方共同公布申明,橡樹(shù)嶺國(guó)家試驗(yàn)室超級(jí)電腦,將用來(lái)研究能源與氣候變遷,速度可望比現(xiàn)在最快超級(jí)電腦更加快十倍。這個(gè)新架構(gòu)將同時(shí)采取nVidia繪圖處理器,和英特爾、AMD或其余廠商生產(chǎn)CPU。橡樹(shù)嶺電腦與運(yùn)算科學(xué)副試驗(yàn)室主任JeffNichols在申明中表示,F(xiàn)ermiGPU可促成以往不可能實(shí)現(xiàn)“重大科學(xué)突破”。他說(shuō):“借由nVidia技術(shù)幫助,橡樹(shù)嶺得以提出在未來(lái)內(nèi),創(chuàng)造一個(gè)能提供億億次(exascale,1018次方)運(yùn)算運(yùn)算平臺(tái)。”橡樹(shù)嶺也宣告將創(chuàng)設(shè)一個(gè)混合多關(guān)鍵集團(tuán)(HybridMulticoreConsortium),專注在不一樣類型之處理器架構(gòu)運(yùn)算。這個(gè)集團(tuán)目標(biāo)是與開(kāi)發(fā)者合作,研究在混用CPU與GPU下一代超級(jí)電腦上,執(zhí)行應(yīng)用軟件。11月16日,TOP500.org公布了第34屆全球超級(jí)計(jì)算機(jī)500強(qiáng)排行榜,我國(guó)首臺(tái)千萬(wàn)億次超級(jí)計(jì)算機(jī)系統(tǒng)“天河一號(hào)”由國(guó)防科大研制成功“天河一號(hào)”中擁有6144顆處理器,能夠提供200萬(wàn)億次計(jì)算性能,但作為千萬(wàn)億次超級(jí)計(jì)算機(jī),這么成績(jī)顯然有些名不副實(shí)。其實(shí)“天河一號(hào)”最關(guān)鍵部分是采取了2560顆AMDHD4870x2GPU,GPU計(jì)算即使在廣泛性上不如CPU,但只要環(huán)境適宜,GPU將展現(xiàn)出遠(yuǎn)超CPU計(jì)算能力,這在“天河一號(hào)”中已經(jīng)得到了印證。2560顆AMDHD4870x2GPU幫助,“天河一號(hào)”超級(jí)計(jì)算機(jī)峰值性能達(dá)成了1.206PFlops,Linpack測(cè)試性能超出0.5603PFlops,能夠說(shuō)AMDGPU為“天河一號(hào)”貢獻(xiàn)了超出80%計(jì)算性能。四.GPGPU特點(diǎn)和經(jīng)典應(yīng)用4.1GPGPU特點(diǎn)GPU硬件架構(gòu)因?yàn)榕cCPUX86架構(gòu)差異非常大,而且基于GPU通用計(jì)算也處于發(fā)展早期,所以針對(duì)軟件開(kāi)發(fā)和算法選擇方面具備鮮明特點(diǎn)。下面簡(jiǎn)單分析下GPGPU優(yōu)勢(shì)與劣勢(shì):(1)高效并行性這一功效主要是經(jīng)過(guò)GPU多條繪制流水線并行計(jì)算來(lái)表現(xiàn)。在現(xiàn)在主流GPU中,配置多達(dá)16個(gè)片段處理流水線,6個(gè)頂點(diǎn)處理流水線。多條流水線能夠在單一控制部件集中控制下運(yùn)行,也能夠獨(dú)立運(yùn)行。GPU頂點(diǎn)處理流水線使用MIMD方式控制,片段處理流水線使用SIMD結(jié)構(gòu)。相對(duì)于并行機(jī)而言,GPU提供并行性在理想性價(jià)比基礎(chǔ)上,為很多適合于在GPU上進(jìn)行處理應(yīng)用提供了一個(gè)很好并行方案。(2)數(shù)據(jù)密集型細(xì)顆粒運(yùn)算詳細(xì)來(lái)說(shuō),GPU專用于處理數(shù)據(jù)并行計(jì)算(同一程序在許多數(shù)據(jù)元素上并行執(zhí)行)、具備高運(yùn)算密度(算術(shù)運(yùn)算與內(nèi)存操作百分比)特點(diǎn)。因?yàn)橥怀绦驗(yàn)槊總€(gè)數(shù)據(jù)元素執(zhí)行,所以對(duì)高級(jí)流控制具備較低要求;又因?yàn)樵谠S多數(shù)據(jù)元素上執(zhí)行并具備高運(yùn)算密度,所以內(nèi)存訪問(wèn)延遲能夠使用計(jì)算而非大數(shù)據(jù)高速緩存來(lái)隱藏。(3)超長(zhǎng)圖形流水線GPU超長(zhǎng)圖形流水線設(shè)計(jì)以吞吐量最大化為目標(biāo)(如NVIDIAGeForce3流水線有800個(gè)階段),所以GPU作為數(shù)據(jù)流并行處理機(jī),在對(duì)大規(guī)模數(shù)據(jù)流并行處理方面具備顯著優(yōu)勢(shì)。當(dāng)然也具備無(wú)法回避劣勢(shì),它定位是取代部分CPU計(jì)算任務(wù),所以對(duì)于一些CPU擅長(zhǎng)領(lǐng)域,GPU是無(wú)能為力。(4)精度不夠現(xiàn)在GT200芯片對(duì)于double運(yùn)算性能非常差(64bit運(yùn)算單元在每個(gè)SM中只有一個(gè),所以運(yùn)算速度只有32bit數(shù)據(jù)八分之一到十二分之一左右。),不過(guò)NVIDIA已經(jīng)在GT300中大幅加強(qiáng)了雙精度計(jì)算性能,可達(dá)成單精度二分之一。(5)控制流簡(jiǎn)單NVIDIASM沒(méi)有預(yù)測(cè)執(zhí)行機(jī)制,也沒(méi)有錯(cuò)誤回滾機(jī)制,對(duì)于復(fù)雜指令處理,計(jì)算性能下降顯著。(6)線程間存在通信壁壘CUDA中每個(gè)線程存放器都是私有,它們只能經(jīng)過(guò)長(zhǎng)度較小sharedmemory或者訪問(wèn)延遲較長(zhǎng)globalmemory來(lái)進(jìn)行通信。(7)與CPU之間帶寬較低因?yàn)镚PU是以PCI-E接口方式與CPU進(jìn)行通信,PCI-E(16GB/s)帶寬不可防止限制了host和device數(shù)據(jù)交流。(8)軟件開(kāi)發(fā)難度大GPU通用計(jì)算對(duì)開(kāi)發(fā)者要求較高,必須深入了解硬件,熟悉運(yùn)行機(jī)制,這么才能得到愈加好優(yōu)化程序,進(jìn)而才能發(fā)揮GPU峰值性能。4.2GPGPU經(jīng)典應(yīng)用盡管GPU通用計(jì)算技術(shù)還在發(fā)展之中,不過(guò)因?yàn)樗薮笮阅軆?yōu)勢(shì)和優(yōu)良性價(jià)比,近幾年,GPU通用計(jì)算應(yīng)用(主要是基于CUDA架構(gòu)GPU)還是取得令人矚目標(biāo)結(jié)果。圖4.1CUDA現(xiàn)在所取得一些成就下面簡(jiǎn)明介紹一些經(jīng)典應(yīng)用(CUDA):(1)在寶鋼,使用異構(gòu)計(jì)算技術(shù)使得冶金過(guò)程模擬時(shí)間從一天縮短到兩分鐘,效率提升了50倍以上。(2)在清華大學(xué),采取\o"GPU"GPU使得過(guò)去要用一個(gè)小時(shí)三維圖像重構(gòu)降低到幾十秒甚至幾秒鐘,將實(shí)時(shí)重構(gòu)不可能變?yōu)榭赡?。?)在中國(guó)科學(xué)院北京基因組研究所,采取\o"GPU"GPU+\o"CPU"CPU混共計(jì)算平臺(tái)做基因比對(duì)比傳統(tǒng)\o"CPU"CPU集群快30倍,而功耗降低5倍,成本降低10倍。(4)癌癥研究:用于癌癥研究Autodock軟件提速,據(jù)美國(guó)國(guó)家癌癥研究所匯報(bào),模擬速度提升高達(dá)12倍,將等候結(jié)果時(shí)間從2個(gè)小時(shí)縮短至10分鐘。AutoDock作者、美國(guó)斯克利普斯研究所GarrettMorris博士表示:“從久遠(yuǎn)角度來(lái)講,我們只希望能夠經(jīng)過(guò)SiliconInformATIcs企業(yè)產(chǎn)品來(lái)加速找到各種疾病治療新藥。其中包含從癌癥到阿耳茨海默氏癥、從艾滋病到瘧疾等各種疾病。”

(5)氣象分析:美國(guó)國(guó)家大氣研究中心氣象研究和預(yù)報(bào)(WRF)模型計(jì)算,WRF1%已經(jīng)過(guò)CUDA實(shí)現(xiàn),整體速度提升了20%,節(jié)約了一個(gè)星期分析時(shí)間。(6)醫(yī)學(xué)成像:數(shù)字層析X射線攝影組合是一個(gè)早期胸部腫瘤X射線透視法,能夠使癌癥對(duì)乳房組織損害被更早檢測(cè)、發(fā)覺(jué)。在這種應(yīng)用中,美國(guó)馬薩諸塞州綜合醫(yī)院就使用了NVIDIAGPU產(chǎn)品,經(jīng)過(guò)對(duì)X射線透視所獲取數(shù)據(jù)進(jìn)行高強(qiáng)度計(jì)算來(lái)重建圖像。馬薩諸塞州綜合醫(yī)院在圖像重建過(guò)程中取得了100倍速度提升,使用一臺(tái)PC只用5分鐘就能夠完成計(jì)算,使醫(yī)生很快就能夠得到成像圖片并給出診療結(jié)果。(7)生物醫(yī)學(xué)核磁共振成像植入設(shè)備模擬:著名美國(guó)波士頓科學(xué)國(guó)際有限企業(yè)就是一個(gè)設(shè)計(jì)和制造起搏器和其余一些生物醫(yī)學(xué)植入設(shè)備企業(yè),他們使用了NVIDIAGPU運(yùn)算技術(shù)加速整個(gè)計(jì)算過(guò)程。經(jīng)過(guò)NVIDIA并行GPU架構(gòu),模擬過(guò)程執(zhí)行速度提升了25倍。不但速度方面提升很多,在成本方面也比過(guò)去使用CPU集群時(shí)大大降低。(8)石油與天然氣勘探:現(xiàn)在,石油與天然氣勘探正變得越來(lái)越困難。大型油氣儲(chǔ)備帶經(jīng)常處于地表下很深地方以至于難于勘測(cè)。比如最近在墨西哥灣發(fā)覺(jué)油田就處于海床下0英尺深地方。為了解釋地質(zhì)數(shù)據(jù),就必須對(duì)取得與處理大量地震數(shù)據(jù)。休斯敦Headwave(一個(gè)專門從事地質(zhì)數(shù)據(jù)分析企業(yè))處理方案也經(jīng)過(guò)NVIDIAGPU技術(shù),并使用CUDASDK來(lái)運(yùn)行。地球物理學(xué)者能夠更加快速篩選他們數(shù)據(jù),即便這些數(shù)據(jù)多達(dá)幾TB容量。過(guò)去處理這些多達(dá)幾TB數(shù)據(jù)需要數(shù)月計(jì)算時(shí)間,而使用NVIDIAGPU計(jì)算技術(shù)后,計(jì)算速度比過(guò)去提升了20倍。所以說(shuō),沒(méi)有NVIDIAGPU計(jì)算技術(shù),即時(shí)演算這些數(shù)據(jù)是不可能,石油與天然氣企業(yè)將成為這項(xiàng)新技術(shù)直接收益者。(9)分子動(dòng)力學(xué)模擬:在分子動(dòng)力學(xué)模擬領(lǐng)域內(nèi),模擬復(fù)雜分子系統(tǒng)需要要花費(fèi)大量時(shí)間,并使用復(fù)雜計(jì)算機(jī)集群。位于Urbana-Champaign美國(guó)伊利諾伊大學(xué)研究人員就使用了NVIDIAGPU產(chǎn)品用于計(jì)算生物分子、離子相互作用,結(jié)果是運(yùn)算速度比過(guò)去采取CPU集群提升了100倍。

使用GPU工作站后,實(shí)際運(yùn)算速度達(dá)成了705gigaflops。這么非凡成績(jī)也使得生物科學(xué)研不再被

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論