決戰(zhàn)性能之巔!NV雙芯旗艦GTX590評測
自從NVIDIA于1999年發(fā)布第一顆GPU(GeForce 256)開始,GPU就已經(jīng)與并行計算結(jié)下了不解之緣,GPU被擴展成為可進行浮點運算的可編程處理器,而不僅僅是圖形處理器。GPU無論計算能力還是內(nèi)存帶寬都要遠勝于CPU,其性能不應(yīng)該被限制在游戲和3D渲染之中。這也是Fermi架構(gòu)和競爭對手GPU架構(gòu)最大的本質(zhì)區(qū)別。想通過目前為止最優(yōu)秀的GPU技術(shù)一窺未來圖形芯片的發(fā)展方向嗎?本章將從淺顯到深刻,為大家打開通用計算GPU的大門!
10.1 異構(gòu)計算的威力和不足
GPU的性能遠遠超出了CPU的想象
針對非圖形應(yīng)用程序的GPU編程的探索始于2003年。通過使用高級繪制語言如DirectX、OpenGL和Cg,將多種數(shù)據(jù)平行算法導(dǎo)入GPU。諸如蛋白質(zhì)折疊、股票期權(quán)定價、SQL查詢及MRI重建等問題都能通過GPU獲得非凡的加速表現(xiàn)。早期將圖形API用于通用計算的努力被稱之為GPGPU(GPU通用計算)。
雖然GPGPU模型展現(xiàn)了不俗的加速性能,但仍然有不少缺陷:
首先,它要求程序員全面掌握與圖形API以及GPU架構(gòu)相關(guān)的知識;
其次,問題必須以頂點坐標、紋理及著色器程序的形式表達出來,這就大大增加了程序的復(fù)雜程度;第三,不支持基礎(chǔ)的編程特性如面向內(nèi)存的隨機讀寫,極大地限制了編程模型;最后,缺乏雙精度支持(直到最近才具備這一特性)意味著有些科學應(yīng)用程序?qū)⒉荒茉贕PU上運行。
為了解決這些問題,NVIDIA采用了兩種關(guān)鍵技術(shù)——G80統(tǒng)一圖形及計算架構(gòu)和CUDA。CUDA是一種軟硬件架構(gòu),可以使用多種高級編程語言來針對GPU進行編程。這兩種技術(shù)代表著一種新的應(yīng)用GPU的方式。跟以前通過編程將專門的圖形單元同圖形API結(jié)合到一起不同,程序員可以利用CUDA的擴展來編寫C語言程序,并面向一個通用的平行處理器。NVIDIA將這種新的GPU編程方式稱為“GPU計算”,它意味著更廣泛的應(yīng)用程序支持、更多編程語言的支持以及同早期GPGPU編程模型的徹底分離。
G80標量流處理器架構(gòu)的誕生使得全新的GPU計算成為可能,并創(chuàng)造了無數(shù)項第一:
第一款支持C語言的GPU,它讓程序員可以利用GPU的運算能力而無需掌握一門新的編程語言;
第一款以單一的非統(tǒng)一的處理器取代分離式頂點及像素管線的GPU,這種處理器可以執(zhí)行頂點、幾何、像素及計算程序;
第一款利用標量線程處理器的GPU,從而使得程序員無需手工操控向量寄存器。
G80還采用了單指令、多線程(SIMT)的執(zhí)行模型,多個獨立線程同時執(zhí)行單個指令,并針對線程間通信采用了共用存儲器和障柵同步。
之后NVIDIA又對G80架構(gòu)進行了重大改進,第二代統(tǒng)一架構(gòu)GT200將流處理器的數(shù)量從128增加到了240個。每一個處理器的寄存器數(shù)量增倍,使得任何時候都可以在芯片上處理更多的線程。采用了硬件存儲器存取合并技術(shù)以提高存儲器存取的效率。此外,還采用了雙精度浮點運算支持以滿足那些科學及高性能計算(HPC)應(yīng)用程序的需求。
在設(shè)計每款新一代GPU時,都必須遵循這樣的原則——提高當前應(yīng)用程序的性能及GPU的可編程性。應(yīng)用程序的速度提高會立竿見影地帶來諸多好處。正是GPU在可編程性方面的不斷進步才使得它演變成為當前最通用的并行處理器。也正是基于這樣的理念,GT200架構(gòu)的繼任者又被賦予了更多新的功能。
關(guān)注我們
