周 倩,梁建國(guó),傅 游
(山東科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,山東 青島 266590)
PE[1]可以用相對(duì)簡(jiǎn)單的形式描述難以量化的復(fù)雜系統(tǒng)。與常用的突變檢測(cè)方法如短時(shí)傅里葉變換[2]、奇異值分解[3]、小波分析[4]、希爾伯特變換[5]等相比,對(duì)突變信息的識(shí)別有較好的效果。目前,PE已被廣泛應(yīng)用于包括設(shè)備故障診斷[6]、檢測(cè)信號(hào)異常[7]、腦電圖檢測(cè)[8]、識(shí)別生物基因序列[9]、測(cè)量氣候復(fù)雜性[10]和紋理圖像分析[11]等領(lǐng)域。
隨著應(yīng)用問(wèn)題的規(guī)模不斷擴(kuò)展,時(shí)間序列數(shù)據(jù)的規(guī)模呈指數(shù)級(jí)增長(zhǎng),對(duì)PE計(jì)算的時(shí)效性要求也越來(lái)越高。傳統(tǒng)的PE算法應(yīng)用于單機(jī)環(huán)境,難以滿足海量數(shù)據(jù)處理的需要,多種基于云平臺(tái)或超算平臺(tái)的并行PE算法被先后推出。Yang Peng等[12]結(jié)合云計(jì)算平臺(tái)和大數(shù)據(jù)處理技術(shù),設(shè)計(jì)了時(shí)間序列數(shù)據(jù)的排列熵特征提取算法,驗(yàn)證了并行排列熵算法的正確性。Cao Jian等[13]提出了一種基于云計(jì)算平臺(tái)MaxCompute的并行排列熵算法,但該方法僅適用于云計(jì)算環(huán)境。張浩等[14]使用MPI+OpenACC將PE算法移植到“神威·太湖之光”的異構(gòu)眾核處理器SW26010上,并取得了一定的效果,但主從核間存在大量通信,且數(shù)據(jù)規(guī)模小,沒(méi)有考慮負(fù)載均衡的問(wèn)題。因此,如何對(duì)PE算法進(jìn)行優(yōu)化以最大程度發(fā)揮SW26010性能是一個(gè)重要的問(wèn)題。
本文針對(duì)神威·太湖之光特有的眾核體系結(jié)構(gòu),提出一種粗粒度和細(xì)粒度下的混合排列熵并行計(jì)算方法,在核組間通過(guò)MPI實(shí)現(xiàn)粗粒度的進(jìn)程級(jí)并行,核組內(nèi)部利用Athread實(shí)現(xiàn)細(xì)粒度的從核加速,不僅縮短PE算法的計(jì)算耗時(shí),還有效解決其數(shù)據(jù)規(guī)模過(guò)大的問(wèn)題。
PE算法是一種檢測(cè)震動(dòng)信號(hào)突變的方法,可以描述為:給定一個(gè)標(biāo)量時(shí)間序列X,有
X=[x(1),x(2),…,x(n)]
(1)
其中,n為數(shù)據(jù)點(diǎn)總數(shù)。PE算法流程為:輸入一維序列X,嵌入維數(shù)m和時(shí)間延遲τ,通過(guò)相空間重構(gòu),重構(gòu)矩陣編碼,計(jì)算PE值來(lái)檢測(cè)突變信號(hào)。
1.1.1 相空間重構(gòu)
先把標(biāo)量時(shí)間序列X嵌入到m維空間中,重構(gòu)向量Xi的值如式(2)所示
Xi=[x(i),x(i+τ),…,x(i+(m-1)τ)]
(2)
式中:m為嵌入維數(shù),τ為延遲時(shí)間。則標(biāo)量時(shí)間序列X的相空間矩陣Mat可由式(3)表示
(3)
其中,K=n-(m-1)τ。
1.1.2 相空間矩陣編碼
對(duì)于給定向量Xi,m個(gè)實(shí)數(shù)Xi升序重新排列: [x(i+(j1-1)τ)≤x(i+(j2-1)τ)≤…≤x(i+(jm-1)τ)]。 當(dāng)?shù)仁匠霈F(xiàn)時(shí),如x(i+(jk1-1)t)=x(i+(j2-1)t), 根據(jù)它們對(duì)應(yīng)的j值確定值大?。喝鬸k1 因此,任意向量Xi在相空間矩陣Mat中,都被唯一地映射到一系列符號(hào)S(i) 上 S(i)=(j1,j2,…,jm) (4) 其中,i=1,2,…,K,K≤m!。S(i) 是m!個(gè)不同符號(hào) (1,2,…,m) 的排列??梢越y(tǒng)計(jì)時(shí)間序列X各種排列出現(xiàn)的次數(shù)。 1.1.3 PE計(jì)算 假設(shè)不同符號(hào)的概率分布是P1,P2,…,PK,K≤m!, 然后將時(shí)間序列X的PE定義為K個(gè)不同符號(hào)的香農(nóng)熵 (5) 當(dāng)Pj=1/m!, 則Hp(m) 在ln(m!) 時(shí)達(dá)到最大值。因此,PE值可以判別時(shí)間序列信號(hào)的隨機(jī)性。PE值越大,序列信號(hào)的隨機(jī)性越高。排列熵算法的過(guò)程如圖1所示。 圖1 排列熵算法過(guò)程 神威·太湖之光由10 240個(gè)SW26010異構(gòu)多核處理器組成,每個(gè)處理器中有4個(gè)核組(CGs),每個(gè)CG由一個(gè)管理處理單元(MPE)、一個(gè)計(jì)算處理單元(CPE)集群、一個(gè)DDR3內(nèi)存控制器(MC)和一個(gè)協(xié)議處理單元(PPU)組成。每個(gè)CPE集群中有64個(gè)按8×8網(wǎng)格組織的CPE。SW26010處理器共有260個(gè)核,其架構(gòu)如圖2所示。 圖2 SW26010處理器架構(gòu) 根據(jù)2020年11月的TOP500[15]數(shù)據(jù),“神威·太湖之光”以125 PFlop/s的理論峰值性能位列第4位,與排名前三的超級(jí)計(jì)算機(jī)的性能指標(biāo)比較如表1。從表1可以看出,“神威·太湖之光”的HPL性能為93 Pflop/s,與Sierra接近;總內(nèi)存容量與其它超級(jí)計(jì)算機(jī)系統(tǒng)接近;但HPCG僅為480.9 TFlop/s,這是由SW26010的低內(nèi)存帶寬(136.51 GB/s)決定的,也導(dǎo)致每字節(jié)浮點(diǎn)數(shù)比高達(dá)22.42 Flops/byte[16]。以上數(shù)據(jù)說(shuō)明,“神威·太湖之光”具有強(qiáng)大的計(jì)算能力,但內(nèi)存帶寬相對(duì)較低,這對(duì)并行應(yīng)用的移植和優(yōu)化帶來(lái)困難和靈活性。 表1 TOP500排名前四的超級(jí)計(jì)算機(jī)系統(tǒng)簡(jiǎn)要性能對(duì)比 Athread加速線程庫(kù)是針對(duì)SW26010所設(shè)計(jì)的主從加速編程模型,通過(guò)對(duì)核組內(nèi)線程的控制與調(diào)度來(lái)提升多從核的加速性能。Athread庫(kù)包含主核上用于管理從核線程的庫(kù)和從核上支持?jǐn)?shù)據(jù)傳輸和同步的庫(kù)。通過(guò)系統(tǒng)調(diào)用將從核初始化,此后從核交由Athread庫(kù)管理,通過(guò)庫(kù)接口將任務(wù)的入口函數(shù)和參數(shù)寫(xiě)入LDM的指定位置,從核從LDM讀取任務(wù)入口和參數(shù)并開(kāi)始執(zhí)行。使用單函數(shù)多啟動(dòng)的方式來(lái)利用從核,常見(jiàn)的從核調(diào)用形式如算法1所示。 算法1:在CPE上Athread框架 輸入:CPE需要執(zhí)行的任務(wù)集T;劃分給每個(gè)CPE所需處理的任務(wù)TPEC=part(T,thread_id) 輸出:每個(gè)CPE的計(jì)算結(jié)果ResultCPE (1)thread_id←ATHREAD-GET-ID; (2)CPE接收任務(wù)GET(TPEC); (3)fori∈TPEC DO(i) endfor (4)向MPE發(fā)送計(jì)算結(jié)果PUT(ResultCPE); (5)MPE調(diào)用CPE函數(shù)ATHREAD-APAWN; (6)在等待期間穿插任務(wù); (7)MPE等待CPE任務(wù)結(jié)束ATHREAD-JOIN。 由算法1可見(jiàn),所有從核啟動(dòng)相同的函數(shù),根據(jù)從核號(hào)從任務(wù)集中挑選出各自需要執(zhí)行的部分,并通過(guò)主從核通信接口來(lái)進(jìn)行相應(yīng)的數(shù)據(jù)傳輸。在等待數(shù)據(jù)傳輸時(shí),主核也可以執(zhí)行其它任務(wù)。 本節(jié)基于SW26010處理器架構(gòu),在分析PE程序特征的基礎(chǔ)上,提出了PE移植和優(yōu)化算法。具體工作分為兩個(gè)層次:在核組間,按文件數(shù)量劃分任務(wù),采用對(duì)等模式,合理調(diào)度MPI進(jìn)程,實(shí)現(xiàn)了多文件負(fù)載均衡;在核組內(nèi),使用Athread庫(kù)按塊劃分相空間重構(gòu)矩陣,對(duì)其分量進(jìn)行排序并記錄排序后的索引,使用雙緩沖技術(shù)減少數(shù)據(jù)在主從核之間傳輸?shù)臅r(shí)間,通過(guò)重新組織傳輸數(shù)據(jù)減少了主從通信次數(shù)。采用本節(jié)所設(shè)計(jì)的MPI+athread并行優(yōu)化方法,解決了PE程序中兩級(jí)負(fù)載不均衡的問(wèn)題。 2.1.1 數(shù)據(jù)規(guī)模大 本文所使用的數(shù)據(jù)集是由西安交通大學(xué)現(xiàn)代設(shè)計(jì)及轉(zhuǎn)子軸承系統(tǒng)教育部重點(diǎn)實(shí)驗(yàn)室所發(fā)布的數(shù)據(jù)[17],該數(shù)據(jù)集是以LDK UER204軸承為處理對(duì)象,以1 min為間隔,頻率為25.6 kHz,分別對(duì)3種工況下15個(gè)滾動(dòng)軸承的全壽命周期進(jìn)行采樣。將每次采樣獲取的32 768個(gè)震動(dòng)信號(hào)數(shù)據(jù)存儲(chǔ)在一個(gè)獨(dú)立文件中,所有的滾動(dòng)軸承全壽命周期采樣文件數(shù)量和達(dá)到9216個(gè),總數(shù)據(jù)量達(dá)到3 T以上。 2.1.2 兩級(jí)負(fù)載不均衡 由于文本數(shù)量龐大,負(fù)載均衡是需要解決的一個(gè)難題。分析數(shù)據(jù)集可知,每個(gè)數(shù)據(jù)文件相互獨(dú)立且不存在數(shù)據(jù)依賴。 核組間采用對(duì)等模式構(gòu)建MPI進(jìn)程,每個(gè)進(jìn)程獨(dú)立處理一個(gè)滾動(dòng)軸承全壽命周期所有時(shí)刻的數(shù)據(jù)文件,進(jìn)程與進(jìn)程完全獨(dú)立,不存在通信與調(diào)度。但在數(shù)據(jù)集中不同工況下滾動(dòng)軸承的全壽命周期各不相同,每個(gè)滾動(dòng)軸承的震動(dòng)信號(hào)數(shù)據(jù)文件數(shù)量差距巨大,最少的有42個(gè),最多有2 538個(gè),導(dǎo)致進(jìn)程間負(fù)載極其不均衡,若不進(jìn)行處理則會(huì)浪費(fèi)大量計(jì)算資源。PE算法的熱點(diǎn)是針對(duì)相空間重構(gòu)后的每個(gè)分量進(jìn)行升序排序并計(jì)算得到的各分量索引,將熱點(diǎn)任務(wù)分配給從核執(zhí)行。 在核組內(nèi)部,每個(gè)csv文件中有32 768個(gè)振動(dòng)信號(hào)數(shù)據(jù),相空間重組矩陣規(guī)模為 [32768-(m-1)τ]×m。 由于SW26010處理器的一個(gè)核組中包含64個(gè)從核,無(wú)法將重構(gòu)矩陣分量均勻地分配給每個(gè)從核,導(dǎo)致了從核計(jì)算任務(wù)不均勻。 因此在PE算法中存在兩級(jí)負(fù)載不均衡的問(wèn)題。下面首先解決核組間負(fù)載不均衡問(wèn)題。 為讀取3種工況15個(gè)軸承的數(shù)據(jù)文件,利用多個(gè)進(jìn)程實(shí)現(xiàn)文件的并行讀取,且多個(gè)進(jìn)程相互獨(dú)立地計(jì)算同一種工況下軸承的一個(gè)csv振動(dòng)信號(hào)數(shù)據(jù)文件的熵值,使得進(jìn)程輪詢讀取9216個(gè)數(shù)據(jù)文件,直至計(jì)算處理完。每個(gè)進(jìn)程相互獨(dú)立,進(jìn)程間不存在通信與調(diào)度,避免了進(jìn)程間的通信耗時(shí),實(shí)現(xiàn)了負(fù)載均衡。具體實(shí)現(xiàn)如算法2所示。 算法2:多文件負(fù)載均衡 輸入:9216個(gè)csv文件;進(jìn)程數(shù)comm_sz;進(jìn)程號(hào)rank 輸出:重構(gòu)矩陣ch_ti_series_1D[] (1) 遍歷15個(gè)滾動(dòng)軸承文件數(shù)據(jù) forfile_num←1 to 15 do (2) 判斷當(dāng)前數(shù)據(jù)文件屬于哪個(gè)工況環(huán)境 switch(file_num) case1-5:work_condi←“35Hz12kN” case6-10:work_condi←“37.5Hz11kN” case11-15:work_condi←“40Hz10kN” default:error (3) 獲取每個(gè)進(jìn)程在每種工況下分配到的csv文件數(shù)line←indir[l]/comm_sz; (4) 計(jì)算每個(gè)進(jìn)程所需處理的文件編號(hào) file_num=(my_rank+1)+k*comm_sz; (5) 每個(gè)進(jìn)程獲取對(duì)應(yīng)csv文件數(shù)data_input(); (6) 相空間重構(gòu) ch_ti_series_1D[]=re_organization() (7)endfor 在上述基于MPI的并行PE算法基礎(chǔ)上,引入神威Athread編程模型,在核組內(nèi)部從核間進(jìn)行數(shù)據(jù)并行,重構(gòu)矩陣的相關(guān)計(jì)算由從核來(lái)實(shí)現(xiàn),以充分發(fā)揮神威異構(gòu)眾核的能力。主核主要負(fù)責(zé)讀取數(shù)據(jù)、初始化以及進(jìn)程劃分任務(wù)、傳送數(shù)據(jù)、匯總索引概率來(lái)計(jì)算熵值;從核從主核獲取所需處理的重構(gòu)矩陣分量數(shù)據(jù)后,每個(gè)CPE對(duì)重構(gòu)矩陣分量進(jìn)行升序排序,將所得序列索引傳送回主核。針對(duì)2.1.2節(jié)中所述的核組內(nèi)負(fù)載不均衡的問(wèn)題,先將重構(gòu)矩陣按塊劃分,保證將任務(wù)量均勻的分配給每個(gè)從核,若不能均分,則由第一個(gè)從核處理余下的重構(gòu)矩陣分量碎片。 算法3:矩陣重構(gòu)分量排序 輸入:待排序數(shù)組S;嵌入維數(shù)m和重構(gòu)分量標(biāo)示d 輸出:整數(shù)索引_rank[] (1) 從核獲取重構(gòu)矩陣分量 athread_get(PE_MODE, &ch_ti_series_1D[k*m],&a_slave[0],m*8, &get_reply,0,0,0) (2) 判斷數(shù)據(jù)是否正確傳輸完畢 while(get_reply!=1); (3) 按升序排序重構(gòu)矩陣分量 (4) 利用下標(biāo)數(shù)組M得到重構(gòu)分量索引 (5) 將索引rank[]傳送回主核 athread_put(PE_MODE,&res, &_rank[k],8,&put_reply,0,0) 2.3節(jié)提出的基于Athread加速線程庫(kù)的PE并行算法,由于數(shù)據(jù)規(guī)模大,通過(guò)分析程序熱點(diǎn)可知,主核將重構(gòu)矩陣所需數(shù)據(jù)傳輸?shù)綇暮耸亲詈臅r(shí)的部分,本小節(jié)從減少主從通信次數(shù)和采用雙緩沖方法兩個(gè)方面對(duì)CPE數(shù)據(jù)傳輸部分進(jìn)行優(yōu)化。 2.4.1 減少主從通信次數(shù) PE算法核心主要涉及重構(gòu)矩陣Mat的計(jì)算,且矩陣Mat各行之間不存在數(shù)據(jù)依賴關(guān)系,可以直接在原數(shù)據(jù)結(jié)構(gòu)上進(jìn)行并行化。圖3(a)是上述2.3節(jié)中采用基于塊劃分方法的數(shù)據(jù)分割圖,在主核中將一維線性序列進(jìn)行相空間重構(gòu),在主從核間傳輸重構(gòu)矩陣分量,從核獲取所需處理的重構(gòu)矩陣分量后,再進(jìn)行排序。由于重構(gòu)矩陣規(guī)模大,主從核傳輸數(shù)據(jù)產(chǎn)生了很大的耗時(shí)。為了減少主從通信次數(shù),提出了將構(gòu)建重構(gòu)矩陣分量的任務(wù)分散到從核的優(yōu)化方案,如圖3(b)所示。根據(jù)PE算法的特點(diǎn)可知,重構(gòu)矩陣具有一定的規(guī)律性,矩陣第i行僅需要一維震動(dòng)信號(hào)序列的第i~i+m號(hào)元素。 圖3 PE算法athread數(shù)據(jù)劃分 由圖3(b)可見(jiàn),主核不再將重構(gòu)矩陣分量發(fā)送給從核,而是發(fā)送構(gòu)建重構(gòu)矩陣分量所需的一維震動(dòng)信號(hào)序列,每個(gè)從核接收各自所需的序列后再重構(gòu)成矩陣分量,進(jìn)行后面的計(jì)算工作。這一方法將主核的任務(wù)分散至從核,發(fā)送的數(shù)據(jù)量大幅減少,提高了程序性能。 2.4.2 雙緩沖機(jī)制 在CPE并行區(qū)域中,雖然DMA固有特性可以大大降低內(nèi)存訪問(wèn)的開(kāi)銷,但在PE程序的大規(guī)模數(shù)據(jù)情況下,主從核的內(nèi)存訪問(wèn)限制了并行效率。為了進(jìn)一步提高并行效率,采用雙緩沖機(jī)制,充分發(fā)揮DMA固有的異步性能。在主從核傳輸數(shù)據(jù)的過(guò)程中,有多輪DMA操作,CPE需要使用雙內(nèi)存空間來(lái)緩沖MPE和CPE的重構(gòu)矩陣分量數(shù)據(jù),在CPE傳輸所需數(shù)據(jù)的過(guò)程中進(jìn)行計(jì)算操作,從核間的通信開(kāi)銷小于計(jì)算開(kāi)銷,從而實(shí)現(xiàn)了計(jì)算與訪存的重疊,眾核加速會(huì)達(dá)到理想的并行加速效果。 算法4:雙緩沖機(jī)制 輸入:重構(gòu)矩陣分量ch_ti_series_1D[];輪次d; 輸出:寫(xiě)回標(biāo)志write_back (1)fork←0 to d-1 do (2) 設(shè)置當(dāng)前輪次標(biāo)記index←mod(k,2)+1 (3) 讀入首批數(shù)據(jù) put_reply(mod(k+1,2)+1)←1 (4) athread_get(PE_MODE,ch_ti_series_1D [k*m/2],a_slave[0,index],m*8,get_reply,0,0,0) (5) 修改當(dāng)前輪次標(biāo)記 index←mod((j-jmin),2)+1 (6) 設(shè)置下一輪次標(biāo)記 next←mod((j-jmin)+1,2)+1 (7) 重構(gòu)矩陣分量排序 (8) 讀入下一輪次所需數(shù)據(jù) athread_get(PE_MODE,ch_ti_series_1D[k*m/2+1],a_slave[0,next],m*8,get_reply,0,0,0) (9)endfor (10) 等待最后一輪數(shù)據(jù)寫(xiě)回 do while(write_back=put_reply(index)) 本節(jié)在“神威·太湖之光”上對(duì)第2節(jié)提出的優(yōu)化方法進(jìn)行實(shí)驗(yàn)測(cè)試。首先給出嵌入維數(shù)m和時(shí)間延遲τ這兩個(gè)參數(shù)的選取規(guī)則。為了評(píng)估本文所提出方法的有效性,在單個(gè)節(jié)點(diǎn)上進(jìn)行測(cè)試,并與串行版本進(jìn)行比較,得到其運(yùn)行時(shí)間和加速比,再將并行PE算法擴(kuò)展至多個(gè)節(jié)點(diǎn),并進(jìn)行可擴(kuò)展性分析,最后通過(guò)所得15個(gè)滾動(dòng)軸承全壽命周期的熵值,進(jìn)行分析。 由排列熵的定義可知,嵌入維數(shù)m和時(shí)間延遲τ的取值會(huì)影響PE值的大小。相空間重構(gòu)矩陣分量具有m!種序列,若m取值過(guò)大,導(dǎo)致索引序列是不重復(fù)的,每種序列僅出現(xiàn)一次,以至于PE值固定為同一個(gè)值,不能表達(dá)震動(dòng)信號(hào)的突變,也就不具有實(shí)際意義。Band等[1]在提出排列熵的概念時(shí)就建議m取3~7,τ取1。綜合其它相關(guān)文獻(xiàn)[18]的研究可知,在突變信號(hào)檢測(cè)中,τ對(duì)熵值的影響較小,而m取6時(shí)得到的PE值能夠較好地反映滾動(dòng)軸承振動(dòng)信號(hào)的突變。因此,在實(shí)驗(yàn)中取嵌入維數(shù)m=6,時(shí)間延遲τ=1。 單核組性能評(píng)估表2顯示了PE串行算法和單核組并行算法的性能比較,并行算法的計(jì)算性能遠(yuǎn)高于串行算法。相比于主核,使用64個(gè)從核進(jìn)行并行計(jì)算在理論上能夠產(chǎn)生64倍的加速。但實(shí)際上,加速比遠(yuǎn)遠(yuǎn)小于理論值,僅取得了11.86倍的加速,其原因是: 表2 單主核版本與單主從核版本的運(yùn)行時(shí)間對(duì)比 (1)排列熵算法僅將重構(gòu)矩陣排序進(jìn)行從核加速,沒(méi)有考慮數(shù)據(jù)讀取與熵值計(jì)算,在處理大規(guī)模數(shù)據(jù)時(shí),讀取數(shù)據(jù)的時(shí)間開(kāi)銷也很大; (2)在主進(jìn)程劃分任務(wù)時(shí),任務(wù)的切分需要時(shí)間; (3)從核所需要的計(jì)算數(shù)據(jù)由主核獲取,需要時(shí)間進(jìn)行通信,在帶寬一定的前提下,傳輸數(shù)據(jù)將損耗大量時(shí)間; (4)由于CPE存儲(chǔ)空間有限,無(wú)法同時(shí)獲取大量數(shù)據(jù),部分?jǐn)?shù)據(jù)碎片需要直接訪問(wèn)MPE主存來(lái)獲取,增加了訪存時(shí)間,無(wú)法達(dá)到理論加速比。 采用與單核組實(shí)現(xiàn)相同的方式,用MPI實(shí)現(xiàn)了基于多個(gè)SW26010處理器核組的并行程序。首先將多個(gè)數(shù)據(jù)文件均勻地劃分到每個(gè)SW26010處理器核組上,然后充分利用64個(gè)從核,采用加速線程庫(kù)Athread在處理器核組內(nèi)并行處理,其核組內(nèi)處理過(guò)程與圖3(b)的描述一致。 在基于粗粒度與細(xì)粒度的并行排列熵算法中,成倍增加進(jìn)程數(shù),得到其對(duì)應(yīng)的測(cè)試數(shù)據(jù),測(cè)試結(jié)果以單核組串行程序的性能指標(biāo)為基準(zhǔn),性能對(duì)比結(jié)果見(jiàn)表3。 由表3數(shù)據(jù)分析可得,在128進(jìn)程時(shí),最大加速比達(dá)到了123.73倍。且本文設(shè)計(jì)的PE算法并行效率穩(wěn)定,其原因是此算法并不存在MPI進(jìn)程間的通信與調(diào)度,各個(gè)進(jìn)程相互獨(dú)立。因此,隨著進(jìn)程數(shù)的增加,不會(huì)產(chǎn)生過(guò)多的額外開(kāi)銷,并行效率不會(huì)降低。 表3 PE算法眾核優(yōu)化測(cè)試結(jié)果 在分析并行PE算法的強(qiáng)可擴(kuò)展性時(shí),將MPI進(jìn)程數(shù)成倍擴(kuò)大至128個(gè),SW26010節(jié)點(diǎn)數(shù)擴(kuò)展至32個(gè),其實(shí)驗(yàn)結(jié)果如圖4所示。 圖4 PE算法強(qiáng)可擴(kuò)展性 由圖4可見(jiàn),PE算法的執(zhí)行時(shí)間隨著節(jié)點(diǎn)數(shù)的增加而減少,單核組執(zhí)行時(shí)間為5951.4 s,當(dāng)MPI進(jìn)程數(shù)達(dá)到128時(shí),執(zhí)行時(shí)間為48.1 s,此時(shí)加速比最高達(dá)到了123.73倍。但是相比于單核組并行版本,PE并行程序的可擴(kuò)展性并未達(dá)到理想的加速狀態(tài),僅為理想狀態(tài)的96.7%。其主要原因在于,雖然進(jìn)程間并未存在通信與調(diào)度,但創(chuàng)建并行域、進(jìn)程任務(wù)切分、核組內(nèi)數(shù)據(jù)傳輸依然花費(fèi)了時(shí)間開(kāi)銷。因此,在實(shí)際應(yīng)用時(shí),需要綜合考慮數(shù)據(jù)規(guī)模、嵌入維數(shù)和時(shí)間延遲的選取規(guī)則、平臺(tái)節(jié)點(diǎn)資源情況、合理設(shè)置核組數(shù),避免資源的浪費(fèi)或競(jìng)爭(zhēng)。 圖5是使用本文所設(shè)計(jì)的PE算法得到的1號(hào)和2號(hào)滾動(dòng)軸承的全壽命周期PE值的折線統(tǒng)計(jì)圖。這兩個(gè)軸承的失效位置均為外圈,在正常的工作狀態(tài)下,排列熵值穩(wěn)定在9.8附近,在經(jīng)過(guò)損壞臨界點(diǎn)處,PE值急劇下降,最后降為8.7附近。 圖5 滾動(dòng)軸承全壽命周期PE值折線 滾動(dòng)軸承在正常狀態(tài)下的震動(dòng)信號(hào)為隨機(jī)信號(hào),信號(hào)無(wú)規(guī)則,PE值較為平穩(wěn);故障時(shí)信號(hào)中存在周期性的沖擊信號(hào),具有一定的規(guī)律性,因此PE值呈現(xiàn)下降趨勢(shì)。可以看出,本文所設(shè)計(jì)的PE算法能夠很好的反映出滾動(dòng)軸承的振動(dòng)信號(hào)變化,適用于檢測(cè)各種領(lǐng)域振動(dòng)信號(hào)的突變,具有很強(qiáng)的通用性。 本文在“神威.太湖之光”平臺(tái)上提出了一種基于MPI+Athread的PE算法并行加速方法,實(shí)現(xiàn)了粗粒度的進(jìn)程級(jí)并行和細(xì)粒度的線程級(jí)并行,解決了文件數(shù)量過(guò)多所產(chǎn)生的負(fù)載不均衡、數(shù)據(jù)量龐大所引起的效率低等問(wèn)題,采用了雙緩沖技術(shù)減少了主從通信時(shí)間,使用DMA通信和重組傳輸數(shù)據(jù)降低了主從通信次數(shù),將核心計(jì)算任務(wù)合理劃分到從核,提高了算法的時(shí)效性。此外,對(duì)本文所提方法進(jìn)行測(cè)試,驗(yàn)證不僅可以在單個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)11.86倍的加速,而且在多個(gè)節(jié)點(diǎn)上具有良好的可擴(kuò)展性和并行效率。下一步,將在“神威·太湖之光”異構(gòu)平臺(tái)上,針對(duì)在大規(guī)模應(yīng)用的并行化過(guò)程中普遍存在的問(wèn)題,提出一種通用的并行模型。1.2 SW26010多核處理器
1.3 神威Athread加速線程庫(kù)
2 PE算法并行設(shè)計(jì)與優(yōu)化
2.1 PE算法特征分析
2.2 基于MPI多文件負(fù)載均衡優(yōu)化算法
2.3 基于MPI+Athread的并行PE算法
2.4 基于MPI+Athread的并行PE算法優(yōu)化方法
3 實(shí)驗(yàn)及結(jié)果分析
3.1 關(guān)鍵參數(shù)確定
3.2 多核組性能評(píng)估
3.3 PE算法分析
4 結(jié)束語(yǔ)