專利名稱:并行程序通信模式的提取方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行程序通信模式分析領(lǐng)域,尤其涉及一種基于程序 切割技術(shù)的并行程序通信模式的提取方法及系統(tǒng)。
背景技術(shù):
通信性能是影響基于消息傳遞的并行程序性能的關(guān)鍵因素。并行
程序的通信模式可以通過三個方面衡量通信暈、通信的空間屬性和 通信的時間屬性。準(zhǔn)確的理解并行程序的通信模式,不但可以幫助優(yōu) 化并行程序的性能,而且可以輔助設(shè)計更好的通信子系統(tǒng)模塊,改進 基于重放技術(shù)的并行程序調(diào)試工具的開銷。
例如,英特爾公司的工具集MPIPP利用并行程序的通信模式, 優(yōu)化了程序在異構(gòu)網(wǎng)絡(luò)通信平臺上的性能,參見H. Chen, W. G. Chen, et al. MPIPP: An automatic profile-guided parallel process placement toolset for SMP clusters and multi-dusters (2006 ICS)。 MPIWIZ利用并 行程序通信局部性特征優(yōu)化了基于重放技術(shù)的并行程序調(diào)試工具的 開銷,參見R. Xue, X. Liu, et al. MPIWIZ: Subgroup reproducible replay of MPI applications (2009 PPoPP)。
并行程序的通信模式可以通過分析程序的通信記錄(Traces)獲 取。傳統(tǒng)的方法獲得程序的通信記錄主要是依賴基于插裝的方法,例 如ITC/ITA, KOJAK, TAU等。這些工具都需要插裝原始程序,然 后在一個全規(guī)模的并行系統(tǒng)上運行插裝后的程序,在執(zhí)行過程中收集 通信記錄。傳統(tǒng)收集通信記錄的方法具有以下缺點
(1)資源需求大大規(guī)模并行程序一般都需要很大的并行系統(tǒng) 才能運行起來,例如,NPB ( NAS parallel Benchmark,并行測試程序 程序)FT程序,測試程序的數(shù)據(jù)集包括七組,規(guī)模由小到大分別是S、W、 A、 B、 C、 D、 E, FT程序在數(shù)據(jù)集是E規(guī)模下,需要600GB 內(nèi)存才能運行起來;ASCI中SAGE程序需要2000-4000個處理器才 可以運行起來。由于傳統(tǒng)的方法需要執(zhí)行整個插裝程序,受限于資源 需求,無法在一個小規(guī)模的系統(tǒng)獲得所需的通信記錄。
(2)通信記錄收集時間長盡管傳統(tǒng)的方法在收集通信記錄過 程中并沒有引入顯著的開銷,但是它們需要執(zhí)行整個并行程序。例如, ASCI中SAGE在2000-4000個處理器上運行一次需要大約幾個月的 時間。因此,對于一個執(zhí)行時間非常長的程序,傳統(tǒng)的方法在獲取通 信記錄上是不可接受的,尤其是對一個程序需要反復(fù)收集不同模式下 的通信記錄。
總之,傳統(tǒng)的基于插裝的方法獲取并行程序的通信模式資源需求 大,需要的時間長,無法在一個小規(guī)模的系統(tǒng)上收集大規(guī)模的并行程 序的通信模式。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種并行程序通信模式的提取方法及系統(tǒng), 該方法及系統(tǒng)可減少收集大規(guī)模并行程序通信模式的資源需求和時 間開銷,實現(xiàn)在小規(guī)模系統(tǒng)上收集大規(guī)模并行程序通信模式的目標(biāo), 以克服現(xiàn)有技術(shù)存在的不足。
為實現(xiàn)上述目的本發(fā)明采用如下技術(shù)方案。
本發(fā)明一 種實施方式提供了一種并行程序通信模式的提取方法, 該方法包括步驟
51. 解析并行程序源碼,識別所述并行程序中的通信函數(shù)調(diào)用,
確定所述通信函數(shù)中的通信變量,并將所述通信變量放入設(shè)定集合;
52. 分析所述并行程序的控制流和數(shù)據(jù)流,收集所述并行程序的
數(shù)據(jù)依賴、控制依賴以及通信依賴信息;
53. 收集所述并行程序中的調(diào)用信息,構(gòu)建程序調(diào)用54. 通過基于LIVE變量傳播的切割算法對所述并行程序進行程序切割,獲得所述并行程序的程序切片;
55. 執(zhí)行所述程序切片,收集并輸出通信記錄;
56. 根據(jù)所述通信記錄,按照設(shè)定目標(biāo)獲取所述并行程序的通信 模式。
其中,步驟S1進一步包括
Sl.l按照預(yù)定義的函數(shù)名識別所述并行程序中所有的通信函
數(shù);
S1.2按照預(yù)定義的格式確定所述通信函數(shù)中的每個通信變量, 并將其放入所述設(shè)定集合。
其中,步驟S2進一步包括
S2.1通過數(shù)據(jù)流分析,對所述并行程序中每個變量的使用和定 義之間建立鏈接關(guān)系,即數(shù)據(jù)依賴,并將所述數(shù)據(jù)依賴信息保存于使 用-定義UD數(shù)據(jù)結(jié)構(gòu);
S2.2分析所述并行程序的控制分支,將所述并行程序中的控制 依賴轉(zhuǎn)化為所述數(shù)據(jù)依賴,并將轉(zhuǎn)化的數(shù)據(jù)依賴信息保存于使用-定 義UD數(shù)據(jù)結(jié)構(gòu);
S2.3對所述并行程序的所有通信調(diào)用進行配對分析,對所有發(fā) 送和接收的通信操作建立鏈接關(guān)系,即通信依賴,并將所述通信依賴 信息保存于消息依賴MD數(shù)據(jù)結(jié)構(gòu)。
其中,步驟S3進一步包括
S3.1記錄所述并行程序中每個函數(shù)調(diào)用點的被調(diào)用函數(shù)名稱以 及需要傳遞的參數(shù)變量;
S3.2根據(jù)所述記錄的信息,構(gòu)建程序調(diào)用圖。
其中,步驟S4進一步包括
S4.1將所述通信變量放入LIVE變量集合;
S4.2自頂向下遍歷所述程序調(diào)用圖的每個節(jié)點函數(shù),對所述每 個節(jié)點函數(shù),若存在所述設(shè)定集合中的通信變量通過所述數(shù)據(jù)依賴、控制依賴以及通信依賴關(guān)聯(lián)的變量,則將相應(yīng)關(guān)聯(lián)的變量放入所述
LIVE變量集合;
S4.3自底向上遍歷所述程序調(diào)用圖的每個節(jié)點函數(shù),對所述每 個節(jié)點函數(shù),若存在所述設(shè)定集合中的通信變量通過所述數(shù)據(jù)依賴、 控制依賴以及通信依賴關(guān)聯(lián)的變量,則將相應(yīng)關(guān)聯(lián)的變量放入所述 LIVE變量集合;
S4.4若所述LIVE變量集合保持不變,則執(zhí)行步驟S4.5,否則返 回步驟S4,2;
S4.5標(biāo)記所述并行程序中所有所述LIVE變量集合中變量定義 的語句;
S4.6對所述并行程序中的所有接收語句,標(biāo)記接收變量在所述 LIVE變量集合中的通信語句,并根據(jù)所述通信依賴信息標(biāo)記對應(yīng)的 發(fā)送函數(shù);
S4.7刪除所述并行程序中未標(biāo)記的非通信語句,及未在所述 LIVE變量集合中的變量,得到所述并行程序的程序切片。 其中,步驟S5進一步包括
S5.1記錄所述標(biāo)記的通信語句在實際傳輸通信語句中的消息內(nèi) 容,并記錄消息類型、消息大小、消息的源和目的地址;
S5.2記錄所述未標(biāo)記的通信語句的消息類型、消息大小、消息 的源和目的地址。
本發(fā)明另一實施方式還提供了一種并行程序通信模式的提取系 統(tǒng),該系統(tǒng)包括變量確定單元,用于解析并行程序源碼,識別所述 并行程序中的通信函數(shù)調(diào)用,確定所述通信函數(shù)中的通信變量,并將 所述通信變量放入設(shè)定集合;分析單元,用于分析所述并行程序的控 制流和數(shù)據(jù)流,收集程序的數(shù)據(jù)依賴、控制依賴以及通信依賴信息; 調(diào)用圖構(gòu)建單元,用于收集所述并行程序中的調(diào)用信息,構(gòu)建程序調(diào) 用圖;程序切割單元,用于通過基于LIVE變量傳播的切割算法對所述并行程序進行程序切割,獲得所述并行程序的程序切片;執(zhí)行單元,
用于執(zhí)行所述程序切片,收集并輸出通信記錄;提取單元,用于根據(jù)所述通信記錄,按照設(shè)定目標(biāo)獲取所述并行程序的通信模式。有益效果
使用本發(fā)明方法及系統(tǒng)提取并行程序的通信模式,由于通過靜態(tài)分析技術(shù)一一程序切割,刪除了程序中不相關(guān)的計算語句和內(nèi)存分配語句,獲得的程序切片在執(zhí)行過程中需要很少的計算資源和內(nèi)存資源,園此資源霜求??;由于不需要執(zhí)行^NHi"算代碼和通信操作,因此,相比傳統(tǒng)的基于插裝的通信記錄收集方法整個收集通信記錄的時間可以大大減少。
圖l為依照本發(fā)明一種實施方式的并行程序通信模式的提取方法流程圖2為依照本發(fā)明一種實施方式的并行程序通信模式的提取方法的在編譯器中的實現(xiàn)模塊;
圖3為依照本發(fā)明一種實施方式的并行程序通信模式的提取方法對測試程序的內(nèi)存需求;
圖4為BT程序的原始執(zhí)行時間與依照本發(fā)明一種實施方式的并行程序通信模式的提取方法的通信記錄收集時間;
圖5為CG程序的原始執(zhí)行時間與依照本發(fā)明一種實施方式的并
行程序通信模式的提取方法的通信記錄收集時間;
圖6為EP程序的原始執(zhí)行時間與依照本發(fā)明一種實施方式的并行
程序通信模式的提取方法的通信記錄收集時間;
圖7為FT程序的原始執(zhí)行時間與依照本發(fā)明 一種實施方式的并行
程序通信模式的提取方法的通信記錄收集時間;
圖8為LU程序的原始執(zhí)行時間與依照本發(fā)明 一種實施方式的并
行程序通信模式的提取方法的通信記錄收集時間;圖9為MG程序的原始執(zhí)行時間與依照本發(fā)明一種實施方式的并行程序通信模式的提取方法的通信記錄收集時間;
圖10為SP程序的原始執(zhí)行時間與依照本發(fā)明一種實施方式的并行程序通信模式的提取方法的通信記錄收集時間;
圖11為Sweep3D程序的原始執(zhí)行時間與依照本發(fā)明 一種實施方式的并行程序通信模式的提取方法的通信記錄收集時間;
圖12為依照本發(fā)明一種實施方式的并行程序通信模式的提取系
具體實施例方式
本發(fā)明提出的并行程序通信模式的提取方法及系統(tǒng),結(jié)合附圖和實施例說明如下。
本發(fā)明的方法是基于對并行程序的一個重要觀察并行程序中大部分的計算代碼和通信內(nèi)容都與程序的通信量和通信空間兩個屬性無關(guān),刪除這些計算代碼和通信操作并不影響程序?qū)嶋H的通信模式。因此,本發(fā)明的方法通過靜態(tài)分析技術(shù)收集程序的數(shù)據(jù)依賴、控制依賴以及通信依賴,在編譯時刪除程序中與通信模式無關(guān)的計算語句和內(nèi)存分配語句,得到原始程序的一個程序切片(Program Slice);然后在 一個小規(guī)模系統(tǒng)上執(zhí)行這一程序切片獲得程序的通信記錄,從程序的通信記錄中提取并行程序的通信模式。
如圖1所示,依照本發(fā)明一種實施方式的并行程序通信模式的提取方法包括以下步驟
51. 解析并行程序源碼,識別并行程序中的通信函數(shù)調(diào)用,確定通信函數(shù)中的通信變量,并將上述通信變量放入設(shè)定集合C;
52. 分析并行程序的控制流和數(shù)據(jù)流,收集程序的數(shù)據(jù)依賴、控制依賴以及通信依賴信息;
53. 收集并行程序中的調(diào)用信息,構(gòu)建程序調(diào)用54. 通過基于LIVE變量傳播的切割算法對并行程序進行程序切割,獲得并輸出行程序的一個程序切片;
55. 在一個小規(guī)模的并行計算機上執(zhí)行上述程序切片,收集并輸
出程序的通信記錄;
56. 根據(jù)步驟S5得到的通信記錄,按照設(shè)定目標(biāo)獲取并行程序
的通信模式。
其中,本發(fā)明的方法用到的關(guān)鍵定義如下
下表給出了 MPI_Send函數(shù)中的通信變量,其中標(biāo)記COMM的變量都是通信變量,包招count, type, dest, tag和comm。 count和type決定了消息的大小,dest和comm決定了消息的目的地址。
MPI一Send (buf, count, type, dest, tag, comm)buf:發(fā)送緩沖區(qū)[COMM] count:發(fā)送緩沖區(qū)的消息個數(shù)[COMM] type:發(fā)送的數(shù)據(jù)類型[COMM] dest:發(fā)送的目的地址[COMM] tag :發(fā)送的標(biāo)簽[COMM] comm :通信域
在一個并行程序中,通信變量(COMM Variable )指通信函數(shù)中的某些調(diào)用參數(shù),這些調(diào)用參數(shù)具有如下特征它們的值將直接決定并行程序的通信模式;UD鏈關(guān)聯(lián)每個變量的使用(Use)到它的所有定義(Define),在使用和定義之間沒有其他的定義語句出現(xiàn),UD鏈用來保存程序中的數(shù)據(jù)依賴關(guān)系;通信依賴(CommunicationDependence):進程i中的通信語句x依賴于進程j中的通信語句j,當(dāng)且僅當(dāng)
(1) 進程j通過顯示的通信函數(shù)發(fā)送一個消息給進程i;
(2) 語句x是一個通信接收操作,語句y是一個通信發(fā)送操作,且x和y不是相同的語句。
通信依賴是并行程序中固有的一種依賴關(guān)系,通信依賴的確定需要匹配程序中所有的通信調(diào)用語句
LIVE變量 一個變量是LIVE變量,當(dāng)且僅當(dāng),它的值改變可以通過程序的數(shù)據(jù)依賴、控制依賴和通信依賴的傳播影響到任何通信變量的值。
步驟S1進一步包括
Sl.l編譯并行程序碼源,在編譯器的前端按照預(yù)定義的函數(shù)名識別并行程序中所有的通信函數(shù);
S1.2對步驟Sl.l中識別的通信函數(shù),按照預(yù)定義的格式,確定每個通信變量,并將其放入設(shè)定集合C中。
飾S2^—
S2.1通過編譯器的數(shù)據(jù)流分析,對并行程序中每個變量的使用和定義之間建立一個鏈接,即通過變量的使用可以跟蹤到期對應(yīng)的定義語句,即數(shù)據(jù)依賴,上述變量的使用依賴于上述變量的定義,將這些數(shù)據(jù)依賴信息保存于使用-定義(Use-Defme,UD )數(shù)據(jù)結(jié)構(gòu);
S2.2在編譯器中分析并行程序的控制分支,控制語句包含的變量依賴控制語句本身,將并行程序中的控制依賴轉(zhuǎn)化為步驟S2.1所述的數(shù)據(jù)依賴,并將其保存于UD數(shù)據(jù)結(jié)構(gòu);
S2.3對并行程序的所有通信調(diào)用進行配對分析,對所有發(fā)送和接收的通信操作建立鏈接關(guān)系,通信的接收變量依賴通信的發(fā)送變量,將這種通信依賴關(guān)系信息保存于消息依賴(MessageDependence,
MD)數(shù)據(jù)結(jié)構(gòu)。
步驟S3進一步包括
S3.1記錄并行程序中每個函數(shù)調(diào)用點的被調(diào)用函數(shù)名稱以及需要傳遞的參數(shù)變量;
S3.2根據(jù)步驟S3.1記錄的信息,構(gòu)建一個程序調(diào)用圖(ProgramCallGmph, PCG),調(diào)用圖的每個節(jié)點是程序的一個函數(shù)。
步驟S4進一步包括
S4.1初始化LIVE變量集合為空,將步驟SL2得到的通信變量放入LIVE變量集合;S4.2自頂向下遍歷步驟S3.2得到的程序調(diào)用圖的每個節(jié)點函數(shù)N,對每個節(jié)點函數(shù)N,若存在設(shè)定集合C中的通信變量通過步驟S2.1、 S2.2、 S2.3的數(shù)據(jù)依賴、控制依賴以及通信依賴關(guān)聯(lián)的變量,則將相應(yīng)關(guān)聯(lián)的變量放入步驟S4.1所述的LIVE變量集合;
S4.3自底向上遍歷步驟83.2得到的程序調(diào)用圖的每個節(jié)點函數(shù)N,對每個節(jié)點函數(shù)N,若存在設(shè)定集合C中的通信變量通過步驟S2.1、 S2.2、 S2.3的數(shù)據(jù)依賴、控制依賴以及通信依賴關(guān)聯(lián)的變量,,相應(yīng)關(guān)聯(lián)的變量放入m LIVE
S4.4若LIVE變量集合保持不變,則執(zhí)行步驟S4.5,否則返回步驟S4.2;
S4.5標(biāo)記并行程序中所有對步驟S4.1所述LIVE變量集合中變量定義的語句;
S4.6對并行程序中的所有接收語句,若接收變量在步驟S4.1所述LIVE變量集合中,則標(biāo)記該通信語句,并根據(jù)步驟S2.3所述通信
依賴信息標(biāo)記對應(yīng)的發(fā)送函數(shù);
S4.7刪除并行程序中未在步驟S4.5、 S4.6中標(biāo)記的非通信語句,及未在所述LIVE變量集合中的變量,得到并行程序的程序切片。
本發(fā)明方法步驟S4所提供的基于LIVE變量傳播的程序切割算法具有如下特點
(1) 基于LIVE變量的程序分析定義了 LIVE變量來描述程序
中能通過數(shù)據(jù)依賴、控制依賴和通信依賴的傳遞能夠影響程序通信模式的變量。其中通信依賴關(guān)系是并行程序特有的依賴關(guān)系,傳統(tǒng)的串行程序分析并不涉及通信依賴。本發(fā)明的切割算法的目標(biāo)是明確程序中所有的LIVE變量,以及影響通信變量的程序計算語句和通信操作語句。
(2) 支持過程間的程序切割釆用自頂向下和自底向上兩個方向的迭代遍歷分析,跟蹤程序中通過全局變量和參數(shù)傳遞傳播的LIVE變量。通過求解一個過程間的數(shù)據(jù)流方程,計算不同過程間所
有的LIVE變量。
根據(jù)本發(fā)明的方法,實現(xiàn)了基于LIVE變量的切割算法在 一 個產(chǎn)品級的編譯器,Open64。如圖2所示,切割算法主要實現(xiàn)在Open64的前優(yōu)化(PreOPT)及過程間分析和優(yōu)化兩個模塊中。切割算法支持過程間的LIVE變量分析,找出所有影響程序通信模式的計算語句和通信操作,并標(biāo)記相應(yīng)通信操作。
麟,錄85進一###:
S5.1記錄步驟S4.8中標(biāo)記的通信語句在實際的網(wǎng)絡(luò)傳輸通信語句中的消息內(nèi)容,并記錄以下信息消息類型、消息大小、消息的源和目的地址;
S5.2對步驟S4.8中未標(biāo)記的通信語句,不需要在網(wǎng)絡(luò)傳輸通信語句中的消息內(nèi)容,只需記錄消息類型、消息大小、消息的源和目的地址。
用7個NPB: BT, CG, EP, FT, LU, MG, SP和ASCI Sweep3D
驗證了本發(fā)明的方法,NPB程序的輸入數(shù)據(jù)集是D規(guī)模。實驗結(jié)果顯示本發(fā)明方法能有效減少程序的計算和內(nèi)存需求,對大部分程序,程序的資源需求減少了 l-2個數(shù)量級。本發(fā)明方法可以在一個32個核心的小規(guī)模系統(tǒng)上,成功的收集了直到512個進程的D規(guī)模NPB程序和Sweep3D ( 150*150*150)的通信記錄。由于內(nèi)存的限制,傳
統(tǒng)的基于插裝的方法無法在這么小的系統(tǒng)上收集程序的通信記錄。
圖3給出了 8個測試程序在不同進程下,本發(fā)明方法所需的內(nèi)存大小。其中NULL表示一個沒有計算和通信操作的并行程序,它給出一個并行程序所需內(nèi)存的下限。AVG表示8個測試程序在本發(fā)明方法下收集通信記錄消耗內(nèi)存的算術(shù)平均值。從圖中可以看出,本發(fā)明方法在收集通信記錄過程中需要的內(nèi)存資源非常少。例如,在512進程下,對于EP和CG程序,本發(fā)明方法只需要1.11GB和1.22GB內(nèi)存大小,NULL程序需要1.04GB內(nèi)存。
圖4-圖11給出8個測試程序原始執(zhí)行時間和本發(fā)明方法收集通 信記錄時間的對比,白色框是程序的原始執(zhí)行時間,滯斜線框是本發(fā) 明方法收集通信記錄的時間(圖5、6中記錄時間太短斜線框未顯示)。 可以看出本發(fā)明方法在收集通信記錄過程中,相比原始程序,需要很 小的時間開銷。例如,對BT程序,在64進程下,原始程序需要1175.65 秒的執(zhí)行時間,而本發(fā)明方法由于刪除大部分和通信模式不相關(guān)的計
#ir *ftif%, 1^cw^ (T2s秒t可以完成通me錄的收集。
如圖12所示,依照本發(fā)明一種實施方式的并行程序通信模式的 提取系統(tǒng)主要包括兩個關(guān)鍵系統(tǒng)模塊編譯模塊和運行時模塊。
編譯模塊100分成兩個階段,過程內(nèi)分析單元和過程間分析。在 過程內(nèi)分析中
首先,變量確認單元101解析并行程序源碼,識別并行程序中的 通信函數(shù)調(diào)用,確定通信函數(shù)中的通信變量,并將上述通信變量放入 設(shè)定集合C;分析單元102分析并行程序的控制流和數(shù)據(jù)流,收集程 序的數(shù)據(jù)依賴、控制依賴以及通信依賴信息。
在過程間分析
調(diào)用圖構(gòu)建單元103收集并行程序中的調(diào)用信息,構(gòu)建程序的調(diào) 用圖;程序切割單元104通過基于LIVE變量傳播的切割算法刪除程 序中不相關(guān)的計算語句和內(nèi)存分配語句,并標(biāo)記相應(yīng)的通信操作語 句,編譯模塊100獲得并輸出并行程序的一個程序切片。
運行時模塊200:編譯模塊100得到的程序切片不能直接在并行 系統(tǒng)上運行,需要一個運行時模塊200的執(zhí)行參與。運行時模塊200 的執(zhí)行單元201提供了一個定制的通信插裝庫,程序切片鏈接插裝 庫,得到可執(zhí)行代碼,然后在一個小規(guī)模系統(tǒng)上執(zhí)行;根據(jù)編譯時標(biāo) 記的信息,決定在執(zhí)行過程中是否真正在網(wǎng)絡(luò)上傳輸程序中的消息內(nèi)容;還負責(zé)記錄通信模式相關(guān)的信息,包括消息類型、消息大下、消
息源和目的地址等,保存在本地的日志文件中;最終提取單元202根 據(jù)執(zhí)行單元201的通信記錄,按照設(shè)定目標(biāo)獲取并行程序的通信模 式。
以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān) 技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下, 還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明 的范疇,本發(fā)明的專利保護范茵應(yīng)由權(quán)杯要求限定。
權(quán)利要求
1、一種并行程序通信模式的提取方法,該方法包括步驟S1.解析并行程序源碼,識別所述并行程序中的通信函數(shù)調(diào)用,確定所述通信函數(shù)中的通信變量,并將所述通信變量放入設(shè)定集合;S2.分析所述并行程序的控制流和數(shù)據(jù)流,收集所述并行程序的數(shù)據(jù)依賴、控制依賴以及通信依賴信息;S3.收集所述并行程序中的調(diào)用信息,構(gòu)建程序調(diào)用圖;S4.通過基于LIVE變量傳播的切割算法對所述并行程序進行程序切割,獲得所述并行程序的程序切片;S5.執(zhí)行所述程序切片,收集并輸出通信記錄;S6.根據(jù)所述通信記錄,按照設(shè)定目標(biāo)獲取所述并行程序的通信模式。
2、 如權(quán)利要求1所述的并行程序通信模式的提取方法,其特征 在于,步驟Sl進一步包括Sl.l按照預(yù)定義的函數(shù)名識別所述并行程序中所有的通信函數(shù);S1.2按照預(yù)定義的格式確定所述通信函數(shù)中的每個通信變量, 并將其放入所述設(shè)定集合。
3、 如權(quán)利要求1所述的并行程序通信模式的提取方法,其特征 在于,步驟S2進一步包括S2.1通過數(shù)據(jù)流分析,對所述并行程序中每個變量的使用和定 義之間建立鏈接關(guān)系,即數(shù)據(jù)依賴,并將所述數(shù)據(jù)依賴信息保存于使 用-定義UD數(shù)據(jù)結(jié)構(gòu);S2.2分析所述并行程序的控制分支,將所述并行程序中的控制 依賴轉(zhuǎn)化為所述數(shù)據(jù)依賴,并將轉(zhuǎn)化的數(shù)據(jù)依賴信息保存于使用-定 義UD數(shù)據(jù)結(jié)構(gòu);S2.3對所述并行程序的所有通信調(diào)用進行配對分析,對所有發(fā)送和接收的通信操作建立鏈接關(guān)系,即通信依賴,并將所述通信依賴 信息保存于消息依賴MD數(shù)據(jù)結(jié)構(gòu)。
4、 如權(quán)利要求1所述的并行程序通信模式的提取方法,其特征在于,步驟S3進一步包括S3.1記錄所述并行程序中每個函數(shù)調(diào)用點的被調(diào)用函數(shù)名稱以 及需要傳遞的參數(shù)變量;S3.2根據(jù)所述記錄的信息,構(gòu)建程序調(diào)用圖。
5、 如權(quán)利要求1所述的并行程序通信模式的提取方法,其特征 在于,步驟S4進一步包括S4.1將所述通信變量放入LIVE變量集合;S4.2自頂向下遍歷所述程序調(diào)用圖的每個節(jié)點函數(shù),對所述每 個節(jié)點函數(shù),若存在所述設(shè)定集合中的通信變量通過所述數(shù)據(jù)依賴、 控制依賴以及通信依賴關(guān)聯(lián)的變量,則將相應(yīng)關(guān)聯(lián)的變量放入所述 LIVE變量集合;S4.3自底向上遍歷所述程序調(diào)用圖的每個節(jié)點函數(shù),對所述每 個節(jié)點函數(shù),若存在所述設(shè)定集合中的通信變量通過所述數(shù)據(jù)依賴、 控制依賴以及通信依賴關(guān)聯(lián)的變量,則將相應(yīng)關(guān)聯(lián)的變量放入所述 LIVE變量集合;S4.4若所述LIVE變量集合保持不變,則執(zhí)行步驟S4.5,否則返 回步驟S4,2;S4.5標(biāo)記所述并行程序中所有所述LIVE變量集合中變量定義 的語句;S4.6對所述并行程序中的所有接收語句,標(biāo)記接收變量在所述 LIVE變量集合中的通信語句,并根據(jù)所述通信依賴信息標(biāo)記對應(yīng)的 發(fā)送函數(shù);S4.7刪除所述并行程序中未標(biāo)記的非通信語句,及未在所述 LIVE變量集合中的變量,得到所述并行程序的程序切片。
6、 如權(quán)利要求3或5所述的并行程序通信模式的提取方法,其 特征在于,步驟S5進一步包括S5.1記錄所述標(biāo)記的通信語句在實際傳輸通信語句中的消息內(nèi) 容,并記錄消息類型、消息大小、消息的源和目的地址;S5.2記錄所述未標(biāo)記的通信語句的消息類型、消息大小、消息 的源和目的地址。
7、 一種并行程序通信模式的提取系統(tǒng),該系統(tǒng)包括 變量確定單元,用于解析并行程序源碼,識別所述并行程序中的通信函數(shù)調(diào)用,確定所述通信函數(shù)中的通信變量,并將所述通信變量 放入設(shè)定集合;分析單元,用于分析所述并行程序的控制流和數(shù)據(jù)流,收集程序的數(shù)據(jù)依賴、控制依賴以及通信依賴信息;調(diào)用圖構(gòu)建單元,用于收集所述并行程序中的調(diào)用信息,構(gòu)建程序調(diào)用圖;程序切割單元,用于通過基于LIVE變量傳播的切割算法對所述 并行程序進行程序切割,獲得所述并行程序的程序切片;執(zhí)行單元,用于執(zhí)行所述程序切片,收集并輸出通信記錄; 提取單元,用于根據(jù)所述通信記錄,按照設(shè)定目標(biāo)獲取所述并行 程序的通信模式。
全文摘要
本發(fā)明涉及一種并行程序通信模式的提取方法及系統(tǒng),該方法包括步驟解析并行程序源碼,識別并行程序中的通信函數(shù)調(diào)用,確定所述通信函數(shù)中的通信變量,并將所述通信變量放入設(shè)定集合;分析并行程序的控制流和數(shù)據(jù)流,收集并行程序的數(shù)據(jù)依賴、控制依賴以及通信依賴信息;收集并行程序中的調(diào)用信息,構(gòu)建程序調(diào)用圖;通過基于LIVE變量傳播的切割算法對并行程序進行程序切割,獲得并行程序的程序切片;執(zhí)行所述程序切片,收集并輸出通信記錄;根據(jù)所述通信記錄,按照設(shè)定目標(biāo)獲取所述并行程序的通信模式。本發(fā)明的方法及系統(tǒng)可減少收集大規(guī)模并行程序通信模式的資源需求和時間開銷,實現(xiàn)在小規(guī)模系統(tǒng)上收集大規(guī)模并行程序通信模式的目標(biāo)。
文檔編號G06F9/46GK101661409SQ20091009306
公開日2010年3月3日 申請日期2009年9月22日 優(yōu)先權(quán)日2009年9月22日
發(fā)明者何江舟, 盛田維, 翟季冬, 鄭緯民, 陳文光 申請人:清華大學(xué)