異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法
【專利摘要】本發(fā)明屬于高性能計算技術(shù)領(lǐng)域,具體的涉及一種異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,在基于眾核加速器(MIC)與多核通用處理器(CPU)相結(jié)合的混合異構(gòu)高性能計算機(jī)系統(tǒng)中,對有限差分算法使用三步遞進(jìn)優(yōu)化法進(jìn)行優(yōu)化:主要包括基本優(yōu)化法、并行優(yōu)化法和異構(gòu)協(xié)同優(yōu)化法。本發(fā)明的有益效果是:應(yīng)用三步遞進(jìn)優(yōu)化法解決有限差分算法從多核系統(tǒng)到異構(gòu)眾核系統(tǒng)時由跨越式訪存、可并行執(zhí)行緒不足帶來的計算性能低、并行效果差的問題,是一種具有高效性、可擴(kuò)展性的優(yōu)化方法,通過分支消除、循環(huán)展開、不變量外提等基本優(yōu)化法削減計算強(qiáng)度并為向量化掃除障礙;通過分析數(shù)據(jù)依賴,循環(huán)分塊,使用向量指令集改寫核心算法等并行優(yōu)化法,充分利用眾核處理器多線程、長向量的機(jī)制。
【專利說明】
異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于高性能計算技術(shù)領(lǐng)域,具體的說,屬于高性能計算機(jī)領(lǐng)域中異構(gòu)系統(tǒng) 中的CPU與MIC協(xié)同優(yōu)化技術(shù)領(lǐng)域,具體的設(shè)及一種異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方 法。
【背景技術(shù)】
[0002] MIC(Many Integrated Cores),即"眾核架構(gòu)"具有遠(yuǎn)多于CPU核屯、的體系結(jié)構(gòu),支 持與CPU并行計算的功能。
[0003] 近年來,隨著大規(guī)模并行體系結(jié)構(gòu)的發(fā)展,異構(gòu)眾核架構(gòu)在超級計算領(lǐng)域獲得了 廣泛應(yīng)用。從每半年公布一次的超級計算機(jī)TopSOO榜單中可W看出,更專注于并行處理性 能的MIC越來越多地被集成在高性能集群中,其中2015年11月公布的榜單中,排名第一的天 河2號與排名第二的Titan均采用該體系架構(gòu)。
[0004] 從程序設(shè)計角度看,由于MIC和CPU使用相同的編程模型,用戶程序并不需要做特 別的修改就可W正常運(yùn)行于MIC架構(gòu)上。但是大多用戶程序都是串行程序,即使用戶實現(xiàn)了 其并性版本,往往由于并行度不夠,遠(yuǎn)不能發(fā)揮出MIC架構(gòu)并行執(zhí)行程序的高性能。MIC架構(gòu) 上的并行分為四個層面:(1 )MIC核層面的并行:每個MIC核都配有長度超過CPU核的向量處 理單元,W支持更高效率的SIMD(Single Instruction Multiple Data)并行操作,實現(xiàn)指 令級并行。(2)單MIC卡層面的并行:每個MIC卡由多于50個核構(gòu)成,每個核提供4個硬件線 程,可W提供多達(dá)200多個線程,實現(xiàn)線程級并行。(3)MIC+CPU層面的并行:MIC和CPU異構(gòu)協(xié) 同,通過數(shù)據(jù)傳輸最小化,負(fù)載均衡,實現(xiàn)CPU和MIC間進(jìn)程級并行。(4)MIC集群層面的并行: 在集群間部署多MIC卡,通過任務(wù)劃分,MPI通信模型,實現(xiàn)集群級并行。
[0005] 有限差分?jǐn)?shù)值算法用于模擬波在彈性介質(zhì)中的傳播,廣泛應(yīng)用于地震模擬、資源 勘探、無損探傷等領(lǐng)域。該算法通過求解偏微分方程組和時間迭代模擬彈性波傳播,具有簡 單、靈活、通用性強(qiáng)、易于程序?qū)崿F(xiàn)等優(yōu)點(diǎn)。但是有限差分存在訪存跨度大,計算密度高,算 法性能差等問題,往往受限于模擬范圍、模擬時長的規(guī)模。利用異構(gòu)眾核系統(tǒng)的并行特性進(jìn) 行有限差分?jǐn)?shù)值模擬,可W很好解決上述問題。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要解決的技術(shù)問題是:解決有限差分?jǐn)?shù)值算法在異構(gòu)眾核架構(gòu)運(yùn)行時性能 較低,受限于模擬范圍和模擬時長的問題。本發(fā)明提供一種使有限差分算法高效運(yùn)行于異 構(gòu)眾核架構(gòu)優(yōu)化方法。
[0007] 本發(fā)明的技術(shù)方案是:一種異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,有限差分 算法采用=步遞進(jìn)優(yōu)化法進(jìn)行優(yōu)化,所述=步遞進(jìn)優(yōu)化法的具體步驟為: 步驟一、基本優(yōu)化,提取循環(huán)不變量削減計算強(qiáng)度、消除循環(huán)分支W利于向量化; 步驟二、并行優(yōu)化,采用化enMP并行模型,通過在核屯、循環(huán)前加入編譯指示,實現(xiàn)線程 級并行,采用內(nèi)建向量指令改寫核屯、循環(huán),實現(xiàn)指令級并行; 步驟S、異構(gòu)協(xié)同優(yōu)化,在異構(gòu)眾核平臺下,使用offload分載模式可W將部分計算從 CPU端分載至MIC端。
[0008] 所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,所述步驟一的具體為:通過循 環(huán)展開、不變量外提基本優(yōu)化法削減計算強(qiáng)度,變換循環(huán)變量初值及退出條件消除分支判 斷。所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,所述步驟二具體為:循環(huán)分塊后,使 用化enMP并行模型,使多線程執(zhí)行算法時具有更好的空間局部性,同時,使用內(nèi)建向量指令 并插入數(shù)據(jù)預(yù)取指令,在充分利用MIC核指令級并行的基礎(chǔ)上,有效縮短計算單元等待數(shù)據(jù) 傳輸?shù)臅r間。
[0009] 所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,所述內(nèi)建向量的具體步驟為: 步驟201:將乂維循環(huán);1!'〇1'(義=:??;義<邸1日義;針+)改寫為;1!'〇1'(義=:??;義<邸1日義;針=16),^16 個單精度浮點(diǎn)數(shù)為一個向量,每循環(huán)一次得到16個計算結(jié)果,循環(huán)量降為原來的1/16; 步驟202:將16個連續(xù)數(shù)據(jù)prev[x+i]. . .prev[x+i+15]讀取至512位向量寄存器xVec中 W計算FDx的第i個分量,并將結(jié)果累加至向量寄存器sumVec中,將16個連續(xù)數(shù)據(jù)prev[x+i* nl]. . .prev[x+i*nl+15]讀取至512位向量寄存器^ec中并計算FDy的第i個分量,并將結(jié)果 累加至向量寄存器sumVec中,同理將16個連續(xù)數(shù)據(jù)prev[x+i*nln2]. . .prev[x+i*nln2+15] 讀取至512位向量寄存器zVec中W計算FDz的第i個分量,并將結(jié)果累加至向量寄存器 sumVec 中; 步驟203、使用向量融合加/減指令計算next,將計算結(jié)果寫回next[x]. . .next[x+15]。
[0010] 所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,所述步驟=主要包括數(shù)據(jù)傳輸 優(yōu)化和負(fù)載均衡優(yōu)化。
[0011] 所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,所述數(shù)據(jù)傳輸優(yōu)化具體方法 為:有限差分算法主要包括next、prev和Vel =個數(shù)組;=個數(shù)組的傳輸量均與分載給MIC的 負(fù)載有關(guān):設(shè)在X,Y,Z維度下的輸入規(guī)模為Nl,N2和N3 ,CPU與MIC的負(fù)載比例為Lc: Lm,數(shù)組 ve 1作為只讀數(shù)組,僅需首次由CPU傳向MIC并由MIC保留在其內(nèi)存中,傳輸數(shù)據(jù)量為
!字節(jié),之后的迭代不再需要將vel傳給MIC,使用分載模式 中的nocopy技術(shù)實現(xiàn);數(shù)組next和prev均為讀寫數(shù)組,在時間步迭代中依次輪流擔(dān)任寫目 的地數(shù)組,因此除了需要首次將數(shù)據(jù)傳輸至MIC,迭代過程中還要相互交換依賴部分;首次 傳輸數(shù)組next和prev的數(shù)據(jù)量均為
戸 節(jié);每次迭代結(jié)束時,CPU端與MIC端交換依賴數(shù)據(jù):CPU端傳輸Nl*N2*8*sizeof(float)字節(jié) 的數(shù)據(jù)至MIC,同時MIC端傳輸NI*肥*8*sizeof (float)字節(jié)的數(shù)據(jù)至CPU;將數(shù)組next分給 CPU和MIC并行計算,陰影部分?jǐn)?shù)據(jù)不在計算范圍,而是在當(dāng)次迭代結(jié)束后由另一端傳輸過 來;數(shù)組nextmic最后的N1*N2*8個數(shù)據(jù)由CPU端對應(yīng)部分的計算結(jié)果傳入,nextcpu最前的NI* N2*8個數(shù)據(jù)由MIC端對應(yīng)部分的計算結(jié)果傳入;數(shù)據(jù)交換結(jié)束后即可開始下次迭代,直至程 序結(jié)束。所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,所述負(fù)載均衡優(yōu)化具體方法為: 首先根據(jù)輸入規(guī)模分別在CPU端和MIC端運(yùn)行優(yōu)化后的程序,使用分塊探索工具得到最優(yōu)的 分塊大小;然后使用在CPU和MIC上測得的程序吞吐量Tcpu和Tmi。,并根據(jù)公式 LcpU ? Lmic Tcpu ? Tmic 計算得到CPU和MIC的負(fù)載Upu和Lmi。;最后根據(jù)負(fù)載比例,將數(shù)據(jù)從CPU端分載至MIC端, 使用offload分載模式中的異步計算模式在CPU和MIC端并行計算,W此做到負(fù)載均衡。
[0012] 本發(fā)明的有益效果是:1、本發(fā)明異構(gòu)眾核系統(tǒng)中有限差分算法優(yōu)化方法,應(yīng)用= 步遞進(jìn)優(yōu)化法解決有限差分算法從多核系統(tǒng)到異構(gòu)眾核系統(tǒng)時由跨越式訪存、可并行執(zhí)行 緒不足帶來的計算性能低、并行效果差的問題,是一種具有高效性、可擴(kuò)展性的優(yōu)化方法, 通過分支消除、循環(huán)展開、不變量外提等基本優(yōu)化法削減計算強(qiáng)度并為向量化掃除障礙;通 過分析數(shù)據(jù)依賴,循環(huán)分塊,使用向量指令集改寫核屯、算法等并行優(yōu)化法,充分利用眾核處 理器多線程、長向量的機(jī)制;在異構(gòu)眾核平臺下,通過數(shù)據(jù)傳輸最小化,負(fù)載均衡等異構(gòu)協(xié) 同優(yōu)化法,實現(xiàn)并優(yōu)化了多核處理器和眾核處理器的并行計算。
[0013] 2、本發(fā)明異構(gòu)眾核系統(tǒng)中有限差分算法優(yōu)化方法,采用指令級預(yù)取技術(shù)解決算法 由跨越式訪存導(dǎo)致緩存脫祀從而造成計算部件等待數(shù)據(jù)加載,浪費(fèi)計算資源的問題。創(chuàng)新 地采用多級緩存預(yù)取,使基于流水線的硬件執(zhí)行單元可W提前完成讀數(shù)據(jù)操作,減少流水 線氣泡的產(chǎn)生,加速指令的執(zhí)行。
[0014] 3、本發(fā)明異構(gòu)眾核系統(tǒng)中有限差分算法優(yōu)化方法,應(yīng)用多層循環(huán)分塊技術(shù)解決算 法從多核系統(tǒng)到異構(gòu)眾核系統(tǒng)時可并行執(zhí)行緒不足的問題,是一種靈活、可擴(kuò)展的優(yōu)化技 術(shù),創(chuàng)新地采用啟發(fā)式分塊探索最優(yōu)塊大小,使算法具有更好的局部性,更加緊密地適應(yīng)異 構(gòu)眾核系統(tǒng)的多級cache配置。
[0015] 4、本發(fā)明異構(gòu)眾核系統(tǒng)中有限差分算法優(yōu)化方法應(yīng)用于眾核加速器(MIC)與多核 通用處理器(CPU)或其它處理器相結(jié)合的混合異構(gòu)的高性能計算機(jī)系統(tǒng)中,通過數(shù)據(jù)傳輸 和異構(gòu)協(xié)同優(yōu)化將數(shù)值計算在多核處理器與眾核處理器上并行進(jìn)行,同W往的多核或眾核 并行結(jié)構(gòu)相比,利用該優(yōu)化方法即可W支持異構(gòu)眾核系統(tǒng)上算法的高效執(zhí)行,又可W通過 PCI-E互聯(lián)其他異構(gòu)眾核系統(tǒng),使用消息傳遞接口(MPI)提供集群級并行,取得最大程度的 加速。
【附圖說明】
[0016] 圖1為有限差分(Finite Difference)算法異構(gòu)協(xié)同計算原理圖; 圖2為有限差分算法異構(gòu)數(shù)據(jù)劃分及傳輸示意圖;
【具體實施方式】
[0017] 實施例1:結(jié)合圖1-圖2,一種異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,有限差分 算法采用=步遞進(jìn)優(yōu)化法進(jìn)行優(yōu)化,所述=步遞進(jìn)優(yōu)化法的具體步驟為: 步驟一、基本優(yōu)化,提取循環(huán)不變量削減計算強(qiáng)度、消除循環(huán)分支W利于向量化;具體 為:通過循環(huán)展開、不變量外提基本優(yōu)化法削減計算強(qiáng)度,變換循環(huán)變量初值及退出條件消 除分支判斷。
[0018] 步驟二、并行優(yōu)化,采用化enMP并行模型,通過在核屯、循環(huán)前加入編譯指示,實現(xiàn) 線程級并行,采用內(nèi)建向量指令改寫核屯、循環(huán),實現(xiàn)指令級并行;具體為:循環(huán)分塊后,使用 OpenMP并行模型,使多線程執(zhí)行算法時具有更好的空間局部性,同時,使用內(nèi)建向量指令并 插入數(shù)據(jù)預(yù)取指令,有效縮短計算單元等待數(shù)據(jù)傳輸?shù)臅r間;內(nèi)建向量的具體步驟為:步驟 201:將X維循環(huán)for(x = xx;x<xmax;x++)改寫為for(x = xx;x<xmax;x+ = 16),Wl6個單精度 浮點(diǎn)數(shù)為一個向量,每循環(huán)一次得到16個計算結(jié)果,循環(huán)量降為原來的1/16; 步驟202:將16個連續(xù)數(shù)據(jù)prev[x+i]. . .prev[x+i+15]讀取至512位向量寄存器xVec中 W計算FDx的第i個分量,并將結(jié)果累加至向量寄存器sumVec中,將16個連續(xù)數(shù)據(jù)prev[x+i* nl]. . .prev[x+i*nl+15]讀取至512位向量寄存器^ec中并計算FDy的第i個分量,并將結(jié)果 累加至向量寄存器sumVec中,同理將16個連續(xù)數(shù)據(jù)prev[x+i*nln2]. . .prev[x+i*nln2+15] 讀取至512位向量寄存器zVec中W計算FDz的第i個分量,并將結(jié)果累加至向量寄存器 sumVec 中; 步驟203、使用向量融合加/減指令計算next,將計算結(jié)果寫回next[x]. . .next[x+15]。
[0019] 步驟S、異構(gòu)協(xié)同優(yōu)化,在異構(gòu)眾核平臺下,使用offload分載模式可W將部分計 算從CPU端分載至MIC端。主要包括數(shù)據(jù)傳輸優(yōu)化和負(fù)載均衡優(yōu)化。
[0020] 數(shù)據(jù)傳輸優(yōu)化具體方法為:有限差分算法主要包括next、prev和vel立個數(shù)組;=個數(shù) 組的傳輸量均與分載給MIC的負(fù)載有關(guān):設(shè)在X,Y,Z維度下的輸入規(guī)模為Nl,N2和N3,CPU與MIC 的負(fù)載比例為Lc:Lm,數(shù)組vel作為只讀數(shù)組,僅需首次由CPU傳向MIC并由MIC保留在其內(nèi)存 中,傳輸數(shù)據(jù)量天
字節(jié),之后的迭代不再需要將vel傳給MIC, 使用分載模式中的nocopy技術(shù)實現(xiàn);數(shù)組next和prev均為讀寫數(shù)組,在時間步迭代中依次輪流 擔(dān)任寫目的地數(shù)組,因此除了需要首次將數(shù)據(jù)傳輸牽MIC,巧化討巧中還要巧巧專換依硫部 分;首次傳輸數(shù)組next和prev的數(shù)據(jù)量均;
字節(jié);每次迭代結(jié)束時,CPU端與MIC端交換依賴數(shù)據(jù):CPU端傳輸Nl*N2*8*sizeof(float)字 節(jié)的數(shù)據(jù)至MIC,同時MIC端傳輸Nl*N2*8*sizeof (f Ioat)字節(jié)的數(shù)據(jù)至CPU;將數(shù)組next分 給CPU和MIC并行計算,陰影部分?jǐn)?shù)據(jù)不在計算范圍,而是在當(dāng)次迭代結(jié)束后由另一端傳輸 過來;數(shù)組nextmiG最后的N1*N2*8個數(shù)據(jù)由CPU端對應(yīng)部分的計算結(jié)果傳入,nextcpu最前的 N1*N2*8個數(shù)據(jù)由MIC端對應(yīng)部分的計算結(jié)果傳入;數(shù)據(jù)交換結(jié)束后即可開始下次迭代,直 至程序結(jié)束。負(fù)載均衡優(yōu)化具體方法為:首先根據(jù)輸入規(guī)模分別在CPU端和MIC端運(yùn)行優(yōu)化 后的程序,使用分塊探索工具得到最優(yōu)的分塊大小;然后使用在CPU和MIC上測得的程序吞 吐量Tepu和Tmi。,并根據(jù)公式 Lcpu : Lmic - Tcpu : Tniic 計算得到CPU和MIC的負(fù)載Upu和Lmi。;最后根據(jù)負(fù)載比例,將數(shù)據(jù)從CPU端分載至MIC端, 使用offload分載模式中的異步計算模式在CPU和MIC端并行計算,W此做到負(fù)載均衡。
[0021] 具體實施例2:結(jié)合圖1-圖2,參見圖1、圖2,本發(fā)明異構(gòu)眾核系統(tǒng)中有限差分?jǐn)?shù)值 算法優(yōu)化方法,在基于眾核加速器(MIC)與多核通用處理器(CPU)相結(jié)合的混合異構(gòu)高性能 計算機(jī)系統(tǒng)中,通過變換循環(huán)變量初值及退出條件消除分支判斷,因為處理器在處理條件 分支時,分支預(yù)測邏輯單元在計算結(jié)果可用之前就會采用基于統(tǒng)計的方法對該計算結(jié)果進(jìn) 行預(yù)測,一旦分支預(yù)測失誤,指令流水線將重新回到該分支位置,產(chǎn)生流水線氣泡,造成時 鐘周期的浪費(fèi)。此外,分支預(yù)測失敗后,編譯器也就不能繼續(xù)進(jìn)行循環(huán)展開或SIMD向量化等 后續(xù)優(yōu)化,影響程序性能;通過在核屯、循環(huán)前加入編譯指示,實現(xiàn)線程級并行,采用多層循 環(huán)分塊的方法對算法的=層循環(huán)進(jìn)行分塊,將算法核屯、的=重循環(huán)局部于塊內(nèi),同時使用 化enMP編譯指示collapse子句壓縮分塊后的循環(huán)W提供充足的可并行執(zhí)行緒;由于程序存 在跨越式數(shù)據(jù)訪存,存在訪存不連續(xù)現(xiàn)象,因此加入多級緩存預(yù)取指令_111111_9'6'6*證^降 低由于緩存脫祀所產(chǎn)生的延遲:在每次讀取一個維度的向量數(shù)據(jù)之后,調(diào)用_mm_pref etch 將下一循環(huán)所需要的同維度向量數(shù)據(jù)預(yù)取至LO化che,同時將距離DIST的向量數(shù)據(jù)預(yù)取至 Ll化Che,其中DIST需要通過測試獲得。
[0022]通過CPU與MIC協(xié)同并行進(jìn)一步提高程序效率。使用off load分載模式可W將部分 計算從CPU端分載至MIC端,需要指出,由于CPU和MIC不共享物理內(nèi)存,對有限差分算法進(jìn)行 異構(gòu)協(xié)同優(yōu)化時,分載至MIC端的計算所依賴的數(shù)據(jù)也要從CPU的內(nèi)存空間傳輸至MIC的內(nèi) 存空間,因此會產(chǎn)生額外的通信開銷;另一方面,由于程序并行運(yùn)行在CPU和MIC上,兩端硬 件結(jié)構(gòu)的差異勢必造成程序在兩端運(yùn)行時的性能差異。因此需要對數(shù)據(jù)傳輸進(jìn)行優(yōu)化W最 小化數(shù)據(jù)交換,W及按照CPU和MIC的計算能力合理地分配負(fù)載。在負(fù)載均衡優(yōu)化中,首先根 據(jù)輸入規(guī)模分別在CPU端和MIC端運(yùn)行優(yōu)化后的程序,使用自動測試工具得到最優(yōu)的分塊大 小;然后使用在CPU和MIC上測得的程序吞吐量(單位時間內(nèi)處理浮點(diǎn)數(shù)的數(shù)據(jù)量)Tcpu和Tmic 計算得到CPU和MIC的負(fù)載Upu和Lmi。。最后根據(jù)負(fù)載比例,將數(shù)據(jù)從CPU端分載至MIC端,使用 offload分載模式中的異步計算模式在CPU和MIC端并行計算,W此做到負(fù)載均衡。
【主權(quán)項】
1. 一種異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:有限差分算法采用三 步遞進(jìn)優(yōu)化法進(jìn)行優(yōu)化,所述三步遞進(jìn)優(yōu)化法的具體步驟為: 步驟一、基本優(yōu)化,提取循環(huán)不變量削減計算強(qiáng)度、消除循環(huán)分支以利于向量化; 步驟二、并行優(yōu)化,采用OpenMP并行模型,通過在核心循環(huán)前加入編譯指示,實現(xiàn)線程 級并行,采用內(nèi)建向量指令改寫核心循環(huán),實現(xiàn)指令級并行; 步驟三、異構(gòu)協(xié)同優(yōu)化,在異構(gòu)眾核平臺下,使用offload分載模式可以將部分計算從 CHJ端分載至MIC端。2. 根據(jù)權(quán)利要求1所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:所述 步驟一的具體為:通過循環(huán)展開、不變量外提基本優(yōu)化法削減計算強(qiáng)度,變換循環(huán)變量初值 及退出條件消除分支判斷。3. 根據(jù)權(quán)利要求1所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:所述 步驟二具體為:通過分析數(shù)據(jù)依賴,使用內(nèi)建向量指令改寫算法,進(jìn)行循環(huán)分塊,然后使用 OpenMP并行模型,使多線程執(zhí)行算法時具有更好的空間局部性,同時,使用內(nèi)建向量指令并 插入數(shù)據(jù)預(yù)取指令,有效縮短計算單元等待數(shù)據(jù)傳輸?shù)臅r間。4. 根據(jù)權(quán)利要求3所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:所述 內(nèi)建向量的具體步驟為: 步驟201:將父維循環(huán);1^〇1'(叉=叉叉;叉〈叉1]1&叉;叉++)改寫為;1^〇1'(叉=叉叉;叉〈叉1]1&叉;叉+=16),以16 個單精度浮點(diǎn)數(shù)為一個向量,每循環(huán)一次得到16個計算結(jié)果,循環(huán)量降為原來的1/16; 步驟202:將16個連續(xù)數(shù)據(jù)prev[x+i] · · .prev[x+i+15]讀取至512位向量寄存器xVec中 以計算FDx的第i個分量,并將結(jié)果累加至向量寄存器sumVec中,將16個連續(xù)數(shù)據(jù)prev[x+i* nl]. . .prev[X+i*nl+15]讀取至512位向量寄存器yVec中并計算的第i個分量,并將結(jié)果 累加至向量寄存器sumVec中,同理將16個連續(xù)數(shù)據(jù)prev[x+i*nln2] · · .prev[x+i*nln2+15] 讀取至512位向量寄存器zVec中以計算FDz的第i個分量,并將結(jié)果累加至向量寄存器 sumVec 中; 步驟203、使用向量融合加/減指令計算next,將計算結(jié)果寫回next[x]. . .next[x+15]。5. 根據(jù)權(quán)利要求1所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:所述 步驟三主要包括數(shù)據(jù)傳輸優(yōu)化和負(fù)載均衡優(yōu)化。6. 根據(jù)權(quán)利要求5所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:所述 數(shù)據(jù)傳輸優(yōu)化具體方法為:有限差分算法主要包括ne Xt、preV和vel三個數(shù)組;三個數(shù)組的 傳輸量均與分載給MIC的負(fù)載有關(guān):設(shè)在X,Y,Z維度下的輸入規(guī)模為NI,N2和N3,CPU與MIC的 負(fù)載比例為Lc :Lm,數(shù)組vel作為只讀數(shù)組,僅需首次由CPU傳向MIC并由MIC保留在其內(nèi)存 中,傳輸數(shù)據(jù)量):節(jié),之后的迭代不再需要將vel傳給MIC, 使用分載模式中的nocopy技術(shù)實現(xiàn);數(shù)組next和prev均為讀寫數(shù)組,在時間步迭代中依次輪流 擔(dān)任寫目的地數(shù)組,因此除了需要首次將數(shù)據(jù)傳輸至MIC,迭代過程中還要相互交換依賴部 分;首次傳輸數(shù)組next和prev的數(shù)據(jù)量:字節(jié);每次迭代結(jié)束時,CPU端與MIC端交換依賴數(shù)據(jù):CPU端傳輸Nl*N2*8*sizeof(float)字 節(jié)的數(shù)據(jù)至MIC,同時MIC端傳輸Nl*N2*8*sizeof(float)字節(jié)的數(shù)據(jù)至CPU;將數(shù)組next分 給CPU和MIC并行計算,陰影部分?jǐn)?shù)據(jù)不在計算范圍,而是在當(dāng)次迭代結(jié)束后由另一端傳輸 過來;數(shù)組nextmi。最后的N1*N2*8個數(shù)據(jù)由CPU端對應(yīng)部分的計算結(jié)果傳入,Iiextcpu最前的 N1*N2*8個數(shù)據(jù)由MIC端對應(yīng)部分的計算結(jié)果傳入;數(shù)據(jù)交換結(jié)束后即可開始下次迭代,直 至程序結(jié)束。7.根據(jù)權(quán)利要求5所述的異構(gòu)眾核架構(gòu)中有限差分算法的優(yōu)化方法,其特征在于:所述 負(fù)載均衡優(yōu)化具體方法為:首先根據(jù)輸入規(guī)模分別在CPU端和MIC端運(yùn)行優(yōu)化后的程序,使 用分塊探索工具得到最優(yōu)的分塊大??;然后使用在CPU和MIC上測得的程序吞吐量 Tmi。,并根據(jù)公式:計算得到CPU和MIC的負(fù)載1^11和1^。;最后根據(jù)負(fù)載比例,將數(shù)據(jù)從0?1]端分載至[(:端, 使用off load分載模式中的異步計算模式在CPU和MIC端并行計算,以此做到負(fù)載均衡。
【文檔編號】G06F9/30GK106020773SQ201610320899
【公開日】2016年10月12日
【申請日】2016年5月13日
【發(fā)明人】許瑾晨, 張乾坤, 郝鑫, 單征, 戴濤, 周蓓, 郭紹忠
【申請人】中國人民解放軍信息工程大學(xué), 中國南方電網(wǎng)有限責(zé)任公司電網(wǎng)技術(shù)研究中心, 南方電網(wǎng)科學(xué)研究院有限責(zé)任公司