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