楊志昱 張旭東
在異構(gòu)計算系統(tǒng)上進行的并行計算通常稱為異構(gòu)計算,基于異構(gòu)計算的高性能計算技術(shù)是目前高性能計算領(lǐng)域的發(fā)展熱點之一,異構(gòu)計算技術(shù)具有計算能力強、可擴展性好、計算資源利用率高等優(yōu)點。將現(xiàn)有的應(yīng)用算法移植到異構(gòu)計算平臺是對軟件性能不斷優(yōu)化的過程。本文將從一個開發(fā)者的角度講述基于Intel集成眾核(MIC)的架構(gòu)和基于該架構(gòu)的軟件優(yōu)化思路和技術(shù)手段。
【關(guān)鍵詞】高性能計算 異構(gòu)計算 矢量化 MIC
得益于高性能計算領(lǐng)域的飛速發(fā)展,地震數(shù)據(jù)處理發(fā)生著翻天覆地的變化,高密度大數(shù)據(jù)體的處理已經(jīng)習(xí)以為常,疊前偏移成像也被廣泛應(yīng)用,每當(dāng)高性能計算領(lǐng)域有新技術(shù)誕生,我們的地震數(shù)據(jù)處理系統(tǒng)都面臨著更大的機遇和挑戰(zhàn)。
如今,高性能計算產(chǎn)業(yè)正在經(jīng)歷著一場深刻的變革,引導(dǎo)這場變革的主角就是異構(gòu)計算。目前主流的集群架構(gòu)系統(tǒng),采用的是多核CPU的同構(gòu)模式,就是將多個計算節(jié)點通過網(wǎng)絡(luò)連接,形成高性能計算集群,而異構(gòu)計算則是CPU加異構(gòu)協(xié)助理器來實現(xiàn)。地震數(shù)據(jù)處理系統(tǒng)緊跟高性能計算技術(shù)步伐,也逐步開展了基于MIC高性能計算的軟件研發(fā)工作。
1 MIC架構(gòu)
MIC架構(gòu)將多個英特爾 CPU 核心整合到了單個芯片上,通過 PCI Express 總線連接英特爾至強服務(wù)器(也稱為“主機”),我們稱之為協(xié)處理器。一個協(xié)處理器主要包括多個處理核心、高速緩存、內(nèi)存控制器、PCIe客戶端邏輯和帶寬極高的雙向環(huán)形互連,每個核心配有專用的二級高速緩存,所有這些組件都由環(huán)形互連連接在一起。MIC協(xié)處理器核心的一另個重要組件是矢量處理單元 (VPU), VPU包括一種新型的 512 位 SIMD 指令集。
對于軟件開發(fā)者,MIC架構(gòu)的重要屬性如下:
(1)每個MIC卡可以設(shè)置獨立的IP,可以把每個MIC卡當(dāng)作獨立的節(jié)點。
(2)MIC卡擁有512bit的向量位寬,可以同時處理16個32-bit浮點/整形元素或8個64-bit浮點/整形元素的計算。
(3)MIC卡包含32KB L1指令cache和32KB L1數(shù)據(jù)cache,同時,每個核擁有全局可見的L2 cache,大小為512KB;
(4)卡上有一個微操作系統(tǒng)(uos);
(5)MIC基于X86架構(gòu),支持多種并行模型,如OpenMP、pThread、MPI等,可以采用C、C++和Fortran三種語言進行軟件移植開發(fā),編程簡單;
(6)提供類似于英特爾至強處理器編程環(huán)境的通用編程環(huán)境,有豐富的開發(fā)工具支持,開發(fā)工具包括編譯器、線程庫和高性能數(shù)學(xué)庫等眾多庫、性能分析調(diào)優(yōu)工具以及并行調(diào)試器。
在選擇編程模型時,鑒于MIC支持CPU多核上的并行編程模型,因此,MIC與CPU多核之間的編程很靈活,MIC與CPU相結(jié)合可以采用的編程模式有三種:Offload模式,native模式和對等模式。
(1)Offload模式,Offload模式可以以CPU為host端,即CPU為主MIC為輔;也可以以MIC為host端,即MIC為主CPU為輔。其中,CPU為主MIC為輔模式是MIC編程中最常用的模式,該模式的執(zhí)行過程是將數(shù)據(jù)傳送到MIC卡上,在MIC上進行計算,計算完成后,將結(jié)果傳送回CPU。在編寫程序時通過編譯制導(dǎo)語句,標示所要使用MIC加速的代碼段。Offload語句通常會與OpenMP語句相結(jié)合,以開啟多線程使用MIC設(shè)備并行化執(zhí)行。
(2)native模式,該模式是只運行在MIC卡上的程序,原有的CPU的程序,只要在編譯時加上“-mmic”就可編譯得到,
(3)CPU與MIC對等模式,程序主函數(shù)在CPU與MIC端同時發(fā)起,這時MIC作為一個獨立的節(jié)點存在,與運行跨CPU節(jié)點的并行程序相同,需要通過MIC函數(shù)接口進行數(shù)據(jù)間的通信。
2 算法優(yōu)化
大體上看MIC協(xié)處理器非常適合計算與數(shù)據(jù)訪問比率較高的高度并行應(yīng)用。它包括多達 61 個通過雙向環(huán)形總線片上連接的 CPU內(nèi)核,每內(nèi)核能夠以輪詢的方式在多達 4 條硬件線程間進行切換,一共可以同時并發(fā)244個硬件線程。從硬件特性可以看出,MIC為高度并行化應(yīng)用設(shè)計的,用戶為了獲得這種高性能前提是對現(xiàn)有算法進行適當(dāng)調(diào)優(yōu),調(diào)整的策略是讓程序具備高度可并發(fā)和矢量化,并能高效利用內(nèi)存。
(1)高可并發(fā)就是使用多核并發(fā),目前程序開發(fā)的趨勢是無論在個人PC或高性能計算節(jié)點上,程序都可以使用多核并行運行,并發(fā)度越高,效率也越高,在MIC上總共有244條硬件線程可以使用,在實際應(yīng)用中我們可以使用的pthread或OpenMP來實現(xiàn)高并發(fā)。如果應(yīng)用算法本身難于進行并行劃分,或者非常強調(diào)單線程速度,那就不適合在MIC上進行并行化,在MIC上的并發(fā)度要達到成百上千的規(guī)模才能最大的發(fā)揮其性能。
(2)矢量化主要是使用 SIMD 寄存器和運算,MIC協(xié)處理器引入了512位寬的 SIMD 寄存器,對應(yīng)用程序來說,SIMD架構(gòu)的數(shù)據(jù)并行性可大大提高提高處理器的運算速度,為了實現(xiàn)矢量化,一般有三種方式:一是使用編譯優(yōu)化選項,二是使用SIMD指示,三是使用SIMD指令編程。
(3)內(nèi)存和高速緩存,如果應(yīng)用算法對計算能力的需求不高,而數(shù)據(jù)處理量很大,那也不適合在眾核上進行加速,因為目前MIC最大的缺點同時也是開發(fā)人員需要注意的就是訪存帶寬,即使SIMD的存在可以提高處理器的運算速度,由于架構(gòu)自身提供的向量寄存器數(shù)目十分有限,數(shù)據(jù)需要頻繁的在向量寄存器和Cache之間傳輸,使得并行能力的不到足夠的發(fā)揮,因此,有效的減少數(shù)據(jù)在內(nèi)存和Cache間的傳輸開銷在提高應(yīng)用程序性能上變的至關(guān)重要,提高Cache命中率和向量寄存器的使用效率是提升性能的重要途徑。
除了上面所涉及到的影響MIC性能的要素外,我們在單線程內(nèi)還必須保持較高的數(shù)據(jù)計算與系統(tǒng)調(diào)用比,如果我們的線程內(nèi)計算工作量非常有限,那線程的運行就主要消粍在了在線程的創(chuàng)建與同步的系統(tǒng)調(diào)用上,而系統(tǒng)調(diào)用在MIC卡的運行速度非常有限,所以必須避免在線程內(nèi)有過多的系統(tǒng)調(diào)用出現(xiàn)。
3 結(jié)束語
基于異構(gòu)計算的高性能計算技術(shù)是目前高性能計算領(lǐng)域的發(fā)展熱點之一,隨著該技術(shù)的不斷完善和發(fā)展,將會有更多的應(yīng)用軟件利用該技術(shù)實現(xiàn)計算性能的提升,開發(fā)人員必須盡快熟悉和掌握這種開發(fā)技術(shù),以支撐物探軟件的持續(xù)開發(fā)和進步。
參考文獻
[1]王恩東,張清.等 MIC高性能計算編程指南[M].北京:中國水利水電出版社,2012.
[2]Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual.
作者單位
東方地球物理公司物探技術(shù)研究中心 河北省涿州市 072750endprint