異構(gòu)眾核計(jì)算的“三個(gè)三”
一言以蔽之,“三個(gè)玩家三條路,三大挑戰(zhàn)待征服”
正如Jack Dongarra教授所言,“在可預(yù)見(jiàn)的未來(lái),異構(gòu)(眾核)計(jì)算將為成為主流”。硬件有三個(gè)玩家,會(huì)走三條完全不同的路,而軟件也會(huì)面臨三大挑戰(zhàn)。
自從2006年AMD收購(gòu)ATI之后,CPU市場(chǎng)的Intel對(duì)AMD,GPU市場(chǎng)的nVIDIA對(duì)ATI的2對(duì)2格局就被打破了,形成了現(xiàn)時(shí)異構(gòu)計(jì)算的“三國(guó)演義”:Intel對(duì)AMD對(duì)nVIDIA。
A M D是這三家中惟一同時(shí)擁有成熟C P U和GPU產(chǎn)品線的廠商。在“Future is Fusion”的戰(zhàn)略下推出了集成顯卡的CPU,未來(lái)仍將向集成X86 CPU +GPU的APU芯片繼續(xù)進(jìn)化。
nVIDIA在2004至2006年之間,趁多核CPU性能青黃不接之際,提出了通用GPU的概念,并進(jìn)軍計(jì)算市場(chǎng)。五、六年之間就將TOP500中排名靠前的3臺(tái)超級(jí)計(jì)算機(jī)納入麾下,占領(lǐng)了HPC的制高點(diǎn)。最近由于面向個(gè)人消費(fèi)級(jí)的獨(dú)立顯卡Geforce市場(chǎng)受到?jīng)_擊,發(fā)展停滯不前,從而無(wú)法繼續(xù)攤薄Tesla計(jì)算卡的生產(chǎn)成本。不過(guò)就算如此,未來(lái)GPU的產(chǎn)品形態(tài)最大可能還是單卡。當(dāng)然如果“丹佛”芯片研發(fā)順利的話,也不排除A R M CPU+G P U的芯片問(wèn)世。
Intel前幾年針對(duì)GPU對(duì)計(jì)算市場(chǎng)的奇襲,倉(cāng)促應(yīng)戰(zhàn)的Larrabee出師未捷。痛定思痛之后,一邊“圍魏救趙”,推出集成顯卡的Sandy Bridge,逆襲Geforce的大本營(yíng)個(gè)人顯卡市場(chǎng);另一邊放棄原有的GPU思路,改用全新架構(gòu)MIC(Many Integrated Cores),明年年中推出的Knight Corner頗有幾分值得期待之處。雖然明年的新MIC仍會(huì)以PCIE卡的形態(tài)發(fā)布,但從成本及編程等綜合考慮,PCIE卡應(yīng)該并非Intel的最佳選擇。因此如果MIC投石問(wèn)路成功,Intel很有可能將其集成到主板中,以解決目前PCIE卡在計(jì)算時(shí)遇到的主板-插卡之間數(shù)據(jù)傳輸瓶頸的通病。
由于異構(gòu)眾核的硬件更新?lián)Q代頻率驚人,甚至超越了CPU的摩爾定律,因此軟件研發(fā)將不可避免地會(huì)在編程策略、目的和工具上遇到各自的挑戰(zhàn)。
Revolution V.S. Evolution:
關(guān)于編程策略,到底是采用推倒重來(lái)的革命(Revolution)方式還是逐步改良的進(jìn)化(Evolution)方式,一直都存在很大的分歧。某些學(xué)者認(rèn)為,從編程思路來(lái)說(shuō),異構(gòu)眾核不僅完全不同于串行CPU,甚至不同于多核CPU。因此如果過(guò)于執(zhí)著于原先的串行CPU,可能會(huì)束縛在原有的思路中,導(dǎo)致無(wú)法寫(xiě)出優(yōu)秀的異構(gòu)眾核程序。應(yīng)當(dāng)采用全部推倒,重新開(kāi)發(fā)的方法。不過(guò)我個(gè)人對(duì)此
有不同的看法:先改良成多核CPU版本作為過(guò)渡,這樣可以熟悉代碼,又可以深入挖掘算法的內(nèi)在并行性,然后再改良成異構(gòu)眾核版本。逐步改良所需花費(fèi)的時(shí)間和精力不會(huì)很大,但能有效利用現(xiàn)有代碼,保護(hù)用戶先前投資,同時(shí)更容易掌控進(jìn)度,規(guī)避風(fēng)險(xiǎn),因?yàn)闊o(wú)法實(shí)現(xiàn)多核CPU的算法,通常無(wú)法設(shè)計(jì)高效的異構(gòu)眾核版本。然而目前,針對(duì)逐步改良所必須的SDK和工具集還很不完善。
Performance V.S. Performance Portability:
伯克利大學(xué)的David Patterson教授曾提到,性能(performance)一直以來(lái)都是并行編程的惟一目的。然而進(jìn)行異構(gòu)多核時(shí)代之后,性能可移植性(performance portability)將有望逐漸成為第一要義。如果某算法在指不同廠商的產(chǎn)品,或相同廠商的不同代產(chǎn)品之間,都有比較穩(wěn)定的性能加速比,則稱該程序有良好的性能可移植性,例如在異構(gòu)平臺(tái)A/B/C上,加速比分別為10、8、7的算法,就要遠(yuǎn)好于20、2、3。之前無(wú)論是串行程序還是并行程序都是運(yùn)行在CPU之上,其本質(zhì)的計(jì)算模型是一致的。但異構(gòu)多核就不同了,MIC架構(gòu)與GPU架構(gòu)完全不同,nVIDIA的GPU與AMD的GPU區(qū)別很大,即使是同一公司不同代的GPU之間,硬件參數(shù)和性能也有不小的差別。因此性能可移植性所帶來(lái)的挑戰(zhàn)會(huì)越來(lái)越嚴(yán)峻,沒(méi)有良好的性能可移植性,大家就只能緊隨廠商的步伐,頻繁地更新程序。然而到目前為止,還沒(méi)有一個(gè)成熟到可用的解決方案。
Explicit V.S. Implicit:
異構(gòu)眾核計(jì)算目前所采用的工具,無(wú)論是nVIDIA主推的C U D A還是A M D主推的O p e n C L,都屬于顯式(explicit)并行工具,即需要程序員手動(dòng)處理并行性,分配內(nèi)存和協(xié)調(diào)線程間同步等,這與集群上的MPI性質(zhì)相同。而隱式(implicit)并行工具則提供了相應(yīng)的工具和編譯器,能部分解決這些問(wèn)題。鑒于難學(xué)難用的顯式并行MPI只在HPC社區(qū)內(nèi)流行,而異構(gòu)眾核計(jì)算又志不在此,因此雖然性能上會(huì)打著折扣,但易學(xué)易用的隱式并行最終大有可能成為主流。然而目前雖有一些可用的隱式并行產(chǎn)品如法國(guó)CAPS的HMPP,但處理實(shí)際復(fù)雜算例的能力還有待進(jìn)一步完善和提高。
在可預(yù)見(jiàn)的未來(lái),從智能手機(jī)到超級(jí)計(jì)算機(jī),都將出現(xiàn)異構(gòu)眾核計(jì)算的身影。目前三大硬件廠商基于各自商業(yè)利益和技術(shù)優(yōu)勢(shì)的考慮,分別選擇了三條完全不同的產(chǎn)品路線,最終將帶來(lái)一場(chǎng)異常慘烈的搏殺。誰(shuí)能先“軟硬通吃”,形成類(lèi)似P C時(shí)代的Wintel聯(lián)盟,搶先一步提供針對(duì)上述三大挑戰(zhàn)的解決方案,就能為勝利天平自己的一邊添加一個(gè)重量級(jí)的砝碼。
林新華上海交通大學(xué)網(wǎng)格中心副主任