本發(fā)明專利技術(shù)涉及一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)(SPMD)型串行程序自動(dòng)并行化方法,屬于并行計(jì)算機(jī)領(lǐng)域,用于設(shè)計(jì)SPMD型串行程序的自動(dòng)并行化軟件工具。本發(fā)明專利技術(shù)通過自動(dòng)劃分?jǐn)?shù)據(jù),自動(dòng)尋找共享數(shù)據(jù),自動(dòng)生成通信和同步命令,來實(shí)現(xiàn)程序的自動(dòng)并行化。不要求節(jié)點(diǎn)機(jī)有統(tǒng)一的存儲(chǔ)空間,節(jié)點(diǎn)機(jī)相對(duì)獨(dú)立,相互連線少,故可簡(jiǎn)化硬件結(jié)構(gòu),對(duì)于中、大規(guī)模并行機(jī),效果尤為明顯。經(jīng)程度和運(yùn)行效率高,一個(gè)實(shí)施例的實(shí)際并行效率達(dá)到83.8%。(*該技術(shù)在2016年保護(hù)過期,可自由使用*)
【技術(shù)實(shí)現(xiàn)步驟摘要】
【國(guó)外來華專利技術(shù)】
本專利技術(shù)專利涉及一種高效的串行源程序自動(dòng)并行化技術(shù),可將單程序多數(shù)據(jù)(Single Program Multiple Data,SPMD)型串行源程序自動(dòng)地轉(zhuǎn)換為并行程序,其屬于并行計(jì)算機(jī)
現(xiàn)有公開的程序自動(dòng)并行化技術(shù)主要基于傳統(tǒng)向量化的相關(guān)性分析和程序轉(zhuǎn)換的方法。如,美國(guó)SGI公司的Challenge 4L系統(tǒng),有4個(gè)CPU,通過總線共享主存,配有自動(dòng)并行化工具軟件PFA(Power FORTRAN Accelerator)。Perfect Benchmark的12種測(cè)試程序的加速比測(cè)試結(jié)果,其不足之處6種小于1(4機(jī)并行,理想加速比為4,加速比小于1表示效果不如單機(jī));4種稍大于1;1種為1.81,共有11種效率不到50%。據(jù)報(bào)導(dǎo),上海復(fù)旦大學(xué)的自動(dòng)并行化工具軟件AFT于1996年6月16日通過技術(shù)鑒定(國(guó)際電子報(bào)1996年6月17日)。AFT進(jìn)一步采用了過程間分析,符號(hào)分析,全局分析等技術(shù),使并行化效果超過了國(guó)際同類先進(jìn)商業(yè)軟件系統(tǒng),在一些關(guān)鍵技術(shù)上達(dá)到了國(guó)際領(lǐng)先水平。在與PFA同樣的條件下,12種測(cè)試程序的加速比測(cè)試結(jié)果,其不足之處2種小于1;6種稍大于1;共有8種效率不超過50%。綜上可見,現(xiàn)有的程序自動(dòng)并行化技術(shù)十分復(fù)雜,效果不夠理想。PFA和AFT都要求有共享主存(或共享存儲(chǔ)器)硬件的支持。當(dāng)節(jié)點(diǎn)機(jī)(以下簡(jiǎn)稱節(jié)點(diǎn))數(shù)增加時(shí),訪問共享主存將產(chǎn)生通信瓶頸,降低程序運(yùn)行的效率。因此,兩者都不適用于節(jié)點(diǎn)數(shù)較多的并行機(jī)系統(tǒng)。本專利技術(shù)專利目的是為了避免以上所述的技術(shù)不足之處,提出了一種。本專利技術(shù)專利的目的內(nèi)容通過以下措施來實(shí)現(xiàn)(1)數(shù)組的自動(dòng)均衡劃分和分配數(shù)組劃分的原則是,各節(jié)點(diǎn)的計(jì)算量要盡可能均衡,而通信量盡可能小。一個(gè)二維(或三維)數(shù)組,要分配給n個(gè)節(jié)點(diǎn)去計(jì)算,可在X(或者Y)方向上均勻地劃分為n份,依次分配給n個(gè)節(jié)點(diǎn)。同理,也可以在X和Y兩個(gè)方向,或X,Y和Z三個(gè)方向上劃分,分別稱為二維劃分或三維劃分。(2)生成節(jié)點(diǎn)源程序“毛坯”由于串行程序?qū)儆赟PMD模型,每個(gè)節(jié)點(diǎn)源程序和串行源程序基本相同,只是計(jì)算的數(shù)據(jù)不同,故可將串行源程序拷貝n份,分別供n個(gè)節(jié)點(diǎn)生成源程序之用。各個(gè)節(jié)點(diǎn)要負(fù)責(zé)計(jì)算所分配數(shù)組范圍中的數(shù)據(jù),因此依次修改拷貝中有關(guān)循環(huán)程序中的上、下限,即生成各節(jié)點(diǎn)源程序“毛坯”。(3)自動(dòng)尋找節(jié)點(diǎn)間的共享數(shù)據(jù)分析節(jié)點(diǎn)源程序“毛坯”流程,掃描有關(guān)語句中數(shù)組下標(biāo),找出不屬本節(jié)點(diǎn)的數(shù)據(jù),即為與鄰近節(jié)點(diǎn)的共享數(shù)據(jù),用表記錄其名稱,屬性,寬度及共享方向等,供生成通信命令之用。(4)同步點(diǎn)定位一幀計(jì)算結(jié)束即應(yīng)通信,稱為同步點(diǎn),位于串行源程序最外層循環(huán)的末尾,該末尾語句的標(biāo)號(hào),即為同步點(diǎn)標(biāo)號(hào),供自動(dòng)插入通信和同步命令之用;也可以通過分析源程序控制流程,自動(dòng)定位最外層循環(huán)末尾處的同步點(diǎn)。(5)擴(kuò)充高級(jí)語言編譯程序的通信和同步庫(kù)函數(shù)并行程序比串行程序要增加通信和同步功能,這可通過擴(kuò)充高級(jí)語言編譯程序的庫(kù)函數(shù)來實(shí)現(xiàn)。擴(kuò)充的方法與硬件結(jié)構(gòu)有關(guān)。調(diào)用通信庫(kù)函數(shù)或同步庫(kù)函數(shù)就是通信命令或同步命令。(6)自動(dòng)生成和插入通信和同步命令根據(jù)共享數(shù)據(jù)表中的共享數(shù)據(jù)及其有關(guān)參數(shù),再利用所擴(kuò)充的通信和同步庫(kù)函數(shù),即可自動(dòng)生成通信和同步命令,并插入各節(jié)點(diǎn)源程序的同步點(diǎn)處。(7)數(shù)組范圍重定義每個(gè)節(jié)點(diǎn)運(yùn)行過程中要訪問的數(shù)組范圍只需包括本節(jié)點(diǎn)負(fù)責(zé)計(jì)算的數(shù)據(jù)和計(jì)算所需的共享數(shù)據(jù),節(jié)點(diǎn)源程序定義數(shù)組范圍應(yīng)包括兩者之和。而原串行源程序定義的數(shù)組范圍包括了全部網(wǎng)格點(diǎn),這就是數(shù)組范圍重定義的任務(wù)。進(jìn)行數(shù)組范圍重定義可以節(jié)約節(jié)點(diǎn)的存儲(chǔ)空間。利用以上技術(shù)手段,就可生成各節(jié)點(diǎn)源程序,也即實(shí)現(xiàn)了程序的自動(dòng)并行化。每個(gè)節(jié)點(diǎn)的源程序由傳統(tǒng)的串行編譯程序,依次編譯生成各節(jié)點(diǎn)的目標(biāo)程序。將各節(jié)點(diǎn)的目標(biāo)程序依次加載到各節(jié)點(diǎn)中,即可并行運(yùn)行了。本專利技術(shù)專利與現(xiàn)有技術(shù)對(duì)比,有如下優(yōu)點(diǎn)(1)構(gòu)思方案新穎,方法設(shè)計(jì)合理,具有創(chuàng)造性,可將SPMD型計(jì)算程序自動(dòng)并行化,生成的并行程序運(yùn)行效率高。(2)生成的并行程序運(yùn)行流程與原串行程序完全一致,故可保證并行程序的正確性。(3)并行程序運(yùn)行效率決定于每個(gè)節(jié)點(diǎn)的“計(jì)算/通信”比,計(jì)算的數(shù)據(jù)越多,運(yùn)行的效率就越高。尤其是對(duì)于大型計(jì)算程序并行化的效率更高。(4)既適用于共享主存的緊耦合系統(tǒng),也適用于消息傳遞的松耦合系統(tǒng),特別適合于節(jié)點(diǎn)數(shù)較多的松耦合系統(tǒng)。(5)本專利技術(shù)利用通信命令訪問鄰近節(jié)點(diǎn)的共享數(shù)據(jù),每個(gè)節(jié)點(diǎn)不會(huì)直接訪問其它節(jié)點(diǎn)的存儲(chǔ)器,不要求各節(jié)點(diǎn)機(jī)的存儲(chǔ)器組成統(tǒng)一的存儲(chǔ)空間,各節(jié)點(diǎn)機(jī)相對(duì)獨(dú)立,相互連線少,可以簡(jiǎn)化并行機(jī)的硬件結(jié)構(gòu)。附面說明如下圖自動(dòng)并行化工具軟件流程圖人機(jī)對(duì)話模塊1-1(問節(jié)點(diǎn)數(shù)(n)?人機(jī)對(duì)話模塊1-2(問網(wǎng)格劃分方向(X/Y/Z)?)人機(jī)對(duì)話模塊1-3(問同步點(diǎn)標(biāo)號(hào)?)數(shù)組自動(dòng)化劃分模塊2節(jié)點(diǎn)源程序“毛坯”生成模塊3尋找共享數(shù)據(jù)模塊4通信和同步命令生成模塊5通信和同步庫(kù)函數(shù)6節(jié)點(diǎn)正式源程序7實(shí)施例結(jié)合附圖作詳細(xì)敘述如下按本專利技術(shù)的方法,為EP-860全互連多機(jī)系統(tǒng),設(shè)計(jì)了一個(gè)自動(dòng)并行化工具軟件APF(Auto-Parallelizing Fortran),可將用戶的串行Fortran源程序自動(dòng)轉(zhuǎn)換為并行源程序(各節(jié)點(diǎn)的源程序),再利用經(jīng)過擴(kuò)展庫(kù)函數(shù)的傳統(tǒng)串行Fortran編譯程序,編譯生成并行目標(biāo)程序(各節(jié)點(diǎn)的目標(biāo)程序)。APF成功地將一個(gè)51*42網(wǎng)格點(diǎn)的流場(chǎng)計(jì)算程序并行化,在EP-860全互連多機(jī)系統(tǒng)上運(yùn)行,8機(jī)的加速比為6.7,效率達(dá)到83.8%。(本專利技術(shù)主要適用于SPMD型計(jì)算程序的并行化,故采用SPMD型實(shí)用程序來測(cè)試。)APF由以下模塊組成(1)人機(jī)對(duì)話模塊1-1、1-2、1-3詢問節(jié)點(diǎn)機(jī)數(shù)n?按什么方向劃分網(wǎng)格點(diǎn)?同步點(diǎn)標(biāo)號(hào)?(2)數(shù)組自動(dòng)劃分模塊2數(shù)組劃分的原則是,各節(jié)點(diǎn)的計(jì)算量要盡可能均衡,而通信量盡可能小。例如,一個(gè)三維數(shù)組,在X,Y,Z三個(gè)方向上的最大維長(zhǎng)為MX,MY,MZ,要分配給n個(gè)節(jié)點(diǎn)去計(jì)算,可在X方向上均勻劃分為n份,依次分配給n個(gè)節(jié)點(diǎn)。如MX為n的整倍數(shù),則劃分如下0#節(jié)點(diǎn)1至(MX/n); 1至MY;1至MZ;1#節(jié)點(diǎn)(MX/n+1)至(2MX/n); 1至MY;1至MZ;(k-1)#節(jié)點(diǎn)((k-1)*MX/n+1)至(k*MX/n);1至MY;1至MZ;(n-1)#節(jié)點(diǎn)((n-1)*MX/n+1)至(MX);1至MY;1至MZ;0#節(jié)點(diǎn)(1MX/n,1MY,1MZ),若MX非n的整倍數(shù),設(shè)v=MX(MODn),則有v個(gè)節(jié)點(diǎn)在X方向上多分配1。(3)節(jié)點(diǎn)源程序“毛坯”生成模塊3將原串行源程序拷貝n份,按上述數(shù)組劃分方案,依次修改拷貝中有關(guān)循環(huán)程序相應(yīng)的上、下限,生成各節(jié)點(diǎn)的源程序“毛坯”。(4)尋找共享數(shù)據(jù)模塊4分析節(jié)點(diǎn)源程序“毛坯”流程,掃描有關(guān)語句中的數(shù)組下標(biāo),找出不屬本節(jié)點(diǎn)的數(shù)據(jù),即為與鄰近節(jié)點(diǎn)的共享數(shù)據(jù),用表(共享數(shù)據(jù)表)記錄其名稱,屬性,寬度及共享方向等,供生成通信命令之用。同時(shí),進(jìn)行數(shù)組范圍重定義。(5)通信命令和同步命令生成模塊5各節(jié)點(diǎn)依次根據(jù)共享數(shù)據(jù)表,生成通信命令,并連同同步命令一起,插入其源程序“毛坯”同步點(diǎn)標(biāo)號(hào)所在的位置,生成節(jié)點(diǎn)正式源程序。(6)擴(kuò)充FORTRAN編譯程序的通信和同步庫(kù)函數(shù)6根據(jù)機(jī)器的通信特點(diǎn)進(jìn)行設(shè)計(jì)。要按本文檔來自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
本專利技術(shù)涉及一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動(dòng)并行化方法,所述的自動(dòng)并行化方法可用于設(shè)計(jì)基于共享數(shù)據(jù)的程序自動(dòng)并行化軟件工具,該軟件工具由人機(jī)對(duì)話模塊1-1、1-2、1-3,數(shù)組自動(dòng)劃分模塊2,節(jié)點(diǎn)源程序“毛坯”生成模塊3,尋找共享數(shù)據(jù)模塊4,通信和同步命令生成模塊5,通信和同步庫(kù)函數(shù)6等組成,其技術(shù)特征在于:所述的數(shù)組自動(dòng)劃分模塊2能根據(jù)人機(jī)對(duì)話關(guān)于節(jié)點(diǎn)數(shù)和數(shù)組劃分方向的指示,找出最好的數(shù)組劃分方案,使各節(jié)點(diǎn)的計(jì)算量均衡,而通信量小;缺省時(shí)按X方向一維劃分。
【技術(shù)特征摘要】
【國(guó)外來華專利技術(shù)】
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:康繼昌,朱怡安,肖驪,馮百明,
申請(qǐng)(專利權(quán))人:西北工業(yè)大學(xué),
類型:發(fā)明
國(guó)別省市:87[中國(guó)|西安]
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。