欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法

文檔序號:6410732閱讀:400來源:國知局
專利名稱:基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法
技術(shù)領(lǐng)域
本發(fā)明專利涉及一種高效的串行源程序自動并行化技術(shù),可將單程序多數(shù)據(jù)(Single Program Multiple Data,SPMD)型串行源程序自動地轉(zhuǎn)換為并行程序,其屬于并行計算機(jī)技術(shù)領(lǐng)域。
現(xiàn)有公開的程序自動并行化技術(shù)主要基于傳統(tǒng)向量化的相關(guān)性分析和程序轉(zhuǎn)換的方法。如,美國SGI公司的Challenge 4L系統(tǒng),有4個CPU,通過總線共享主存,配有自動并行化工具軟件PFA(Power FORTRAN Accelerator)。Perfect Benchmark的12種測試程序的加速比測試結(jié)果,其不足之處6種小于1(4機(jī)并行,理想加速比為4,加速比小于1表示效果不如單機(jī));4種稍大于1;1種為1.81,共有11種效率不到50%。據(jù)報導(dǎo),上海復(fù)旦大學(xué)的自動并行化工具軟件AFT于1996年6月16日通過技術(shù)鑒定(國際電子報1996年6月17日)。AFT進(jìn)一步采用了過程間分析,符號分析,全局分析等技術(shù),使并行化效果超過了國際同類先進(jìn)商業(yè)軟件系統(tǒng),在一些關(guān)鍵技術(shù)上達(dá)到了國際領(lǐng)先水平。在與PFA同樣的條件下,12種測試程序的加速比測試結(jié)果,其不足之處2種小于1;6種稍大于1;共有8種效率不超過50%。綜上可見,現(xiàn)有的程序自動并行化技術(shù)十分復(fù)雜,效果不夠理想。PFA和AFT都要求有共享主存(或共享存儲器)硬件的支持。當(dāng)節(jié)點(diǎn)機(jī)(以下簡稱節(jié)點(diǎn))數(shù)增加時,訪問共享主存將產(chǎn)生通信瓶頸,降低程序運(yùn)行的效率。因此,兩者都不適用于節(jié)點(diǎn)數(shù)較多的并行機(jī)系統(tǒng)。
本發(fā)明專利目的是為了避免以上所述的技術(shù)不足之處,提出了一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法。
本發(fā)明專利的目的內(nèi)容通過以下措施來實(shí)現(xiàn)(1)數(shù)組的自動均衡劃分和分配數(shù)組劃分的原則是,各節(jié)點(diǎn)的計算量要盡可能均衡,而通信量盡可能小。一個二維(或三維)數(shù)組,要分配給n個節(jié)點(diǎn)去計算,可在X(或者Y)方向上均勻地劃分為n份,依次分配給n個節(jié)點(diǎn)。
同理,也可以在X和Y兩個方向,或X,Y和Z三個方向上劃分,分別稱為二維劃分或三維劃分。
(2)生成節(jié)點(diǎn)源程序“毛坯”由于串行程序?qū)儆赟PMD模型,每個節(jié)點(diǎn)源程序和串行源程序基本相同,只是計算的數(shù)據(jù)不同,故可將串行源程序拷貝n份,分別供n個節(jié)點(diǎn)生成源程序之用。各個節(jié)點(diǎn)要負(fù)責(zé)計算所分配數(shù)組范圍中的數(shù)據(jù),因此依次修改拷貝中有關(guān)循環(huán)程序中的上、下限,即生成各節(jié)點(diǎn)源程序“毛坯”。
(3)自動尋找節(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)定位一幀計算結(jié)束即應(yīng)通信,稱為同步點(diǎn),位于串行源程序最外層循環(huán)的末尾,該末尾語句的標(biāo)號,即為同步點(diǎn)標(biāo)號,供自動插入通信和同步命令之用;也可以通過分析源程序控制流程,自動定位最外層循環(huán)末尾處的同步點(diǎn)。
(5)擴(kuò)充高級語言編譯程序的通信和同步庫函數(shù)并行程序比串行程序要增加通信和同步功能,這可通過擴(kuò)充高級語言編譯程序的庫函數(shù)來實(shí)現(xiàn)。擴(kuò)充的方法與硬件結(jié)構(gòu)有關(guān)。調(diào)用通信庫函數(shù)或同步庫函數(shù)就是通信命令或同步命令。
(6)自動生成和插入通信和同步命令根據(jù)共享數(shù)據(jù)表中的共享數(shù)據(jù)及其有關(guān)參數(shù),再利用所擴(kuò)充的通信和同步庫函數(shù),即可自動生成通信和同步命令,并插入各節(jié)點(diǎn)源程序的同步點(diǎn)處。
(7)數(shù)組范圍重定義每個節(jié)點(diǎn)運(yùn)行過程中要訪問的數(shù)組范圍只需包括本節(jié)點(diǎn)負(fù)責(zé)計算的數(shù)據(jù)和計算所需的共享數(shù)據(jù),節(jié)點(diǎn)源程序定義數(shù)組范圍應(yīng)包括兩者之和。而原串行源程序定義的數(shù)組范圍包括了全部網(wǎng)格點(diǎn),這就是數(shù)組范圍重定義的任務(wù)。進(jìn)行數(shù)組范圍重定義可以節(jié)約節(jié)點(diǎn)的存儲空間。
利用以上技術(shù)手段,就可生成各節(jié)點(diǎn)源程序,也即實(shí)現(xiàn)了程序的自動并行化。每個節(jié)點(diǎn)的源程序由傳統(tǒng)的串行編譯程序,依次編譯生成各節(jié)點(diǎn)的目標(biāo)程序。將各節(jié)點(diǎn)的目標(biāo)程序依次加載到各節(jié)點(diǎn)中,即可并行運(yùn)行了。
本發(fā)明專利與現(xiàn)有技術(shù)對比,有如下優(yōu)點(diǎn)(1)構(gòu)思方案新穎,方法設(shè)計合理,具有創(chuàng)造性,可將SPMD型計算程序自動并行化,生成的并行程序運(yùn)行效率高。
(2)生成的并行程序運(yùn)行流程與原串行程序完全一致,故可保證并行程序的正確性。
(3)并行程序運(yùn)行效率決定于每個節(jié)點(diǎn)的“計算/通信”比,計算的數(shù)據(jù)越多,運(yùn)行的效率就越高。尤其是對于大型計算程序并行化的效率更高。
(4)既適用于共享主存的緊耦合系統(tǒng),也適用于消息傳遞的松耦合系統(tǒng),特別適合于節(jié)點(diǎn)數(shù)較多的松耦合系統(tǒng)。
(5)本發(fā)明利用通信命令訪問鄰近節(jié)點(diǎn)的共享數(shù)據(jù),每個節(jié)點(diǎn)不會直接訪問其它節(jié)點(diǎn)的存儲器,不要求各節(jié)點(diǎn)機(jī)的存儲器組成統(tǒng)一的存儲空間,各節(jié)點(diǎn)機(jī)相對獨(dú)立,相互連線少,可以簡化并行機(jī)的硬件結(jié)構(gòu)。
附面說明如下圖自動并行化工具軟件流程圖人機(jī)對話模塊1-1(問節(jié)點(diǎn)數(shù)(n)?人機(jī)對話模塊1-2(問網(wǎng)格劃分方向(X/Y/Z)?)人機(jī)對話模塊1-3(問同步點(diǎn)標(biāo)號?)數(shù)組自動化劃分模塊2節(jié)點(diǎn)源程序“毛坯”生成模塊3尋找共享數(shù)據(jù)模塊4通信和同步命令生成模塊5通信和同步庫函數(shù)6節(jié)點(diǎn)正式源程序7實(shí)施例結(jié)合附圖
作詳細(xì)敘述如下按本發(fā)明的方法,為EP-860全互連多機(jī)系統(tǒng),設(shè)計了一個自動并行化工具軟件APF(Auto-Parallelizing Fortran),可將用戶的串行Fortran源程序自動轉(zhuǎn)換為并行源程序(各節(jié)點(diǎn)的源程序),再利用經(jīng)過擴(kuò)展庫函數(shù)的傳統(tǒng)串行Fortran編譯程序,編譯生成并行目標(biāo)程序(各節(jié)點(diǎn)的目標(biāo)程序)。APF成功地將一個51*42網(wǎng)格點(diǎn)的流場計算程序并行化,在EP-860全互連多機(jī)系統(tǒng)上運(yùn)行,8機(jī)的加速比為6.7,效率達(dá)到83.8%。(本發(fā)明主要適用于SPMD型計算程序的并行化,故采用SPMD型實(shí)用程序來測試。)APF由以下模塊組成(1)人機(jī)對話模塊1-1、1-2、1-3詢問節(jié)點(diǎn)機(jī)數(shù)n?按什么方向劃分網(wǎng)格點(diǎn)?同步點(diǎn)標(biāo)號?(2)數(shù)組自動劃分模塊2數(shù)組劃分的原則是,各節(jié)點(diǎn)的計算量要盡可能均衡,而通信量盡可能小。
例如,一個三維數(shù)組,在X,Y,Z三個方向上的最大維長為MX,MY,MZ,要分配給n個節(jié)點(diǎn)去計算,可在X方向上均勻劃分為n份,依次分配給n個節(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個節(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ù)表)記錄其名稱,屬性,寬度及共享方向等,供生成通信命令之用。同時,進(jìn)行數(shù)組范圍重定義。
(5)通信命令和同步命令生成模塊5各節(jié)點(diǎn)依次根據(jù)共享數(shù)據(jù)表,生成通信命令,并連同同步命令一起,插入其源程序“毛坯”同步點(diǎn)標(biāo)號所在的位置,生成節(jié)點(diǎn)正式源程序。
(6)擴(kuò)充FORTRAN編譯程序的通信和同步庫函數(shù)6根據(jù)機(jī)器的通信特點(diǎn)進(jìn)行設(shè)計。
要按數(shù)據(jù)、數(shù)組、定點(diǎn)、浮點(diǎn)、單精、雙精等不同格式,設(shè)計各種不同的通信庫函數(shù)。
本實(shí)施例的操作過程如下<pre listing-type="program-listing"><![CDATA[C>APF ff.f /*將Fortran串行源程序ff.f自動并行化*/  C>Input Number of Nodes8 /*回答節(jié)點(diǎn)數(shù)為8*/  C>Partition Direction(X/Y/Z)?X/*回答按X方向劃分網(wǎng)格點(diǎn)*/  C>Input Synchronization Point(Yes/No)? Y /*回答要輸入同步點(diǎn)*/  C>Input86 /*輸入同步點(diǎn)標(biāo)號為86*/  OK!/*自動生成各節(jié)點(diǎn)源程序ff80.f,ff81.f,ff82.f,ff83.f,ff84.f,  ff85.f,ff86.f,ff87.f*/  C>mf860n ff80.f-o ff80.out/*依次編譯節(jié)點(diǎn)源程序生成節(jié)點(diǎn)目標(biāo)程序   */mf860n ff81.f-o ff81.out mf860n ff82.f-o ff82.out mf860n ff83.f-o ff83.out mf860n ff84.f-o ff84.out mf860n ff85.f-o ff85.out mf860n ff86.f-o ff86.out mf860n ff87.f-o ff87.outC>edit ff8.cfg/*編輯配置加載程序*/ P-num8 /*定義節(jié)點(diǎn)數(shù)為8*/ Place 0 ff80.out/*ff80.out加載到節(jié)點(diǎn)機(jī)P0,依次類推*/ Place 1 ff81.out Place 2 ff82.out Place 3 ff83.out Place 4 ff84.out Place 5 ff85.out Place 6 ff86.out Place 7 ff87.outC>RUN860 ff8.cfg/*加載并運(yùn)行并行目標(biāo)程序,顯示計算結(jié)果*/]]></pre>
權(quán)利要求
1.本發(fā)明涉及一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法,所述的自動并行化方法可用于設(shè)計基于共享數(shù)據(jù)的程序自動并行化軟件工具,該軟件工具由人機(jī)對話模塊1-1、1-2、1-3,數(shù)組自動劃分模塊2,節(jié)點(diǎn)源程序“毛坯”生成模塊3,尋找共享數(shù)據(jù)模塊4,通信和同步命令生成模塊5,通信和同步庫函數(shù)6等組成,其技術(shù)特征在于所述的數(shù)組自動劃分模塊2能根據(jù)人機(jī)對話關(guān)于節(jié)點(diǎn)數(shù)和數(shù)組劃分方向的指示,找出最好的數(shù)組劃分方案,使各節(jié)點(diǎn)的計算量均衡,而通信量小;缺省時按X方向一維劃分。
2.根據(jù)權(quán)利要求1所述的一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法,其技術(shù)特征在于所述的節(jié)點(diǎn)源程序“毛坯”生成模塊3,是將原串行源程序拷貝n份,依次修改拷貝中有關(guān)循環(huán)程序相應(yīng)的上、下限,即生成各節(jié)點(diǎn)的源程序“毛坯”。
3.根據(jù)權(quán)利要求1所述的一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法,其技術(shù)特征在于所述的尋找共享數(shù)據(jù)模塊4,是通過分析節(jié)點(diǎn)源程序“毛坯”流程,掃描有關(guān)語句中數(shù)組下標(biāo),找出不屬本節(jié)點(diǎn)的數(shù)據(jù),即為與鄰近節(jié)點(diǎn)的共享數(shù)據(jù),用表(共享數(shù)據(jù)表)記錄其名稱,屬性,寬度及共享方向等,供生成通信命令之用。
4.根據(jù)權(quán)利要求1所述的一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)型程序自動并行化方法,其技術(shù)特征在于所述的通信命令和同步命令生成模塊5,是各節(jié)點(diǎn)依次根據(jù)共享數(shù)據(jù)表,生成通信命令,并連同同步命令一起,插入其源程序“毛坯”同步點(diǎn)標(biāo)號所在的位置,就形成節(jié)點(diǎn)正式源程序7。
全文摘要
本發(fā)明涉及一種基于共享數(shù)據(jù)的單程序多數(shù)據(jù)(SPMD)型串行程序自動并行化方法,屬于并行計算機(jī)領(lǐng)域,用于設(shè)計SPMD型串行程序的自動并行化軟件工具。本發(fā)明通過自動劃分?jǐn)?shù)據(jù),自動尋找共享數(shù)據(jù),自動生成通信和同步命令,來實(shí)現(xiàn)程序的自動并行化。不要求節(jié)點(diǎn)機(jī)有統(tǒng)一的存儲空間,節(jié)點(diǎn)機(jī)相對獨(dú)立,相互連線少,故可簡化硬件結(jié)構(gòu),對于中、大規(guī)模并行機(jī),效果尤為明顯。自動化程度和運(yùn)行效率高,一個實(shí)施例的實(shí)際并行效率達(dá)到83.8%。
文檔編號G06F9/00GK1180192SQ96118769
公開日1998年4月29日 申請日期1996年10月10日 優(yōu)先權(quán)日1996年10月10日
發(fā)明者康繼昌, 朱怡安, 肖驪, 馮百明 申請人:西北工業(yè)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
铁岭市| 昭觉县| 土默特右旗| 潞城市| 武宁县| 安阳市| 湘潭县| 彰武县| 开江县| 鸡西市| 滨海县| 东丽区| 荔波县| 临邑县| 肥乡县| 湖北省| 新昌县| 湘阴县| 巴里| 崇州市| 鹤山市| 白河县| 明星| 上虞市| 南和县| 海林市| 通山县| 高陵县| 伊宁市| 汝城县| 逊克县| 绍兴县| 建平县| 时尚| 宜丰县| 秦皇岛市| 高台县| 顺平县| 安龙县| 廉江市| 繁昌县|