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