甘新標(biāo),孫燎原,劉 杰,雄成偉,黃嘉昆
(1.國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;2.計(jì)算機(jī)軟件新技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室(南京大學(xué)),江蘇 南京 210093;3.國(guó)防科技大學(xué)量子信息研究所兼高性能計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,湖南 長(zhǎng)沙 410073)
高性能計(jì)算是衡量國(guó)家科技能力的重要標(biāo)志,已廣泛應(yīng)用于大規(guī)模數(shù)值計(jì)算、武器裝備模擬仿真等領(lǐng)域。為了制衡和封鎖中國(guó)巨型機(jī)技術(shù)發(fā)展,美國(guó)商務(wù)部2015年2月18日發(fā)布芯片限售令,我國(guó)國(guó)家超級(jí)計(jì)算長(zhǎng)沙中心、國(guó)家超級(jí)計(jì)算廣州中心、國(guó)家超級(jí)計(jì)算天津中心和國(guó)防科技大學(xué)4家機(jī)構(gòu)被列入美國(guó)芯片限售對(duì)象。幸運(yùn)的是,中國(guó)高性能處理器發(fā)展技術(shù)早有預(yù)案,國(guó)產(chǎn)加速器(China Accelerator)就是國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院自主研發(fā)的高性能加速器[1]。China Accelerator的軟件生態(tài)不同于GPU、MIC等比較成熟的加速器,其體系結(jié)構(gòu)和編程模型更是有別于傳統(tǒng)的CPU體系結(jié)構(gòu)和編程模式,開(kāi)發(fā)高效的應(yīng)用程序?qū)⒚媾R體系結(jié)構(gòu)復(fù)雜、細(xì)節(jié)多,并行編程要求高、難度大,數(shù)據(jù)流動(dòng)管理與分派繁瑣復(fù)雜,優(yōu)化困難等諸多挑戰(zhàn)。因此,面向國(guó)產(chǎn)異構(gòu)系統(tǒng)的HPL(High Performance Linpack)異構(gòu)協(xié)同設(shè)計(jì)可以為China Accelerator廣泛應(yīng)用于核爆模擬、天氣預(yù)報(bào)、地質(zhì)資源勘查等領(lǐng)域提供技術(shù)參考,加速China Accelerator的推廣應(yīng)用。
線(xiàn)性系統(tǒng)軟件包Linpack(Linear system package) 通過(guò)使用高斯消元法求解稠密一元N次線(xiàn)性代數(shù)方程組來(lái)評(píng)估高性能計(jì)算機(jī)的實(shí)際浮點(diǎn)性能,Linpack根據(jù)問(wèn)題規(guī)模與優(yōu)化選擇的不同分為L(zhǎng)inpack100、Linpack1000 以及HPL[2]。HPL采用高斯消元法求解N元一次稠密線(xiàn)性代數(shù)方程組來(lái)評(píng)估高性能計(jì)算機(jī)的浮點(diǎn)性能。高斯消元法首先將系數(shù)矩陣A通過(guò)分塊遞歸的LU分解,將其分解為一個(gè)下三角陣L與一個(gè)上三角陣U的乘積,然后將線(xiàn)性代數(shù)方程組Ax=b演算成Ux=L-1b形式,最后,通過(guò)上三角方程回代求得線(xiàn)性方程組的解[3 - 5]。HPL由于規(guī)??勺?成為目前最流行的用于測(cè)試高性能計(jì)算機(jī)浮點(diǎn)性能的測(cè)試基準(zhǔn)。當(dāng)HPL求解問(wèn)題規(guī)模為N時(shí),浮點(diǎn)計(jì)算次數(shù)為(2/3)N3+(3/2)N2,計(jì)算時(shí)間為T(mén),HPL測(cè)試浮點(diǎn)性能值為(2/3)N3+(3/2)N2)/T,浮點(diǎn)計(jì)算性能測(cè)試結(jié)果是高性能機(jī)Top500排名的重要依據(jù)。
由于支持China Accelerator的底層矩陣乘接口目前僅支持定制接口,為了提供一個(gè)通用的HPL測(cè)試環(huán)境,需要完成矩陣循環(huán)分布細(xì)致劃分與封裝dPEM(delicate Partition and Encapsulation on Matrix)。同時(shí),為了充分發(fā)揮國(guó)產(chǎn)異構(gòu)系統(tǒng)的效率,設(shè)計(jì)了異構(gòu)協(xié)同矩陣乘調(diào)度算法OA4MM(Orchestrating Algorithm for Matrix Multiplication)。
傳統(tǒng)HPL算法中,求解N×N矩陣將以塊為單位循環(huán)分布到所有CPU,由于矩陣采用了塊循環(huán)分布,在N較大時(shí),各個(gè)處理器的計(jì)算量基本相當(dāng),對(duì)于同構(gòu)系統(tǒng),傳統(tǒng)的HPL一般可以獲得較高的系統(tǒng)性能。由于計(jì)算速度的差異,如果給異構(gòu)系統(tǒng)中每個(gè)處理器分配相同的計(jì)算量,那么計(jì)算速度快的加速器在完成計(jì)算后必須等待計(jì)算速度較慢的CPU進(jìn)行通信,必然降低異構(gòu)系統(tǒng)效率。因此,為了充分發(fā)揮異構(gòu)系統(tǒng)的效率,必須基于異構(gòu)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)高效協(xié)同的HPL算法。由于矩陣乘更新操作占據(jù)了HPL求解絕大部分計(jì)算時(shí)間,因此高效協(xié)同的HPL算法設(shè)計(jì)將滿(mǎn)足CPU端矩陣乘更新計(jì)算時(shí)間TCPU與China Accelerator端矩陣乘更新計(jì)算時(shí)間TChina Accelerator在相同時(shí)間點(diǎn)完成各自的計(jì)算,避免不必要的通信等待。即:
其中,M、N、K分別為矩陣A(M,K)、B(K,N)、C(M,N)的緯度。
China Accelerator由6個(gè)DSP超節(jié)點(diǎn)、1個(gè)CPU節(jié)點(diǎn)、1個(gè)IO節(jié)點(diǎn)、全局Cache、核間同步、4個(gè)存儲(chǔ)控制器MCU(Memory Control Unit)及IO設(shè)備構(gòu)成。其中,每個(gè)DSP超節(jié)點(diǎn)包含兩個(gè)飛騰―Matrix2000內(nèi)核,每個(gè)飛騰―Matrix2000內(nèi)核包含兩個(gè)計(jì)算核心,每個(gè)計(jì)算核心包含16個(gè)向量計(jì)算功能單元;全局Cache GC(Global Cache)采用分布式Cache,由多個(gè)子體(SubGC)構(gòu)成,每?jī)蓚€(gè)SubGC連接一個(gè)存儲(chǔ)控制單元MCU;核間同步也采用分布式組織,由多個(gè)子體構(gòu)成。上述節(jié)點(diǎn)、SubGC、MCU由環(huán)形互連連接。 因此,China Accelerator是一款面向計(jì)算密集型應(yīng)用、能高效處理大量數(shù)據(jù)的高性能多向量體系結(jié)構(gòu)加速器,如圖1所示[1]。
Figure 1 China Accelerator體系結(jié)構(gòu)圖1 Architecture of China Accelerator
如圖1所示,China Accelerator體系結(jié)構(gòu)復(fù)雜、細(xì)節(jié)多,數(shù)據(jù)分派繁瑣。為了最大化國(guó)產(chǎn)加速器計(jì)算資源利用率和提高處理器的性能,支持China Accelerator的底層矩陣乘接口目前僅支持定制接口,即,支持國(guó)產(chǎn)加速器China Accelerator的矩陣乘接口僅支持特定規(guī)模的矩陣乘A(FT_m,K)×B(K,N),F(xiàn)T_m是FT-Matrix支持的矩陣乘中第一矩陣的行數(shù),K是FT-Matrix支持的矩陣乘中第一矩陣的列數(shù),也是第二矩陣的行數(shù),N是FT-Matrix支持的矩陣乘中第二矩陣的列數(shù),A(FT_m,K)×B(K,N)中對(duì)N、K沒(méi)有特殊限制,但是,F(xiàn)T_m只能是576的整數(shù)倍,并且必須大于或等于576×6。然而,支持通用CPU的基本線(xiàn)性代數(shù)庫(kù)矩陣乘接口是能支持任意規(guī)模的矩陣乘A(L,K)×B(K,N),即A(L,K)×B(K,N)中的L、K、N為任意的正整數(shù)。
因此,傳統(tǒng)的HPL矩陣乘調(diào)度方法不再適合于面向China Accelerator的HPL矩陣乘調(diào)度優(yōu)化,國(guó)產(chǎn)China Accelerator迫切需要一種適用于定制接口的異構(gòu)矩陣乘調(diào)度優(yōu)化方法,將國(guó)產(chǎn)加速器僅支持定制接口的異構(gòu)矩陣乘封裝為類(lèi)似CPU支持的通用矩陣乘,并且,最大化矩陣塊循環(huán)分布計(jì)算效率,提升國(guó)產(chǎn)異構(gòu)系統(tǒng)效率。CPU + China Accelerator異構(gòu)系統(tǒng)的高效協(xié)同矩陣乘計(jì)算更新劃分如圖2所示。
Figure 2 Matrix multiplication between CPU and China Accelerator with coordination圖2 協(xié)同矩陣乘更新
如圖2所示,由于China Accelerator目前支持的矩陣乘接口為定制接口,高效協(xié)同的矩陣乘更新算法中,CPU不僅要負(fù)責(zé)邊緣非規(guī)則的矩陣乘計(jì)算,還必須與China Accelerator協(xié)同完成規(guī)則的矩陣乘更新操作。
面向異構(gòu)系統(tǒng)的矩陣乘調(diào)度可分為靜態(tài)劃分調(diào)度SdS(Static dispatch Strategy)和動(dòng)態(tài)調(diào)度dSd(dynamic Schedule dispatch)。面向CPU+GPU的天河1A異構(gòu)系統(tǒng)中,矩陣乘調(diào)度以靜態(tài)調(diào)度為主,即,探索最優(yōu)GPU端矩陣乘劃分比例,如公式(2)所示。
其中,Gaccelerator為加速器GPU端矩陣乘更新時(shí)間,GCPU為CPU端矩陣乘更新時(shí)間。
在天河1A異構(gòu)系統(tǒng)中,GPU端負(fù)責(zé)計(jì)算更新的矩陣子塊大小預(yù)先已經(jīng)確定[6,7],通過(guò)將CPU與GPU之間的數(shù)據(jù)傳輸時(shí)間隱藏于計(jì)算過(guò)程中來(lái)優(yōu)化提升異構(gòu)系統(tǒng)效率;與天河1A異構(gòu)系統(tǒng)不同,面向CPU+MIC的天河二號(hào)異構(gòu)系統(tǒng)中,矩陣乘調(diào)度算法以基于隊(duì)列緩沖的動(dòng)態(tài)調(diào)度為主[8,9],即,當(dāng)前矩陣乘更新操作是分派至CPU還是MIC取決于任務(wù)計(jì)算隊(duì)列的狀態(tài),以最大限度實(shí)現(xiàn)異構(gòu)系統(tǒng)均衡,提高異構(gòu)系統(tǒng)效率。
面向CPU+China Accelerator的HPL異構(gòu)設(shè)計(jì)中,若采用類(lèi)似天河1A的靜態(tài)劃分策略SdS,由于面向China Accelerator的底層數(shù)學(xué)庫(kù)矩陣乘接口限制,只有滿(mǎn)足接口規(guī)范要求的矩陣乘計(jì)算才能夠調(diào)度到China Accelerator上加速,大部分的矩陣乘計(jì)算只能在CPU端完成更新操作;若采用基于隊(duì)列緩沖的天河二號(hào)異構(gòu)系統(tǒng)HPL矩陣乘更新動(dòng)態(tài)調(diào)度方法dSd,將產(chǎn)生冗余的隊(duì)列狀態(tài)查詢(xún)和計(jì)算任務(wù)請(qǐng)求等待。這是因?yàn)椴糠志仃嚦私涌诿黠@不符合China Accelerator內(nèi)置的定制接口,但是,仍然需要監(jiān)控隊(duì)列狀態(tài)并試圖發(fā)送計(jì)算任務(wù)請(qǐng)求。
不同于天河1A異構(gòu)系統(tǒng)中矩陣乘調(diào)度靜態(tài)劃分策略和天河二號(hào)異構(gòu)系統(tǒng)中基于隊(duì)列緩沖的矩陣乘更新動(dòng)態(tài)調(diào)度方法,基于China Accelerator體系結(jié)構(gòu)和軟件生態(tài),設(shè)計(jì)了一種異構(gòu)協(xié)同矩陣乘調(diào)度算法OA4MM,以提高國(guó)產(chǎn)異構(gòu)系統(tǒng)的效率。OA4MM調(diào)度方法屬于一種基于天河1A和天河二號(hào)的動(dòng)靜融合協(xié)同矩陣乘均衡調(diào)度算法,OA4MM在矩陣乘靜態(tài)劃分的基礎(chǔ)上引入動(dòng)態(tài)調(diào)度策略,最小化動(dòng)態(tài)調(diào)度中冗余的隊(duì)列狀態(tài)查詢(xún)和計(jì)算任務(wù)請(qǐng)求等待,同時(shí),最大限度劃分矩陣乘更新調(diào)度至China Accelerator端加速,算法流程如圖3所示。
Figure 3 OA4MM調(diào)度算法流程圖3 Flow chart of OA4MM
針對(duì)CPU+China Accelerator驗(yàn)證系統(tǒng)結(jié)構(gòu),系統(tǒng)設(shè)計(jì)的基于China Accelerator的計(jì)算刀片,靈活支持增添基于China Accelerator的加速子板,滿(mǎn)足計(jì)算刀片能靈活可配、按需構(gòu)建的用戶(hù)需求。加速子板(包含4個(gè)China Accelerator)通過(guò)PCIE與計(jì)算刀片相連,并通過(guò)計(jì)算刀片上的高速網(wǎng)卡NIO(Network Input and Output)接入高速互連網(wǎng)絡(luò),實(shí)現(xiàn)計(jì)算結(jié)點(diǎn)間的互連。
CPU+China Accelerator驗(yàn)證系統(tǒng)由16個(gè)計(jì)算結(jié)點(diǎn)組成,如圖4所示。單結(jié)點(diǎn)主要配置如表1所示。
由于China Accelerator目前僅支持特定規(guī)模的矩陣乘A(FT_m,K)×B(K,N),國(guó)產(chǎn)加速器底層支持的矩陣乘接口規(guī)范中對(duì)N、K沒(méi)有特殊限制,但是,F(xiàn)T_m只能是576的整數(shù)倍,并且必須大于或等于576×6,為了充分利用China Accelerator強(qiáng)大的計(jì)算資源,調(diào)度至國(guó)產(chǎn)加速器上進(jìn)行加速計(jì)算的矩陣塊大小必然影響國(guó)產(chǎn)加速器的計(jì)算資源利用率和PCIE帶寬的占有率,因此,矩陣分塊大小將嚴(yán)重影響面向CPU+China Accelerator異構(gòu)系統(tǒng)的HPL性能,其詳細(xì)測(cè)試結(jié)果如圖5所示。
Figure 4 Architecture of node in experimental systems equipped with CPU and China Accelerator圖4 CPU+China Accelerator單結(jié)點(diǎn)驗(yàn)證系統(tǒng)
系統(tǒng)項(xiàng)目屬性數(shù)目硬件CPUIntel(R)Xeon(R)CPUE5?2692v2@2.20GHz4ChinaAcceleratorFT?GPDSP2000b@1.25GHz4內(nèi)存8×Samsung8GBDDR31333MHz4軟件OSLinuxkylin?phytium+?Compilerlintelicc15.0.0+phytiumCompiler?BLASMKL+ftblas?
Figure 5 Performance evaluation on matrix block圖5 矩陣分塊的性能影響
以576×6的程序性能為基準(zhǔn),不同矩陣分塊大小的加速比如圖5所示。隨著矩陣分塊逐漸增大,程序性能顯著上升至拐點(diǎn)后開(kāi)始平穩(wěn)回落,這是因?yàn)楫?dāng)矩陣分塊較小時(shí),頻繁的數(shù)據(jù)傳輸嚴(yán)重影響程序性能,當(dāng)程序性能達(dá)到局部最高點(diǎn)后,加速器端的存儲(chǔ)資源就成為制約程序性能的關(guān)鍵。
為了充分驗(yàn)證OA4MM算法的高效性,面向CPU+China Accelerator的HPL設(shè)計(jì)配置了類(lèi)似天河1A的靜態(tài)劃分策略SdS、基于隊(duì)列緩沖的天河二號(hào)的動(dòng)態(tài)調(diào)度方法dSd以及高效協(xié)同矩陣乘調(diào)度算法OA4MM,以探索CPU+China Accelerator異構(gòu)系統(tǒng)的效率,上述三種異構(gòu)調(diào)度方法的實(shí)測(cè)性能比較如圖6所示,其中OA4MM的算法性能是在FT_m=576×30 時(shí),即,最佳矩陣分塊情況下的測(cè)試性能。
Figure 6 Performance evaluation with OA4MM and SdS/dSd圖6 OA4MM與SdS/dSd的性能評(píng)估
由圖6可知,高效協(xié)同矩陣乘調(diào)度算法OA4MM較天河1A異構(gòu)系統(tǒng)中的靜態(tài)劃分策略SdS性能提升幅度隨著計(jì)算結(jié)點(diǎn)數(shù)目和矩陣規(guī)模的增加逐漸明顯;同時(shí),在CPU+China Accelerator異構(gòu)系統(tǒng)中,隨著計(jì)算結(jié)點(diǎn)數(shù)目和矩陣規(guī)模的增加,OA4MM性能較天河1A的靜態(tài)劃分策略SdS和天河二號(hào)的動(dòng)態(tài)調(diào)度方法dSd均有明顯提升,全系統(tǒng)HPL性能提升近10%。
鑒于HPL參數(shù)配置優(yōu)化實(shí)驗(yàn)在諸多文獻(xiàn)中已有詳細(xì)研究,面向國(guó)產(chǎn)異構(gòu)系統(tǒng)的HPL異構(gòu)協(xié)同設(shè)計(jì)將遵循China Accelerator矩陣乘接口規(guī)范,提出了dPEM方法對(duì)China Accelerator支持的底層數(shù)學(xué)庫(kù)定制接口進(jìn)行封裝,屏蔽了定制接口限制,提供一個(gè)友好的HPL測(cè)試環(huán)境。為了最大限度發(fā)揮國(guó)產(chǎn)加速器的性能,提出了OA4MM調(diào)度算法。實(shí)驗(yàn)結(jié)果驗(yàn)證了dPEM的有效性和OA4MM算法的高效性,全系統(tǒng)HPL測(cè)試性能較傳統(tǒng)的異構(gòu)矩陣乘調(diào)度方法提升近10%,提高了基于國(guó)產(chǎn)加速器的異構(gòu)系統(tǒng)效率,未來(lái)的工作將對(duì)OA4MM算法進(jìn)行形式化描述和論證,并嘗試將OA4MM調(diào)度算法應(yīng)用至由GPU、MIC構(gòu)建的異構(gòu)實(shí)驗(yàn)系統(tǒng)中。
[1] Lu Yu-tong. Applications leveraging supercomputing systems[R].ISC’2015,2015.
[2] Dongarra J J, Luszczek P,Petitet A.The linpack benchmark: Past,present,and future[J].Concurrency and Computation: Practice and Experience,2003,15(9): 803-820.
[3] Zhang Wen-li, Chen Ming-yu,Fan Jian-ping.Emulation and forecast of HPL test performance [J]. Journal of Computer Research and Development,2006,43(3):557-562.(in Chinese)
[4] Liu Gang, Zhang Heng,Zhang Dian,et al.Optimization of Linpack for Loongson 3B processor [J]. Journal of Shenzhen University (Science & Engineering),2014,31(3):286-292.(in Chinese)
[5] Liu Jie,Hu Qing-feng,Chi Li-hua,et al.Parallel performance analysis of high performance Linpack[C]∥Proc of 2004 National Conference on High Performance Computing,2004:1.(in Chinese)
[6] Yang Xue-jun, Liao Xiang-ke,Lu Kai,et al.The TianHe-1A supercomputer: Its hardware and software[J].Journal of Computer Science and Technology,2011,26(3): 344-351.
[7] Wang Q, Ohmura J, Shan A, et al.Parallel matrix-matrix multiplication based on HPL with a GPU-accelerated PC cluster[C]∥Proc of the 1st International Conference on Networking and Computing, 2010:243-248.
[8] Du Yun-fei,Yang Can-qun,Wang Feng,et al.Analysis and evaluation method for Linpack benchmark [J].Dongbei Daxue Xuebao/Journal of Northeastern University,2014,35: 102-107.
[9] Liu Fang-fang,Yang Chao,Liu Yi-qun,et al.Reducing communication overhead in the high performance conjugate gradient benchmark on Tianhe-2[C]∥Proc of the 13th International Symposium on Distributed Computing and Applications to Business,Engineering and Science,2014:13-18.
附中文參考文獻(xiàn):
[3] 張文力,陳明宇,樊建平,等.HPL測(cè)試性能仿真與預(yù)測(cè)[J].計(jì)算機(jī)研究與發(fā)展,2006,43(3):557-562.
[4] 劉剛,張恒,張滇,等.基于龍芯3B 處理器的Linpack 優(yōu)化實(shí)現(xiàn)[J].深圳大學(xué)學(xué)報(bào)(理工版),2014,31(3):286-292.
[5] 劉杰,胡慶豐,遲利華,等.高性能Linpack并行計(jì)算性能分析[C]∥全國(guó)高性能計(jì)算學(xué)術(shù)會(huì)議,2004:1.