個(gè)人集群 走近你的辦公桌
幾年前,當(dāng)?shù)谝豢铍p核處理器出現(xiàn)在市場(chǎng)上的時(shí)候,我曾經(jīng)和一家CPU廠商的技術(shù)人員談起過:雙核對(duì)HPC會(huì)帶來什么樣的影響?我看好的是HPC scale up(向上擴(kuò)展)的方式,即每塊主板上集成越來越多的CPU內(nèi)核,而不是scale out(向外擴(kuò)展)的方式,即一個(gè)集群里集成越來越多的服務(wù)器節(jié)點(diǎn)。這里我們來看一下,對(duì)于一個(gè)雙路或四路的服務(wù)器來說,如果使用雙核,就可以在一個(gè)系統(tǒng)中集成4-8個(gè)內(nèi)核,如果使用四核,就可以把CPU內(nèi)核數(shù)擴(kuò)展到8-16個(gè)。要知道,在幾年前,使用2U機(jī)架雙路單核服務(wù)器,一套16個(gè)節(jié)點(diǎn)的X86集群就需要占據(jù)一個(gè)機(jī)柜中32U的空間;如果再加上交換機(jī)、KVM、UPS等設(shè)備,42U的機(jī)柜很容易就被擠得滿滿的了。而多核的發(fā)展,使得在一個(gè)系統(tǒng)內(nèi)集成更高計(jì)算性能變得更為容易。
今天,四核CPU已經(jīng)成為HPC服務(wù)器的標(biāo)配,六核處理器也在去年出來了,明年還會(huì)出現(xiàn)8核的處理器。多核技術(shù)的發(fā)展開始推動(dòng)人們考慮把HPC的應(yīng)用從傳統(tǒng)的數(shù)據(jù)中心機(jī)房里遷移到一臺(tái)部門級(jí)服務(wù)器上,或者甚至遷移到桌邊的工作站中。這個(gè)趨勢(shì),我們已經(jīng)無法再忽視了。其中起作用的因素有幾個(gè),首先也是最明顯的因素就是多核——一臺(tái)服務(wù)器里集成了越來越多的內(nèi)核,已經(jīng)有足夠的計(jì)算性能滿足大多數(shù)HPC應(yīng)用的需求;其次,就是供電和散熱制冷技術(shù)的發(fā)展,使得針對(duì)辦公室環(huán)境的HPC成為可能;最后一個(gè)因素也許會(huì)讓你大吃一驚:大多數(shù)人并不需要那么多內(nèi)核!小規(guī)模的HPC足以擔(dān)當(dāng)你的應(yīng)用擴(kuò)展。
下面,我們就逐一來討論一下,看看他們對(duì)部門級(jí)HPC系統(tǒng)、個(gè)人HPC系統(tǒng)會(huì)帶來什么樣的影響。
多核推動(dòng)HPC小型化
今天,CPU內(nèi)集成的內(nèi)核數(shù)越來越多。四核處理器已經(jīng)是HPC的標(biāo)配。英特爾和AMD都推出了性能不錯(cuò)、高效節(jié)能的四核產(chǎn)品。六核心至強(qiáng)7400處理器在去年也已經(jīng)推向市場(chǎng)。備受關(guān)注的英特爾Nehalem EP至強(qiáng)服務(wù)器處理器也將在今年3月份正式發(fā)布,預(yù)計(jì)會(huì)大幅提升四核平臺(tái)的性能。今天,一塊四路服務(wù)器主板上可以集成多達(dá)16-24個(gè)內(nèi)核。而且,英特爾八核心Nehalem EX至強(qiáng)處理器也有望在今年底或明年初推向市場(chǎng)。
除了X86處理器,流處理器或GPU處理技術(shù)(即通用圖形處理單元,General Purpose - Graphics Processing Units,簡(jiǎn)稱GP-GPU)也得到了快速發(fā)展。測(cè)試表明,對(duì)于許多特定的應(yīng)用,這種硬件可以獲得比傳統(tǒng)通用處理器更大的性能加速比。全球主要的顯卡制造商象NVidia和AMD/ATI,都已經(jīng)設(shè)計(jì)了相應(yīng)的產(chǎn)品來給HPC用戶使用。這些系統(tǒng)都是通過使用大量的主頻較小的內(nèi)核(比如800個(gè)以上內(nèi)核)來并行計(jì)算某一個(gè)特定的問題。它們可以作為1U服務(wù)器安裝在機(jī)柜中,也可以作為臺(tái)式機(jī)放在你的工作臺(tái)上或你的腳下。
不管是什么樣的外形,總之,多核技術(shù)的發(fā)展使得我們可以在一個(gè)小的空間里實(shí)現(xiàn)相當(dāng)高的計(jì)算能力。這一點(diǎn)使得HPC系統(tǒng)再也不必象以前那樣總是呆在數(shù)據(jù)中心機(jī)房的機(jī)柜里了。
大多數(shù)HPC軟件用不到32核
談到高性能計(jì)算,人們總會(huì)提起全球高性能計(jì)算機(jī)性能TOP500排行榜。每當(dāng)新一屆TOP500發(fā)布時(shí),我總是會(huì)做一些小調(diào)查,比如“今年TOP500系統(tǒng)用到了129600個(gè)CPU核,你的典型應(yīng)用能夠用到多少個(gè)核?”借此我想提醒大家TOP500中的系統(tǒng)畢竟是全球最快的超級(jí)計(jì)算機(jī),主要是專門為一些大問題來設(shè)計(jì)的,象天體物理、核爆炸,關(guān)心這類問題的人畢竟是少數(shù)。對(duì)于大多數(shù)HPC用戶來說,并不需要這么多的核。一般來說,我聽到的答案是,以8核或16核的居多,能用到32核以上的就很少了。
IDC在SC08(2008年國際超算大會(huì))上也公布了對(duì)78個(gè)ISV軟件擴(kuò)展性的調(diào)查結(jié)果。發(fā)現(xiàn),只使用一個(gè)核的應(yīng)用軟件占了24%,使用2-8個(gè)核的應(yīng)用占了32%,9-32核之間的比例是26%,能使用到32個(gè)以上核的應(yīng)用不到20%。也就是說,適合32個(gè)以下內(nèi)核的軟件仍然是當(dāng)前ISV市場(chǎng)的主流,比例高達(dá)82%。
最近,我自己也對(duì)106個(gè)HPC從業(yè)人員進(jìn)行了一項(xiàng)小規(guī)模的調(diào)查,我問了他們一個(gè)相同的問題:“針對(duì)MPI任務(wù),你使用的核心數(shù)量范圍是多少?”結(jié)果如下圖所示。接近一半的受訪者用不到16個(gè)核。注意,這個(gè)調(diào)查沒有進(jìn)一步細(xì)化,因此結(jié)果中既涉及到了從ISV購買軟件的用戶,也包括自己寫代碼的用戶和那些使用開源軟件的用戶。
這一系列的調(diào)查都證明,當(dāng)前大部分的HPC應(yīng)用所使用的內(nèi)核數(shù)都少于32個(gè)。#p#page_title#e#
市面上的“個(gè)人超級(jí)計(jì)算機(jī)”
要讓個(gè)人HPC進(jìn)入辦公室,除了性能,供電、散熱、靜音、尺寸大小等因素也非常重要。近年來,英特爾和AMD在開發(fā)多核處理器時(shí)都盡量不增加額外的功耗。比如,當(dāng)前的四核產(chǎn)品的功耗水平與上一代的雙核相當(dāng),盡管主頻會(huì)低一點(diǎn)。這種設(shè)計(jì)使得無論是機(jī)架式服務(wù)器還是刀片式服務(wù)器都可以大幅地提升CPU核的集成密度,同時(shí)減少空間占用和散熱壓力。
這里以IBM公司的Blade Center S刀片服務(wù)器為例。它可以安裝在機(jī)柜中,也可以放在辦公桌邊。由于使用的是110-220伏的標(biāo)準(zhǔn)電源,在一個(gè)刀片機(jī)箱里最多可以插入6塊刀片,總內(nèi)核數(shù)達(dá)到48個(gè)。該系統(tǒng)集成了共享內(nèi)部存儲(chǔ)模塊,存儲(chǔ)容量高達(dá)12TB SATA或12TB SAS。另外,Blade Center S可以選配一個(gè)下面帶有輪子的防護(hù)罩,不僅可以防灰防塵防水,還可以方便移動(dòng),因此,非常適合辦公室應(yīng)用場(chǎng)合。此外,Blade Center S的噪音也較低,這對(duì)于辦公室環(huán)境來說是非常必要的。HP、DELL和超微也推出了類似這樣的系統(tǒng)。
還有值得一提的是CRAY公司去年推出的CRAY CX1“超級(jí)計(jì)算機(jī)”。CX1可以被看作是下面帶有輪子的刀片服務(wù)器。對(duì)于這類規(guī)模的系統(tǒng)而言,移動(dòng)性是很人性化的設(shè)計(jì),也許其他廠商的刀片服務(wù)器也應(yīng)該加上這一點(diǎn)。CX1最大支持64個(gè)英特爾處理器核,同時(shí)可以配置InfiniBand網(wǎng)絡(luò)。與其他刀片系統(tǒng)類似,它也可以共享存儲(chǔ)刀片和標(biāo)準(zhǔn)的辦公室用電源設(shè)備。在中國,曙光公司去年也推出了類似的所謂個(gè)人高性能計(jì)算機(jī)的PHPC100。
也許有人會(huì)質(zhì)疑這種為辦公環(huán)境設(shè)計(jì)的刀片服務(wù)器是否真的適合HPC應(yīng)用?其實(shí)這一點(diǎn)不必?fù)?dān)心。比如,Blade Center S QS22刀片可以提供兩顆 IBM PowerXCell 8i 處理器和雙通道DDR InfiniBand網(wǎng)絡(luò)連接。QS22刀片的單精度計(jì)算性能高達(dá)6.4 TFLOPS,雙精度性能也可以達(dá)到3.0 TFLOPS,在性能上已經(jīng)相當(dāng)不錯(cuò)。其他大多數(shù)刀片也都支持InfiniBand網(wǎng)絡(luò)。CX1還支持NVidia Telsa GP-GPU刀片,支持流計(jì)算應(yīng)用。
軟件編程和操作系統(tǒng)選擇
多核技術(shù)對(duì)于服務(wù)器系統(tǒng)的設(shè)計(jì)也產(chǎn)生了重要影響。我們知道,除了普通的集群之外,還有很多小系統(tǒng)實(shí)際上應(yīng)該被歸為星群“Constellations”。根據(jù)Beowulf集群創(chuàng)造人Tom Sterling 的定義,“星群是一種使用大型SMP節(jié)點(diǎn)的集群,其中每個(gè)節(jié)點(diǎn)的處理器數(shù)要大于節(jié)點(diǎn)本身的數(shù)量。”今天的很多小“集群”其實(shí)都適合這個(gè)定義。打個(gè)比方,一套32核的系統(tǒng),如果由分別安裝有8個(gè)內(nèi)核的4個(gè)節(jié)點(diǎn)組成,那么,它就是星群;而如果由分別安裝4個(gè)內(nèi)核的8個(gè)節(jié)點(diǎn)組成,那么,它才是真正意義上的集群。從上層軟件的角度來看,在進(jìn)行應(yīng)用開發(fā)設(shè)計(jì)時(shí)是需要對(duì)此進(jìn)行考慮的。
HPC的并行軟件代碼,通常是用MPI寫的,可以在多核服務(wù)器上運(yùn)行;當(dāng)然它們也可以跨越幾臺(tái)多核服務(wù)器。上面提到,有許多小型的部門級(jí)系統(tǒng)實(shí)際上是星群,所以需要考慮一些不同的軟件設(shè)計(jì)方法。 在并行計(jì)算領(lǐng)域,MPI和OpenMP是最為流行的編程模型。程序員面臨的最大問題就是:我寫的代碼是在集群系統(tǒng)上跑,還是在星群上運(yùn)行,或者是針對(duì)SMP系統(tǒng)?這個(gè)問題的答案取決于應(yīng)用,以及你希望能實(shí)現(xiàn)的最大系統(tǒng)擴(kuò)展性。如果因?yàn)槭蹵mdahl定律限制,很難獲得8倍以上的性能提升,那么你最好針對(duì)SMP設(shè)計(jì),使用類似OpenMP的方法。如果你需要更多的內(nèi)核,那么可以試試MPI。或者,為了充分利用SMP集群層次存儲(chǔ)結(jié)構(gòu)的特點(diǎn),可以考慮將上述兩種編程模型相結(jié)合,實(shí)現(xiàn)MPI/OpenMP的混合編程,由MP I負(fù)責(zé)節(jié)點(diǎn)間并行,OpenMP負(fù)責(zé)節(jié)點(diǎn)內(nèi)的多線程并行。不管是那一種,你在做軟件開發(fā)時(shí)都需要事先做好決策。不幸的是,現(xiàn)在還沒有一種編程語言適合所有的場(chǎng)合。
OpenMP并行模型 | MPI并行模型 | |
原理 | OpenMP使用Fork-Join的并行執(zhí)行模式。開始時(shí)由一個(gè)主線程執(zhí)行程序,該線程一直串行地執(zhí)行,直到遇到第一個(gè)并行化制導(dǎo)語句后才開始并行執(zhí)行。過程如下: ①Fork:主線程創(chuàng)建一隊(duì)線程并行執(zhí)行并行域中的代碼;②Join:當(dāng)各線程執(zhí)行完畢后被同步或中斷,最后又只有主線程在執(zhí)行。 | 消息傳遞編程模型是使用顯式方式控制并行性的分布存儲(chǔ)模型,MPI是這一模型的事實(shí)標(biāo)準(zhǔn)。MPI可移植到分布和共享存儲(chǔ)體系結(jié)構(gòu)上,而且允許靜態(tài)任務(wù)調(diào)度。顯式并行通常提供了一個(gè)更好的性能和可移植性。特別適用于粗粒度的并行,使用MPI實(shí)現(xiàn)單程序多數(shù)據(jù)(SPMD)并行模型時(shí),每個(gè)進(jìn)程只能讀寫本地內(nèi)存中的數(shù)據(jù),對(duì)遠(yuǎn)程數(shù)據(jù)的訪問則通過進(jìn)程間顯式的消息傳遞(庫函數(shù)調(diào)用)來完成的。MPI包含了多種優(yōu)化的組通信庫函數(shù),可供編程人員選擇使用最佳的通信模式。 |
并行粒度 | 線程級(jí) | 進(jìn)程級(jí) |
存儲(chǔ)方式 | 共享存儲(chǔ) | 分布式存儲(chǔ) |
數(shù)據(jù)分配方式 | 隱式 | 顯式 |
編程復(fù)雜度 | 相對(duì)簡(jiǎn)單,充分利用了共享存儲(chǔ)體系結(jié)構(gòu)的特點(diǎn),避免了消息傳遞的開銷。數(shù)據(jù)的放置策略不當(dāng)可能會(huì)引發(fā)其他問題;并行化的循環(huán)粒度過小會(huì)增加系統(tǒng)開銷等。 | 編程模型復(fù)雜:需要分析及劃分應(yīng)用程序問題,并將問題映射到分布式進(jìn)程集合;細(xì)粒度的并行會(huì)引發(fā)大量的通信,需要解決通信延遲大和負(fù)載不平衡兩個(gè)主要問題;調(diào)試MPI程序麻煩;MPI程序可靠性差,一個(gè)進(jìn)程出問題,整個(gè)程序?qū)㈠e(cuò)誤。 |
并行化 | 雖然它也支持粗粒度的并行,但主要還是針對(duì)細(xì)粒度的循環(huán)級(jí)并行。將串行程序轉(zhuǎn)換為并行程序時(shí)無須對(duì)代碼作大的改動(dòng)。 | 并行化改進(jìn)需要大量的修改原有的串行代碼。 |
可擴(kuò)展性 | 可擴(kuò)展性差: OpenMP采用共享存儲(chǔ),意味著它只適應(yīng)于SMP、DSM機(jī)器,不適合于集群。 | 可擴(kuò)展性好:適合于各種機(jī)器 |
還有一個(gè)軟件問題是對(duì)操作系統(tǒng)的選擇。今天,高端HPC大多采用Linux,但對(duì)于低端系統(tǒng)(個(gè)人級(jí)或部門級(jí)),已經(jīng)有了另外一種選擇——微軟Windows HPC Server 2008。上文提到的幾乎所有系統(tǒng)都可以支持微軟的HPC方案??紤]到微軟目前在桌面系統(tǒng)上占據(jù)霸主地位,隨著HPC個(gè)人化趨勢(shì)日益明顯,用戶應(yīng)該會(huì)看到,選用基于Windows的HPC方案能更好的與現(xiàn)有環(huán)境集成在一起。當(dāng)然,Linux也是一種選擇,但需要考慮好一下互操作性。
小結(jié):個(gè)人HPC走近你身邊
總結(jié)一下,上面我們討論了部門級(jí)HPC和個(gè)人HPC的新趨勢(shì),今天應(yīng)用軟件擴(kuò)展性限制、高效設(shè)計(jì)的刀片、占用空間較小的系統(tǒng)等因素,加上多核計(jì)算技術(shù)的蓬勃發(fā)展,已經(jīng)給HPC用戶帶來了一些非常有意思的新選擇,使得我們今天可以考慮把HPC應(yīng)用從傳統(tǒng)的數(shù)據(jù)中心機(jī)房里遷移出來,放在桌邊的小機(jī)器上來運(yùn)行。
這種遷移需求也許會(huì)引起一些爭(zhēng)議。我們要注意的是,把計(jì)算資源放在什么地方,主要取決于你的現(xiàn)有環(huán)境。如果你機(jī)房里的空間和電力還夠用,那么買一臺(tái)小型部門級(jí)刀片集群,擱在機(jī)房里會(huì)更有好,畢竟有專門的IT人員會(huì)來管理它;但如果你的數(shù)據(jù)中心正面臨電力不足、空間不足、散熱能力不足等困境,那么把機(jī)器放在辦公室環(huán)境里也確實(shí)是個(gè)不錯(cuò)的選擇。