文/季冬
如何從軟件和硬件兩個(gè)方面來(lái)實(shí)現(xiàn)一個(gè)可靠和穩(wěn)定的高性能計(jì)算機(jī),是當(dāng)前面臨的主要問(wèn)題。
當(dāng)前高性能計(jì)算領(lǐng)域發(fā)展面臨如下關(guān)鍵挑戰(zhàn):
1.系統(tǒng)規(guī)模持續(xù)增大,系統(tǒng)功耗成為制約系統(tǒng)發(fā)展的主要瓶頸。例如,在去年SC12上發(fā)布的TOP500排名中,世界第一快的高性能計(jì)算機(jī)Titan包括56萬(wàn)多處理器核,功率達(dá)到8.2MW(兆瓦)。如果按照Titan機(jī)器外推,未來(lái)的艾級(jí)(Exa-Scale)超級(jí)計(jì)算機(jī)的功率將達(dá)到300MW,每年的電費(fèi)就需要大約3億美元。然而,美國(guó)能源部目前給高性能計(jì)算機(jī)設(shè)計(jì)人員提出的目標(biāo)是,在20MW功率限制下實(shí)現(xiàn)艾級(jí)計(jì)算機(jī)。
2.系統(tǒng)可靠性和可用性。隨著系統(tǒng)規(guī)模持續(xù)增大,整機(jī)的平均無(wú)故障時(shí)間變得越來(lái)越小,如何從軟件和硬件兩個(gè)方面來(lái)實(shí)現(xiàn)一個(gè)可靠和穩(wěn)定的高性能計(jì)算機(jī),也是當(dāng)前面臨的主要問(wèn)題。
3.應(yīng)用程序的可擴(kuò)展性。目前硬件已經(jīng)發(fā)展到很大規(guī)模,但是大量的科學(xué)應(yīng)用程序還很難擴(kuò)展到如此大規(guī)模的系統(tǒng),如何優(yōu)化當(dāng)前重要的科學(xué)計(jì)算程序,使之?dāng)U展到大規(guī)模系統(tǒng),同時(shí)開發(fā)支持大規(guī)模系統(tǒng)的性能分析和正確性調(diào)試軟件也是當(dāng)前亟待解決的問(wèn)題。
如果讓傳統(tǒng)的程序充分利用GPU加速設(shè)備,需要使用CUDA編程接口把程序中計(jì)算密集部分重新改寫,這無(wú)疑給傳統(tǒng)程序移植到GPU設(shè)備帶來(lái)很多挑戰(zhàn)。
為了解決高性能計(jì)算機(jī)系統(tǒng)功耗面臨的挑戰(zhàn),國(guó)際上目前主流的技術(shù)是采用通用處理器和加速部件混合的架構(gòu)來(lái)提高整機(jī)的性能功耗比。在通用處理器方面,英特爾的至強(qiáng)處理器系列、IBM的Power處理器系列和AMD的Opteron系列是高性能計(jì)算機(jī)采用的主流處理器,在體系結(jié)構(gòu)方面變化很少。
然而在加速部件上,卻存在很大的變化。Nvidia公司在幾年前發(fā)布的基于Fermi架構(gòu)的圖形處理器,由于其在性能功耗比方面比通用處理器表現(xiàn)出了更好的性能,目前已經(jīng)大量地應(yīng)用在高性能計(jì)算機(jī)上,例如Titan高性能計(jì)算機(jī)和中國(guó)的“天河一號(hào)”都采用了Nvidia的圖形處理器。2012年,Nvidia又發(fā)布了基于Kepler架構(gòu)的圖形處理器,在性能方面都有了顯著提升。英特爾公司在加速部件方面也不甘落后,在SC12上,英特爾公司首次官方發(fā)布了眾核協(xié)處理器Xeon Phi。在2013年中發(fā)布的TOP500中,排名第7的Dell公司研制的Stampede超級(jí)計(jì)算機(jī)就采用了最新的Phi處理器。本文重點(diǎn)分析下英特爾這款眾核處理器Phi。
Phi是基于英特爾的眾核集成體系結(jié)構(gòu)設(shè)計(jì)(Many Integrated Core,MIC),最新發(fā)布的Phi處理器有兩個(gè)版本:Phi 3100和Phi 5100,都是采用英特爾最新的22納米工藝。Phi5100包括61個(gè)處理器核,支持320GB/s的內(nèi)存帶寬,8GB的GDDR-5內(nèi)存。每個(gè)核的處理器頻率在1GHz左右,每個(gè)核都具有32KB L1指令Cache,32KB L1數(shù)據(jù)Cache和512KB的L2 Cache,Cache之間支持一致性協(xié)議。每個(gè)處理器核包括4個(gè)硬件的線程,總共有244個(gè)硬件線程。所有核之間通過(guò)一個(gè)支持雙向通信的環(huán)(Bidirectional Ring)連接在一起,內(nèi)存控制器均勻地分布在雙向環(huán)上。Phi協(xié)處理器通過(guò)PCI-E總線連接在服務(wù)器上,通過(guò)PCI-E和系統(tǒng)的處理器之間進(jìn)行通信。在Phi協(xié)處理器上,運(yùn)行一個(gè)單獨(dú)的操作系統(tǒng),管理協(xié)處理器的各種硬件資源。
由于目前廣泛使用的Nvidia GPU在編程模型上主要采用CUDA編程接口,如果讓傳統(tǒng)的程序充分利用GPU加速設(shè)備,需要使用CUDA編程接口把程序中的計(jì)算密集部分重新改寫,這無(wú)疑給傳統(tǒng)程序移植到GPU設(shè)備帶來(lái)很多挑戰(zhàn)。對(duì)于英特爾的Phi協(xié)處理器,目前它支持多種編程模型。首先,傳統(tǒng)的基于MPI、OpenMP、Pthread等編程模型的并行程序可以無(wú)需任何修改直接運(yùn)行在Phi處理器上。這種方式可以大大減少傳統(tǒng)程序移植到Phi加速部件的時(shí)間。其次,它支持對(duì)稱運(yùn)行模式,即主機(jī)處理器和Phi協(xié)處理器同時(shí)執(zhí)行并行程序的模式,例如一個(gè)并行的MPI程序可以同時(shí)在主機(jī)和協(xié)處理器上執(zhí)行,這種模式可以充分利用主機(jī)處理器資源和協(xié)處理器資源。最后,Phi還支持英特爾提供的專有Offload編程模型,即僅僅把程序某部分計(jì)算模塊在Phi處理器上運(yùn)行,其余部分仍然在主機(jī)運(yùn)行。該種編程模型需要用戶修改原有程序,明確需要在主機(jī)和協(xié)處理器之間傳入和傳出的變量。此外,Phi協(xié)處理器還提供了512位向量處理單位,最多可以同時(shí)處理16個(gè)單精度或者8個(gè)雙精度運(yùn)算。充分利用Phi處理器上的向量處理單元是提高程序性能的一個(gè)主要因素。
通過(guò)對(duì)當(dāng)前的高性能計(jì)算機(jī)分析,我們可以看出,在高性能計(jì)算領(lǐng)域處理器的發(fā)展存在如下趨勢(shì):
1.為了提高高性能計(jì)算機(jī)整機(jī)的性能功耗比,采用通用處理器和加速部件的混合架構(gòu)成為未來(lái)發(fā)展的主要趨勢(shì)。加速部件處理器的核心相對(duì)簡(jiǎn)單,比通用處理器可以提供更高的性能功耗比。
2.加速處理器的核心數(shù)目增長(zhǎng)迅速。目前英特爾Phi處理器最多包括61個(gè)核,244個(gè)硬件線程,Nvidia最新GPU已經(jīng)有1000多個(gè)核。面對(duì)如此多的處理器核心,如何充分挖掘應(yīng)用程序中的并行性,有效利用這么多的處理器核,是硬件設(shè)計(jì)人員給軟件開發(fā)人員提出的主要挑戰(zhàn)。
3.基于混合模型的高性能計(jì)算機(jī)對(duì)應(yīng)用程序的移植和優(yōu)化提出新的挑戰(zhàn)。一般加速部件的編程模型也相對(duì)復(fù)雜,在程序的性能分析和性能優(yōu)化方面給程序開發(fā)人員提出了很多要求。盡管英特爾的Phi處理器在編程上盡量和傳統(tǒng)通用處理器的編程保持兼容,但為了獲取更好的性能和充分發(fā)揮硬件性能,一定的性能調(diào)優(yōu)仍是必須的。
在解決處理器性能功耗問(wèn)題方面,我們國(guó)家也開始了很多自己的研究工作。由于通用處理器在計(jì)算某類具體應(yīng)用程序時(shí),芯片里面很多功能部件處于閑置或者空閑狀態(tài)。如何針對(duì)特定應(yīng)用程序設(shè)計(jì)定制的處理器,刪減不需要的指令和功能部件,這樣可以大大提高處理器的性能功耗比。清華大學(xué)在研制針對(duì)特定應(yīng)用程序定制處理器方面已經(jīng)開始了一定的前期工作。目前主要針對(duì)天氣預(yù)報(bào)程序定制高性能計(jì)算機(jī)處理器,從而提高高性能計(jì)算機(jī)的性能功耗比。