多核時(shí)代:填補(bǔ)軟硬件之間的鴻溝
——
芯片廠商的共識
事實(shí)的情況是正是如此。在某種程度上,英特爾、IBM、AMD、NVIDIA等芯片廠商都在跟ISV和研究機(jī)構(gòu)加強(qiáng)廣泛合作,提供早期的硬件樣品、軟件支持及相關(guān)培訓(xùn)。芯片制造商們已經(jīng)通過編譯器和處理器接口庫(processor interface libraries)等形式提供軟件支持,來幫助工具開發(fā)商處理芯片上越來越多的內(nèi)核。
比如,IBM為其CELL處理器提供軟件開發(fā)套件(SDK)和其他工具(參見:Cell寬帶引擎Linux擴(kuò)展和軟件開發(fā)工具發(fā)布:http://publish.it168.com/2005/1122/20051122046901.shtml),IBM 還啟動(dòng)了一個(gè)名為Octopiler的項(xiàng)目,使對Cell的編程更簡單。
AMD為其GPU編程引入名為“Close to Metal”的CTM技術(shù),使開發(fā)者能夠隨意訪問AMD流處理器中的原生指令集和大規(guī)模并行計(jì)算單元的內(nèi)存。利用CTM,流處理器就能夠像今天的中央處理器(CPU)一樣成為功能強(qiáng)大的開放式可編程架構(gòu)。通過開放架構(gòu),CTM使開發(fā)者能夠?qū)τ布M(jìn)行低階、確定和可重復(fù)的訪問,這一能力是開發(fā)編譯器、調(diào)試器、數(shù)學(xué)庫和應(yīng)用平臺等基本工具所必需的(參見:AMD發(fā)布針對流運(yùn)算的CTM技術(shù):http://publish.it168.com/2006/1120/20061120041201.shtml)。
AMD 的CTM技術(shù)
NVIDIA則為其GPU產(chǎn)品提供了CUDA平臺,開發(fā)人員可運(yùn)用Quadro系列解決方案的高速運(yùn)算性能,以研發(fā)、設(shè)計(jì)原型以及解決復(fù)雜的可視化問題。在多核X86軟件支持方面,英特爾更是擁有非常廣泛的商業(yè)產(chǎn)品、軟件工具和教育培訓(xùn)服務(wù),來幫助開發(fā)人員更好地應(yīng)對多核芯趨勢。針對大量存在的行業(yè)ISV,為了幫助其盡快的實(shí)現(xiàn)從單線程應(yīng)用向多線程應(yīng)用的轉(zhuǎn)變,英特爾投入大量資源,向業(yè)界提供編譯器、應(yīng)用程序分析和調(diào)試、數(shù)學(xué)函數(shù)庫等軟件工具。
NVIDIA CUDA技術(shù)架構(gòu)輔助CPU進(jìn)行運(yùn)算功能
在高性能計(jì)算領(lǐng)域,這一策略已經(jīng)變得更加清晰。最近的例子就是圍繞相對較新的IBM Cell BE和通用GPU處理器,涌現(xiàn)了許多開發(fā)工具。在這些芯片出廠之前,PeakStream和RapidMind等廠商就開始為新的加速器設(shè)備提供應(yīng)用開發(fā)平臺。如果這些產(chǎn)品獲得成功,將在芯片廠商和軟件開發(fā)商之間就有望實(shí)現(xiàn)非常重要和關(guān)鍵的協(xié)同機(jī)制。下面,我們就以CELL和GPU在HPC中的應(yīng)用為例,來看看其軟件開發(fā)方面存在的機(jī)遇和挑戰(zhàn)。
用GPU和CELL充當(dāng)HPC加速器
使用GPU和CELL處理器來充當(dāng)流處理加速器(stream processing accelerator),這一做法已經(jīng)在HPC業(yè)界引發(fā)了相當(dāng)?shù)年P(guān)注。人們可以通過這些處理器來實(shí)現(xiàn)應(yīng)用加速,其目標(biāo)領(lǐng)域包括3D可視化、廣播編碼、醫(yī)療成像、多媒體內(nèi)容創(chuàng)作、圖像和信號處理、金融財(cái)務(wù)分析、地震資料處理、大規(guī)模數(shù)據(jù)庫交易和企業(yè)科研,幾乎適用于所有要求強(qiáng)勁計(jì)算性能的數(shù)據(jù)密集型應(yīng)用。這些多核加速器在HPC領(lǐng)域里的廣泛適用性,已經(jīng)吸引了軟件開發(fā)商的關(guān)注。
早在去年9月份,Peaksteram公司就推出了一種“基于GPU顯卡來構(gòu)建超級計(jì)算機(jī)”的解決方案——該公司的C/C++程序接口、虛擬機(jī)處理任務(wù)調(diào)度和內(nèi)存管理等工具軟件,為程序員提供一種方便的途徑,利用多內(nèi)核x86或Cell處理器和GPU組成聯(lián)合系統(tǒng)。編程人員可以象以往那樣使用C/C++ 語言編寫程序,PeakStream的軟件負(fù)責(zé)硬件資源的分配。雖然客戶必須根據(jù)PeakStream軟件的接口對應(yīng)用軟件進(jìn)行改編,但跟搞明白圖形卡或其它硬件產(chǎn)品的內(nèi)部原理來說,還是要簡單得多。如其今年3月發(fā)布的PeakStream Workstation for Windows包含了一系列工具和庫文件,可以方便開發(fā)者在微軟的Visual Studio下為顯卡開發(fā)多線程通用運(yùn)算程序。
PeakStream軟件架構(gòu)
RapidMind是加拿大的一家為多核平臺(GPU/Cell等)提供編程環(huán)境的公司,近期也推出了類似的平臺,宣稱能夠支持IBM CELL處理器以及最新的NVIDIA、 AMD/ATI GPU產(chǎn)品在HPC領(lǐng)域里的應(yīng)用,并表示不久就會(huì)支持多核X86處理器。RapidMind提供C++的編程環(huán)境,對C++進(jìn)行了一些擴(kuò)展,比如特殊的數(shù)據(jù)類型,以及數(shù)字圖像處理、游戲編程等庫函數(shù)。目前來看,PeakStream使用的技術(shù)和RapidMind非常相似,都是C/C++和library方式,都是Array Programming Model,都是動(dòng)態(tài)編譯,都提供虛擬機(jī)。
除了商業(yè)公司,科研人員也正在研究新的基于CELL的加速器技術(shù)。今年4月份,中國科學(xué)院(CAS)計(jì)算機(jī)網(wǎng)絡(luò)信息中心和IBM在國內(nèi)合作的第一臺基于Cell BE(Broadband Engine, 寬帶引擎)的刀片服務(wù)器系統(tǒng)開始投入運(yùn)行。在早期的系統(tǒng)測試中,中國國家網(wǎng)格(CNGrid)和IBM聯(lián)合組建的測試團(tuán)隊(duì)通過進(jìn)行一系列優(yōu)化軟件和Cell BE的硬件潛力開發(fā),將地震應(yīng)用的計(jì)算速度提高了60倍。地震預(yù)報(bào)專家將可以在短短幾分鐘內(nèi)得到以往需要數(shù)個(gè)小時(shí)才能得到的計(jì)算結(jié)果。(參見:國內(nèi)首臺Cell刀片服務(wù)器落戶中科院http://publish.it168.com/2007/0416/20070416034401.shtml)
IBM的CELL刀片系統(tǒng)
在美國的田納西州大學(xué),Jack Dongarra和他的小組在創(chuàng)新計(jì)算實(shí)驗(yàn)室(Innovative Computing Laboratory)中安裝了基于IBM CELL 處理器的系統(tǒng)——跟中科院使用的刀片系統(tǒng)不同,這是一套由4個(gè)節(jié)點(diǎn)子系統(tǒng)組成的PlayStation3 (PS3)集群,用作科學(xué)計(jì)算的研究平臺。僅僅花費(fèi)了2400美元,他們就構(gòu)建了這套可以提供600 Glops(單精度浮點(diǎn)運(yùn)算)峰值性能的系統(tǒng)。盡管PS3從來都不是專門針對高性能計(jì)算機(jī)群節(jié)點(diǎn)來設(shè)計(jì)的,但其低廉的價(jià)格和可用性還是得到了一些正在尋求低成本FLOPS的HPC FANS的青睞。值得一提的是,田納西州大學(xué)小組正在評估PS3機(jī)群的編程模型,及該架構(gòu)對HPC的某些限制。
CELL處理器用于HPC的局限性
在測試過程中,田納西州大學(xué)的科研人員編撰了一份關(guān)于使用PlayStation 3作為HPC平臺的技術(shù)報(bào)告——《A Rough Guide to Scientific Computing On the PlayStation 3》(感興趣的讀者可以從這里下載:http://www.netlib.org/utk/people/jackdon garra/papers/scop3.pdf)。對于那些對使用CELL處理器進(jìn)行技術(shù)計(jì)算比較陌生的開發(fā)人員來說,這份報(bào)告有必要一讀。
田納西州大學(xué)科研人員用PS3搭建機(jī)群
該報(bào)告描述了CELL芯片和PS3的硬件性能、可支持的系統(tǒng)軟件,以及如何來組建一套實(shí)驗(yàn)室用的PS3機(jī)群。它還探討了相關(guān)的編程技巧,并提供了一些實(shí)際的應(yīng)用案例。最實(shí)用的一部分是,它討論了針對CELL架構(gòu)的許多商業(yè)和科研軟件平臺。盡管這份報(bào)告沒有闡述跟CELL/PS3軟件開發(fā)相關(guān)的全部細(xì)節(jié),但它確實(shí)盡力給出了關(guān)于當(dāng)前可用技術(shù)的總體框架性說明。下面這段引自該報(bào)告的引言部分:
“用PS3來做科學(xué)計(jì)算,聽起來很讓人振奮,但其實(shí)卻是坎坷之途。針對多核處理器的并行編程模型還只是處于襁褓階段,標(biāo)準(zhǔn)的API甚至還沒有出現(xiàn)。這導(dǎo)致的結(jié)果是,當(dāng)前,我們只能通過手寫代碼來充分挖掘CELL處理器的硬件性能。[編者按:RapidMind公司可能會(huì)相當(dāng)不同意這點(diǎn)。]總的來看,由于該處理器處理性能和互連通信速度之間極不平衡,從而嚴(yán)重削弱了PS3平臺用做科學(xué)計(jì)算的適用性,詳見9.1章節(jié)。不過,CELL處理器仍然是一個(gè)具有革命性的芯片,提供了突破性的強(qiáng)大性能,而且售價(jià)也不貴。我們希望這份報(bào)告能夠讓CELL的道路變得更平坦一些?!?
該報(bào)告對PS3用于科學(xué)計(jì)算的局限性進(jìn)行了相當(dāng)精彩的探討,包括內(nèi)存帶寬和容量、網(wǎng)絡(luò)連接速度以及浮點(diǎn)運(yùn)算方面的缺陷。該報(bào)告的姊妹篇?jiǎng)t進(jìn)一步討論了這些問題的更多技術(shù)細(xì)節(jié)——《Limitations of the PlayStation 3 for High Performance Cluster Computing》(感興趣的讀者可從這里下載:http://www.netlib.org/utk/people/jackdon garra/papers/ps3-summa-2007.pdf)。在下一代的處理器中,那些限制CELL用于科學(xué)計(jì)算的浮點(diǎn)運(yùn)算方面的缺陷,可能會(huì)得到解決。根據(jù)田納西州大學(xué)的報(bào)告,在下一代浮點(diǎn)運(yùn)算方面,IBM公司正在計(jì)劃將雙精度性能(double-precision performance)從14Glops提升到102Glops,但沒有說明IEEE 754浮點(diǎn)支持問題是否也會(huì)得到解決。
GPU面臨類似的問題
GPU是另一個(gè)例子。跟主流的CPU相比,GPU的原始浮點(diǎn)性能要強(qiáng)勁得多。比如,3GHz的奔騰4運(yùn)算能力大約為6GFLOP(10億次浮點(diǎn)運(yùn)算每秒),Woodcrest最高可達(dá)24GFLOP,四路雙核安騰2系統(tǒng)運(yùn)算速度可達(dá)45GFLOP。而GPU要領(lǐng)先的多,比如ATI高端的X1950 XTX處理器運(yùn)算速度為375GFLOP,雙顯卡模式達(dá)到750GFLOP,相當(dāng)于31個(gè)Xeon 5100處理器;Nvidia的Geforce 7950 GX2雙GPU顯卡也能達(dá)到384GFLOP。
GPU與CPU之間的性能對比
當(dāng)然,浮點(diǎn)性能只是一方面,GPU要完全取代CPU還有很大的距離。GPU可以在部分急需數(shù)學(xué)計(jì)算的領(lǐng)域表現(xiàn)出色,但是GPU內(nèi)部緩存遠(yuǎn)小于CPU,因此,CPU可以存儲(chǔ)預(yù)測和非預(yù)測指令,GPU則無法做到。AMD和NVIDIA都在準(zhǔn)備新一代GPGPU產(chǎn)品,分別基于R600和G80,NVIDIA將G80用于GPU計(jì)算,AMD將R600用于流計(jì)算,這種產(chǎn)品在PCB上集成盡可能多的內(nèi)存,而輸出接口只有1個(gè)DVI。NVIDIA有可能在Computex 2007大會(huì)上發(fā)布GPGPU版的G80產(chǎn)品,同時(shí)發(fā)布正式版的CUDA SDK以配合GPGPU版的G80。
而且,GPU也面臨跟CELL類似的浮點(diǎn)運(yùn)算局限性。如果NVIDIA和AMD想將GPU成功引入科學(xué)計(jì)算市場,它們就必須就相應(yīng)設(shè)備的浮點(diǎn)問題做出某些決定。當(dāng)前,這二者都無法提供任何雙精度硬件(double precision hardware),IEEE 754兼容性問題也還沒有得到完全解決。然而,NVIDIA最新的G80設(shè)備已經(jīng)開始支持rounding modes、overflow和NaN。
這里的問題是,為了支持GPU的科學(xué)浮點(diǎn)運(yùn)算性能,NVIDIA和AMD在改進(jìn)GPU架構(gòu)方面會(huì)走多遠(yuǎn)?另外,GPU工程師還不得不考慮內(nèi)存糾錯(cuò)、低功耗等方面的問題,以提供更強(qiáng)壯的HPC方案。
綜上所述,隨著多核時(shí)代的到來,為了平衡應(yīng)用需求和硬件性能之間的緊張關(guān)系,英特爾、IBM、AMD、NVIDIA等芯片廠商已經(jīng)開始做更多的工作——編譯器、接口庫、軟件工具等等,甚至通過GPU和CELL等“另類”的方法來提供HPC應(yīng)用加速技術(shù)。一些軟件廠商如PeakStream和RapidMind等,也企圖借機(jī)填補(bǔ)多核硬件與并行軟件之間的巨大鴻溝。
評論