線 圈
衡量計(jì)算機(jī)的計(jì)算能力,并行計(jì)算能力是一個(gè)很重要的方面,被廣泛地應(yīng)用于企業(yè)級(jí)并行處理、工程以及生物、物理等科學(xué)計(jì)算當(dāng)中。由于設(shè)計(jì)初衷和架構(gòu)的緣故,CPU在執(zhí)行這類并行計(jì)算任務(wù)時(shí)效率并不明顯。相反,GPU卻憑借“先天”優(yōu)勢(shì)大有凌駕于CPu之上的趨勢(shì)。以目前民用級(jí)顯卡中最高端的GT200核心為例,它擁有240個(gè)流處理器,每一個(gè)都能進(jìn)行相關(guān)的并行計(jì)算,其內(nèi)部架構(gòu)相當(dāng)于240個(gè)微處理器,因此其浮點(diǎn)計(jì)算能力可以達(dá)到恐怖的933GFIops,是目前頂級(jí)CPU——Core i7 965 69.23GFlops(浮點(diǎn)運(yùn)算能力)的十多倍。但是,在我們驚嘆GPU強(qiáng)大的并行處理能力的時(shí)候,有沒有想過把這種能力實(shí)際應(yīng)用到高性能的企業(yè)級(jí)并行處理和科學(xué)計(jì)算中呢?
為什么并行計(jì)算會(huì)選擇GPU?
處理器的多核心化帶來了一定程度上并行處理計(jì)算的興起。以往單核心處理器通常只在一個(gè)時(shí)間段內(nèi)執(zhí)行單一任務(wù),多任務(wù)操作都依靠中斷指令或者等待排序來完成。雖然在宏觀角度,多核心處理器體現(xiàn)了一定程度的并行化設(shè)計(jì),但仔細(xì)分析,處理器的每一個(gè)核心依舊是為了串行任務(wù)而設(shè)計(jì),優(yōu)化的。比如CPu內(nèi)往往設(shè)計(jì)了大容量高速緩存、超標(biāo)量架構(gòu)、亂序執(zhí)行,以及強(qiáng)大的分支預(yù)測(cè)單元一一這些設(shè)計(jì)的目的主要是為了加速單一任務(wù)的計(jì)算??偟膩碚f,CPU的設(shè)計(jì)追求大而全,編程自由化程度極高。但很明顯,這種設(shè)計(jì)思路依舊是以串行為核心,并行程度極為有限。雖然可以自由完成復(fù)雜的串行任務(wù),但是面對(duì)數(shù)據(jù)龐大的并行計(jì)算時(shí),CPU只能使用一個(gè)單獨(dú)的線程循環(huán)處理,效率不夠高。
并行處理則不然。它適合計(jì)算關(guān)聯(lián)不大甚至無相關(guān)性的操作。比如每一個(gè)像素都有自己的光照和色彩等數(shù)據(jù)。A像素不會(huì)由于B像素而無法完成計(jì)算,只要給定了目標(biāo),即使B像素不計(jì)算。A像素也基本上可以毫無影響的得到正確結(jié)果,實(shí)際上,并行任務(wù)有眾多計(jì)算目標(biāo),這些目標(biāo)之間沒有什么關(guān)聯(lián)性,幾乎不會(huì)互相影響。另外,并行計(jì)算要求核心結(jié)構(gòu)相對(duì)簡單,不需要復(fù)雜的分支預(yù)測(cè),對(duì)片上緩存的要求也非常低,只要有充足的內(nèi)存即可很好地完成任務(wù)。
這就恰好解釋了為什么GPU核心設(shè)計(jì)可以完美執(zhí)行并行處理任務(wù)。首先,在以單個(gè)像素為計(jì)算目標(biāo)發(fā)展了多年之后,GPU的并行計(jì)算能力達(dá)到了一個(gè)恐怖的程度。從浮點(diǎn)運(yùn)算數(shù)值上我們就可以看出,GeForce GTX 280YLV-達(dá)到了Core i7965的十幾倍。并且,經(jīng)過長時(shí)間的發(fā)展,GPU相比CPU浮點(diǎn)性能差距AAGeForce FX時(shí)代的一倍左右迅速攀升到今天的十倍以上,并且還有繼續(xù)增大的可能。這樣看來,GPU擁有強(qiáng)大的性能和極為美好的發(fā)展前景,已經(jīng)在硬件方面先為并行處理打好了基礎(chǔ)。
另外,GPU本身結(jié)構(gòu)也非常適合并行計(jì)算。在GPU內(nèi)部,有統(tǒng)一調(diào)度流處理器的線程分派設(shè)計(jì),也有大量的結(jié)構(gòu)整齊的流處理器。在遇到如上百個(gè)幾乎沒有相關(guān)性的任務(wù)同時(shí)計(jì)算時(shí),GPU可以依靠龐大的流處理器資源同時(shí)對(duì)這些數(shù)據(jù)進(jìn)行處理,在極短的時(shí)間內(nèi)完成。值得一提的是,在進(jìn)化至統(tǒng)一渲染架構(gòu),特別是在CUDA等專注于并行處理的高級(jí)編程語言出現(xiàn)后,GPU的編程靈活性大大提升。程序員可以更為自由,輕松的獲得各種想要的計(jì)算資源,編程難度大大降低。
除此之外,GPU目前的“核心——顯存”結(jié)構(gòu)也非常適合并行計(jì)算。并行計(jì)算不需要大量的片上緩存。例如在石油探測(cè)的處理中,數(shù)據(jù)量會(huì)達(dá)到幾百兆字節(jié)甚至幾千兆字節(jié),利用片上高速緩存來容納數(shù)據(jù)肯定是不現(xiàn)實(shí)的。因此GPU的“核心——顯存”接口設(shè)計(jì)以及帶寬龐大的顯存控制器,能夠很好的滿足數(shù)以千計(jì)的線程并行計(jì)算時(shí)的資源需求。
綜上所述,GPU似乎已經(jīng)是并行計(jì)算板上釘釘?shù)淖罴褕?zhí)行者了。不過依然有一些問題需要解決。比如采用何種編程語言才能保證最大程度的兼容性和統(tǒng)一性?對(duì)并行計(jì)算而言,怎樣的任務(wù)才能發(fā)揮它的作用?理論問題解決后,實(shí)際使用的可行性也是極為重要的。接下來,我們就一起來看看實(shí)際產(chǎn)品——TESLA是如何解決并行計(jì)算的實(shí)行運(yùn)行問題的。
專為并行計(jì)算而生——TESLA的硬件構(gòu)成
TESLA是以發(fā)明家尼古拉·特斯拉的名字來命名的,主要適用于服務(wù)器高性能電腦運(yùn)算,是繼GeFome和Quadro之后,NVIDIA的又一個(gè)顯示核心商標(biāo)。針對(duì)不同的用戶群,目前TESLA系列主要分為三類產(chǎn)品,分別是定位于-%k和普通用戶的C系列TESLA計(jì)算處理器,定位于服務(wù)器用戶的S(Server)系列TESLA 1U服務(wù)器系統(tǒng)和定位于桌面超級(jí)計(jì)算機(jī)用戶的D(DeskTOP Supercomputer)系列TESLA個(gè)人超級(jí)計(jì)算機(jī)。各個(gè)不同系列產(chǎn)品之間的核心結(jié)構(gòu)部分差別不大,更多的是核心數(shù)量上的差別。比如TESLA D系列個(gè)人超級(jí)計(jì)算機(jī)就利用四塊TESLA C系列計(jì)算處理器組成。因此,本文重點(diǎn)介紹TESLA C系列產(chǎn)品。
從外觀上看,TESLA C系列產(chǎn)品和普通顯卡非常相似。不過由于TESLA僅為并行計(jì)算加速而生,因此它沒有提供DVI等輸出接口,全部通過PCI-E x16總線和系統(tǒng)進(jìn)行數(shù)據(jù)交換。另外,TESLA往往配備了容量驚人的顯存。比如常見的GeForce GTX 280的顯存容量為1GB,與其規(guī)格相近的TESLA C1060計(jì)算處理器的顯存容量則達(dá)到了4GB。
上一代的TESLA 8系列和G80 GPU核心架構(gòu)設(shè)計(jì)基本相同;而新一代的TESLAC 10系列產(chǎn)品則采用了GT200核心架構(gòu)。以TESLA C1060為例,其內(nèi)核含有240個(gè)流處理器,流處理器頻率為1296MHz,顯存頻率則為800MHz(等效1600MHz GDDR3顯存),顯存位寬也同樣為512-bit,核心電壓則保持了GT200的1,1875V。供電方面,TESLAC1060還是需要1個(gè)8pin+1個(gè)6pin外接電源接口,最大功耗為183W。
新一代的TESLA的GT200核心在設(shè)計(jì)時(shí)就充分考慮到并行計(jì)算的需求,擁有諸如線程調(diào)度器、內(nèi)存界面單元,紋理高速緩存等設(shè)計(jì)。在并行計(jì)算時(shí),TESLA依靠強(qiáng)大的線程調(diào)度器,將程序自動(dòng)調(diào)整,分配給每一個(gè)流處理器并完成計(jì)算,時(shí)刻保證計(jì)算的高效率,非常適合并行計(jì)算任務(wù)的運(yùn)行。
那對(duì)于企業(yè)級(jí)用戶來說,TESLA的吸引力究竟在哪里呢7我們不妨besESLA$1070 1U系統(tǒng)為例來分析。該系統(tǒng)能夠提供高達(dá)4T FLOPs的浮點(diǎn)運(yùn)算能力,而實(shí)際功耗只有700W。700W對(duì)于個(gè)人電腦來說確實(shí)是一臺(tái)高功耗平臺(tái),但是對(duì)于服務(wù)器集群來說卻不值一提,因?yàn)?,要搭配同樣一?T FLOPs的傳統(tǒng)X86 CPU集群,大概需要170顆3,0GHz四核CPU,滿載功耗至少在TESLA$1070的10倍以上,這還不包括前期投入的費(fèi)
用,部署以及后期散熱的成本。無論是從經(jīng)濟(jì)角度,還是從實(shí)際部署的難易程度上看,TESLA的優(yōu)勢(shì)都很明顯,對(duì)于企業(yè)級(jí)和經(jīng)常需要進(jìn)行科學(xué)計(jì)算的用戶來說,確實(shí)是一個(gè)經(jīng)濟(jì)而高效的選擇。
專為并行計(jì)算而生——TESLA的軟件配備
除了硬件部分,TESLA在軟件部分采用CUDA來完成并行計(jì)算的編程。有關(guān)CUDA的介紹,我們已經(jīng)提及了多次。對(duì)TESLA以及其它的并行處理顯卡來說,CUDA能夠支持各種級(jí)別的數(shù)據(jù)和任務(wù)并行處理。并且,CUDA基于編程人員熟悉的C語言結(jié)構(gòu),在語言友好性方面也相當(dāng)不錯(cuò),
在CUDA中,編程人員可以先將計(jì)算目標(biāo)劃分為粗放的子目標(biāo),這些子目標(biāo)可以用并行的方式獨(dú)立解決。之后編程人員可以進(jìn)一步調(diào)整這些并行任務(wù),使其能夠在諸如TESLA等并行處理設(shè)備上完美運(yùn)行。除此之外,CUDA也會(huì)在程序內(nèi)部將要處理的目標(biāo)自行分配為更為細(xì)小的區(qū)塊,然后盡可能地利用流處理器迅速,并行地執(zhí)行。在驅(qū)動(dòng)端,編程人員也不用關(guān)心TESLA是怎樣和系統(tǒng)溝通,怎樣和CPU進(jìn)行互動(dòng)的,甚至在編寫程序的時(shí)候可以將給CPU的命令和給GPU的命令混合編入,隨后只需要使用一些簡單代碼將其區(qū)分出來,CUDA就可以自動(dòng)評(píng)估,將任務(wù)交由GPU或CPU處理,并且自動(dòng)載入GPU進(jìn)行計(jì)算。這種智能的操作和編程模式將編程人員從程序的調(diào)度以及管理運(yùn)算資源中解放出來,轉(zhuǎn)而專注于提高計(jì)算的并行化和運(yùn)行效率,
除了CUDA帶來的強(qiáng)大編程能力外,TESLA還能支持128-bit的IEEE754單、雙精度浮點(diǎn)單元,和CPU浮點(diǎn)單元一樣支持各種高級(jí)的浮點(diǎn)操作。由于采用了通用化的接口和驅(qū)動(dòng)結(jié)構(gòu),TESLA能夠很輕松地兼容AMD和英特爾的X86處理器,并且完美支持Windows 32-bit/64-bit以及Linux操作系統(tǒng)。
由于CUDA的存在,TESLA在軟件方面發(fā)展極為迅速。目前已有100多種專業(yè)軟件提供了對(duì)CUDA?FITESLA的支持,其中包括地震預(yù)測(cè)、油氣資源探測(cè)核磁共振成像,分子動(dòng)力學(xué),神經(jīng)電路模擬等。
技術(shù)分析:CUDA在GeForce和TESLA上的差異
CUDA作為一種開放式的并行計(jì)算技術(shù),不僅可以運(yùn)行在TESLA上,也可以用于GeFome顯卡上。那么CUDA在GeForce(或者Ouadro)上運(yùn)行和在TESLA上運(yùn)行有什么不同?
首先,TESLA是專為企業(yè)部署設(shè)計(jì)。它在系統(tǒng)配置上盡可能滿足并行計(jì)算的需求,比如在單卡上就配備了多達(dá)4GB的高速顯存。而GeFo rce顯卡沒有如此高的顯存配備。其次,TESLA在質(zhì)保和產(chǎn)品支持方面更有優(yōu)勢(shì),產(chǎn)品周期更長。除此之外,TESLA還有支持服務(wù)器的1U規(guī)格以及個(gè)人桌面超級(jí)計(jì)算機(jī)等配置,普通的GeForce顯卡則沒有這些定制型選擇。
至于GeFo rce顯卡,它主要面向游戲和娛樂用戶,在產(chǎn)品定位和系統(tǒng)配置上明顯低于TESLA系列,支持普通的CUDA加速完全可以,但是在專業(yè)的、要求極高的,計(jì)算強(qiáng)度大的計(jì)算時(shí)效率肯定不如TESLA。而Quad r0顯卡主要是面向?qū)I(yè)繪圖領(lǐng)域,支持OpenGL的高級(jí)功能(TESLA不支持OpenGL),專業(yè)繪圖速度遠(yuǎn)高于GeForce,在同等配置情況下價(jià)格也遠(yuǎn)遠(yuǎn)高于TESLA。
大展神威——TESLA在實(shí)際應(yīng)用中的性能提升
目前基于CUDA的加速軟件均可以在TESLA上無縫運(yùn)行并獲得強(qiáng)大的加速計(jì)算效果,其中涉及到科學(xué)計(jì)算和日常應(yīng)用的各種方面(以下均為科研組織或者NVIDIA官方提供的數(shù)據(jù))。
從這些應(yīng)用的實(shí)際測(cè)試結(jié)果來看,TESLA~_少能提供2-250倍的性能提升。比如在計(jì)算電磁學(xué)中,四塊TESLA C870計(jì)算處理器對(duì)比Xeon(至強(qiáng))2,6GHz cPu,可以獲得超過50倍的性能提升。而在流體動(dòng)力學(xué)的計(jì)算中,TESLA的性能幾乎達(dá)到了Xeon以及Itamium(安騰)處理器的100倍左右。
金融計(jì)算領(lǐng)域,利用TESLA C1060計(jì)算處理器加速并行計(jì)算,相比原采用Xeon處理器的計(jì)算結(jié)果,TESLA勝出了58倍之多;而在Monte Carlo定價(jià)模型中,TESLA只用了最多0.4秒就完成了計(jì)算任務(wù),而Xeon2.6GHz處理器需要3111秒才計(jì)算結(jié)束。
很多用戶比較關(guān)注MATLAB的加速計(jì)算。目前MATLAB已經(jīng)推出了利用CUDA進(jìn)行并行處理的加速計(jì)算插件,我們來看看它能帶來多大的性能提升。在對(duì)比主流的Core 2 Duo處理器中,TESLA普遍將時(shí)間減少到只有之前的1%甚至不到,速度提升了一百倍。
從各種科研組織以及NVIDIA官方發(fā)布的數(shù)據(jù)來看,TESLA在并行計(jì)算方面的確有極為驚人的優(yōu)勢(shì),其領(lǐng)先幅度之高令人驚嘆。這種結(jié)果一方面說明了TESLA在硬件基礎(chǔ)上為大規(guī)模并行計(jì)算打下了良好基礎(chǔ):另一方面,不得不佩服CUDA~TESLA帶來的極為明顯的優(yōu)化作用。如果說TESLA硬件部分是人的軀體的話,CUDA就ATESLA的靈魂和大腦。
MC點(diǎn)評(píng):TESLA從發(fā)布到現(xiàn)在僅僅一年多的時(shí)間,已經(jīng)得到眾多廠商和科研單位用戶的廣泛支持。它的優(yōu)勢(shì)很明顯,就是利用GPU強(qiáng)大的并行處理能力打造小型化、經(jīng)濟(jì)化的服務(wù)器平臺(tái)和超級(jí)計(jì)算機(jī)。在充分展現(xiàn)低成本、低功耗、體積更小、高效等特點(diǎn)的同時(shí)贏得了大家的認(rèn)可。不過。我們也看到,目前TESLA的核心架構(gòu)以及附屬功能與GeForce和Quadro的區(qū)別不是太明顯;另外。盡管新一代的TESLA 10產(chǎn)品的雙精度浮點(diǎn)運(yùn)算的速度有一定提升(與單精度浮點(diǎn)運(yùn)算相比提升了8%)。但還不夠。這些都是有待改進(jìn)的地方。對(duì)此,NVlDIA TESLA產(chǎn)品事業(yè)部總經(jīng)理Andy Keane先生表示:未來的TESLA系列產(chǎn)品將擁有專為高性能計(jì)算而設(shè)計(jì)的其它特性,雙精度浮點(diǎn)運(yùn)算的速度也將有5倍以上的提升。如果這些說法得到印證。那么TESLA將有一個(gè)更加值得期待的明天。