專利名稱:一種串行與并行模擬相結合的并行計算機系統(tǒng)性能模擬方法
技術領域:
本發(fā)明涉及并行計算機系統(tǒng)的性能模擬方法,特別是以模擬技術為手段,對并行 計算機系統(tǒng)上單程序多數(shù)據(jù)(Single Program Multiple Data, SPMD)模式消息傳遞程序的 性能(即運行時間)進行模擬評估的方法。
背景技術:
計算機體系結構模擬軟件(簡稱模擬器)是一類可對計算機系統(tǒng)行為進行模擬的 軟件,它們一般是可配置的,可以對目標計算機系統(tǒng)的體系結構參數(shù)或技術方案進行配置, 在現(xiàn)有計算機(稱為宿主機)上模擬運行Benchmark程序(包括來自于真實應用領域的程 序或人工合成的程序等),獲得目標計算機系統(tǒng)在給定配置下的性能數(shù)據(jù)。在新計算機系統(tǒng) 研制過程中,基于模擬器軟件,在目標系統(tǒng)可用前就對其性能進行評估,分析系統(tǒng)性能瓶頸 或者找到最優(yōu)配置,從而對系統(tǒng)進行針對性的改進。此外,由于新的計算機(特別是大規(guī)模 并行計算機)系統(tǒng)資源稀缺,運行成本高,很多情況下并不能直接在新計算機上直接進行 程序開發(fā),而是在其它計算機上開發(fā)好程序之后再將其部署到新計算機上。為了在新計算 機上獲得高的運行效率,開發(fā)過程中需要對程序進行深入的性能調(diào)優(yōu),通過模擬技術對程 序在目標計算機系統(tǒng)上的性能進行評估,可有效指導其性能優(yōu)化。 模擬器采用軟件來模擬硬件的行為,時間開銷很大,通常比在真實目標機上運行 相同Benchmark程序的時間大幾個數(shù)量級,并行計算機系統(tǒng)的模擬工作量更為巨大。美國 倫斯勒理工學院的Christopher D. Carothers舉了一個例子(Christopher D. Carothers, ROSS :Parallel Discrete—Event Simulations on Near Petascale Supercomputers, charmworkshop,2009):假設要對一個萬萬億次超級計算機上的MPI程序進行模擬,假定程 序只發(fā)揮機器峰值性能的10%,即每秒1千萬億次浮點運算,每個浮點操作需要2字節(jié)數(shù) 據(jù),其中1%需要通過通信獲得,每秒共2TB數(shù)據(jù)通信,設MPI消息大小為1K,因此每秒產(chǎn)生 20億個MPI通信,如果每個消息傳輸要經(jīng)過8跳,則每秒產(chǎn)生160億個事件,運行1000秒產(chǎn) 生16萬億個事件,以目前的串行離散事件模擬器10萬個事件每秒的模擬速度,需要5年多 時間才能模擬完。串行不可能滿足模擬容量和時效性需求,只有利用并行計算機系統(tǒng)作為 宿主機平臺進行并行模擬,才有可能滿足計算能力與存儲容量的需求。因此,目前已經(jīng)出現(xiàn) 了一些基于并行宿主機的并行模擬器原型系統(tǒng),如WWTII (威斯康辛大學)、RSIM(萊斯大學 與伊利諾伊大學等)、LAPSE (NASA) 、MPI-Sim(加州大學洛杉磯分校)、BigSim(伊利諾伊大 學厄貝納香檳分校)、BGLsim(IBM公司與伊利諾伊大學厄貝納香檳分校)、SILAS (德國尤利 西超級計算中心)等的并行模擬器原型系統(tǒng)。 即使這樣,目前對并行計算機系統(tǒng)上并行應用程序的性能模擬預測仍然面臨很大 的困難,具體表現(xiàn)在 (1)并行模擬器中缺乏準確的計算性能模擬模塊。并行計算機系統(tǒng)上并行程序性 能受處理器(含片上Cache存儲層次)、互連網(wǎng)絡等眾多因素交互影響,準確的性能模擬非
4常困難。除BGLSim宣稱可實現(xiàn)近似周期精確的模擬外,現(xiàn)有并行模擬器基本上都沒有使用 周期精確的處理器模擬模塊。例如MPI-Sim和BigSim中,沒有對處理器性能進行指令級級 別的詳細模擬模型,而只采用簡單的宿主機處理器和目標機處理器性能的縮放因子的方式 進行性能估計。據(jù)我們在一個集群系統(tǒng)上對BigSim的測試發(fā)現(xiàn),其計算性能預測誤差可達 到80%以上。 (2)可配置性差,適應性差。已有的模擬器通常針對具體目標系統(tǒng)進行設計,如果 系統(tǒng)體系結構部件發(fā)生改變,例如采用了新型處理器或網(wǎng)絡互連設備,則無法適應。
(3)模擬開銷仍然很大。模擬性能仍然是制約模擬器應用的主要障礙之一,由于模 擬開銷大,使得并行模擬的運行環(huán)境條件難以滿足。 由于上述原因,如何從模擬器結構設計和模擬過程設計方面來提高模擬器的體 系結構適應性、模擬效率成為研究界面臨的重要問題。目前的并行模擬器主要側重于網(wǎng) 絡通信性能的模擬,例如BigSim、 MPI-Sim都有可配置的網(wǎng)絡模擬模塊,具有詳細的網(wǎng)絡 模擬模型,精度較高,且適應多種網(wǎng)絡類型的模擬,而在處理器模擬方面,它們都僅提供 非常粗略的性能模型。另一方面,目前針對處理器模擬已有很多較好的串行模擬器,例 如SimpleScalar(威斯康辛大學)、SimOS(斯坦福大學)、SimNow(AMD公司)、GEMS(威 斯康辛大學)、SimOS-Goodson(中科院計算所)等的串行模擬器都可以做到周期精確的 模擬。此外,目前并行計算領域采用消息傳遞方式編程的科學計算程序多數(shù)是SPMD模式 的禾呈序(Daniel Chavarr' iaMiranda等,Topology-aware Tile Mapping forClusters of SMPs, ACM International Conference on Computing Frontiers, 2006),在運行過
程中,不同進程處理一個大數(shù)據(jù)集中不同部分的數(shù)據(jù),它們執(zhí)行的計算基本相同,因此 只要對一個進程的計算性能(主要與處理器相關)進行模擬就可獲得所有進程的計算
性會g數(shù)據(jù)。而文獻(Yoon_Ju Lee and Mary Hall, A Code Isolator -Isolating Code Fragmentsfrom Large Programs,International Workshop on Languages and Compilers for ParallelComputing,2004)報告了他們從大的科學與工程計算程序中分離出代碼片 段,將各個代碼片段封裝為可獨立執(zhí)行的代碼,其性能可反映該代碼片段在完整程序中的 性能,最后將針對分離后的代碼片斷進行經(jīng)驗性能優(yōu)化(empirical optimization)的最佳 方案用于完整程序中對應代碼片斷的性能優(yōu)化。這說明并行程序中的計算代碼段可以被分 離出來,從而可采用串行模擬器對其進行性能模擬。因此,可以結合利用并行模擬和串行模 擬兩者的優(yōu)勢來進行SPMD模式消息傳遞并行程序的性能模擬。 根據(jù)專利文獻檢索,以往的專利與文獻中尚未見到在并行計算機系統(tǒng)上并行應用 程序性能模擬中將并行模擬和串行模擬結合進行兩階段性能模擬的報道。只有一些關于并 行模擬器構造方面的方法申請了專利,如專利號分別為5956261、5442772的美國專利、專 利號200710304653. 9的中國專利。
發(fā)明內(nèi)容
本發(fā)明要解決的技術問題是在對并行計算機系統(tǒng)上SPMD模式消息傳遞并行程 序的性能進行模擬時,提出一種串行模擬和并行模擬相結合的兩階段性能模擬方法,通過 代碼分離從消息傳遞程序分離出計算代碼段,利用串行模擬器模擬處理器上計算代碼段的 執(zhí)行時間,通過代碼標記方法將計算代碼段執(zhí)行時間標記到消息傳遞程序中,利用并行模擬器模擬網(wǎng)絡通信的執(zhí)行時間,并結合計算代碼段執(zhí)行時間,預測總的執(zhí)行時間,既提高性
能模擬準確性,又可靈活適應含不同處理器和網(wǎng)絡結構的并行機系統(tǒng)的模擬。 本發(fā)明技術方案如下 第一步,從并行程序源代碼(由一系列通信語句與計算代碼段構成)中分離出各 個計算代碼段,計算代碼段是一段連續(xù)的程序代碼,其中包含一系列計算語句或者函數(shù)調(diào) 用,但不包括通信語句,除了位于程序開始或結束位置的計算代碼段之外,每個計算代碼段 的前后均與通信語句相鄰,將各計算機代碼段生成獨立的串行源程序文件,并將串行源程 序文件封裝為可獨立執(zhí)行的串行源程序。具體過程如下 1. 1對并行程序源代碼進行規(guī)范化處理。從并行程序的主函數(shù)代碼開始處一直 向后掃描到結束處,對遇到的每一個過程或函數(shù)(這里的過程或函數(shù)不包括系統(tǒng)過程或函 數(shù),為描述方便,以下統(tǒng)稱函數(shù)),如果其中包含通信語句,則將該函數(shù)內(nèi)聯(lián)到主函數(shù)中,即 將主函數(shù)中對該函數(shù)的調(diào)用表達式用該函數(shù)的函數(shù)體來替換;如果該函數(shù)中還調(diào)用其它函 數(shù),則還要檢查這些被調(diào)用的函數(shù)是否包含通信語句,如果被調(diào)用的函數(shù)包含通信語句就 先將它們內(nèi)聯(lián)到被調(diào)用處。這一規(guī)范化處理步驟是遞歸的,直到檢查到原子函數(shù)(即不調(diào) 用其它函數(shù)的函數(shù))。例如,如果并行程序的主函數(shù)A調(diào)用函數(shù)B,函數(shù)B又調(diào)用函數(shù)C,函 數(shù)C中包含通信語句,則先要在函數(shù)B中將函數(shù)C內(nèi)聯(lián),然后在主函數(shù)A中將函數(shù)B內(nèi)聯(lián)。
經(jīng)過規(guī)范化處理,保證并行程序的主函數(shù)中調(diào)用的函數(shù)或其子函數(shù)均不包含通信 語句。 1. 2將文件指針定位在并行程序的主函數(shù)代碼的開始處,初始化變量k為1。
1. 3從當前文件指針位置開始,定位一個新的計算代碼段。 1. 4生成一個編號為k的串行源程序文件,將當前找到的計算代碼段放到其中,并
將該串行源程序文件封裝為一個可獨立執(zhí)行的串行源程序。具體方法是 a)創(chuàng)建一個新的源程序,將計算代碼段放在一個空的主函數(shù)中。 b)如果計算代碼段中包括對過程或函數(shù)的調(diào)用,則將該函數(shù)在調(diào)用處進行內(nèi)聯(lián)。 c)如果當前串行源程序中存在未初始化(即尚未被賦值)的變量,則在代碼開始
處增加對這些變量進行初始化的代碼,例如對單個的浮點變量和整數(shù)變量可采用隨機數(shù)來
初始化,對數(shù)組可以使用嵌套循環(huán)來初始化。 1.5判斷如果已到達主程序的末尾,表示并行源程序代碼中的全部計算代碼段 均已分離出來,此時的k值就是得到的串行源程序的個數(shù),計共得到N個串行源程序,執(zhí)行 第二步;否則,k增加l,轉1.3。 第二步,對第一步代碼分離得到的N個串行源程序逐個進行編譯和串行模擬,并 記錄得到的模擬性能數(shù)據(jù)(即執(zhí)行時間預測值)。具體過程如下
2. l初始化變量k為l。 2. 2編譯編號為k的串行源程序,得到編譯后的串行程序。 2. 3在單臺計算機上,使用串行模擬器軟件,對編譯得到的串行程序進行面向處理 器性能的模擬,得到其中相應的計算代碼段的執(zhí)行時間預測值,并將該執(zhí)行時間預測值加 入計算代碼性能數(shù)據(jù)集。計算代碼性能數(shù)據(jù)集是文本形式的,按順序存儲計算代碼段的編 號及其執(zhí)行時間。 2.4判斷,如果k小于N,則k值增加1,轉2.2 ;否則,執(zhí)行第三步。
第三步,將模擬得到的各計算代碼段的執(zhí)行時間預測值標記到并行程序源代碼中。
具體過程如下 3. l初始化變量k為l。 3. 2在并行程序源代碼中定位第k個計算代碼段。 3. 3從計算代碼性能數(shù)據(jù)集中檢索第k個計算代碼段的執(zhí)行時間預測值。 3. 4在并行程序中第k個計算代碼段的末尾處,采用編譯指導命令標記第k個計算
代碼段的執(zhí)行時間預測值。例如,如果是Fortran程序,采用如下方式 cDEC$EXCECUTI0N_TME_0F_REGI0N(時間),其中"cDEC$"是編譯指導命令前導
符,"EXCECUTI0N_TME_0F_REGI0N"說明是代碼段執(zhí)行時間,而"時間"是執(zhí)行時間預測值。 如果是C程序,采用如下方式 #pragma execution_time_of_region (時間),其中"Spragma,,是編譯指導命令前導符,"exeCuti0n_time_0f_regi0n"說明是代碼段執(zhí)行時間,而"時間"是執(zhí)行時間的預測值。 3.5判斷,如果k小于N,則K值增加1,轉3. 2 ;否則,執(zhí)行第四步。
第四步,對標記有計算代碼段執(zhí)行時間預測值的并行程序源代碼進行編譯,在并行宿主機上,采用并行模擬器對其進行通信性能模擬,結合計算代碼段執(zhí)行時間預測值,預測并行程序整體執(zhí)行時間。具體過程如下 4. 1編譯標記有計算代碼段執(zhí)行時間預測值的并行程序源代碼對通信語句和計算代碼進行編譯,并將說明計算代碼段執(zhí)行時間預測值的編譯指導命令編譯為并行模擬器可識別的時間提示信息。 4.2在并行宿主機上,采用并行模擬器對編譯得到的代碼進行模擬。并行模擬器對通信代碼進行性能模擬,預測各個通信操作的時間,得到通信時間的預測值。對各個計算代碼段不執(zhí)行性能模擬,而只進行功能模擬(比性能模擬快得多),通過時間提示信息獲得計算代碼段執(zhí)行時間的預測值。并行模擬器結合計算代碼段執(zhí)行時間預測值與通信時間的預測值,預測并行程序整體執(zhí)行時間。 綜上所述,本發(fā)明采取串行模擬與并行模擬的方式,實現(xiàn)并行計算機系統(tǒng)上消息傳遞程序的性能模擬。采用本發(fā)明可以達到以下技術效果 (1)利用了串行模擬器對處理器計算性能的精確模擬能力,提高對消息傳遞程序計算代碼部分性能模擬的精度,進而提高整個并行模擬數(shù)據(jù)的精確性。 (2)利用并行模擬器的容量與性能優(yōu)勢,可對大規(guī)??茖W計算程序在大規(guī)模互連網(wǎng)絡上的性能進行高效模擬。 (3)基于消息傳遞程序SPMD模式的特性,僅使用單處理器對一個目標處理器上的計算代碼段進行模擬,而不是采用并行宿主機的全部處理器對所有目標處理器上的計算代碼段進行模擬,大大降低了模擬開銷。如果并行模擬器中的計算代碼性能模擬模塊采用與本發(fā)明中串行模擬器相同精度的模擬模型,設目標并行計算機系統(tǒng)的處理器數(shù)為M,則本發(fā)
明對計算代碼的模擬運行機時僅為采用并行模擬器進行計算代碼模擬運行機時的1/M。
(4)由于可分別選擇面向處理器的串行模擬器和面向互連網(wǎng)絡的并行模擬器,因
此提高了模擬技術的靈活性,可適應更多并行計算機體系結構的性能模擬,特別是可以采
7用針對新型處理器的串行模擬器和針對新型互連網(wǎng)絡的并行模擬器。
圖1是本發(fā)明的總體流程圖。 圖2是本發(fā)明第一步從并行源程序中分離計算代碼段的流程圖。 圖3是本發(fā)明第二步對分離得到的各個串行源程序進行串行模擬的流程圖。 圖4是本發(fā)明第三步將各個計算代碼段的執(zhí)行時間預測值標記到并行程序源代
碼中的流程圖。 圖5是采用本發(fā)明使并行模擬整體精度提高的示意圖。
具體實施例方式圖1是本發(fā)明的總體流程圖。主要流程是 步驟S101,從并行源程序中分離計算代碼段從并行程序源代碼中分離出各個計 算代碼段,并將各計算代碼段封裝成獨立的串行源程序,并增加使其可獨立運行的代碼。
步驟S102,對分離得到的串行源程序進行串行模擬在單機上對每個計算代碼段 進行串行模擬,包括編譯、串行模擬并記錄模擬預測時間。 步驟S103,將模擬得到的各個計算代碼段的執(zhí)行時間預測值標記到并行程序源代 碼中。 步驟S104,采用并行模擬器進行并行模擬對標記有計算代碼段執(zhí)行時間預測值 的并行程序源代碼進行編譯,在并行宿主機上,采用并行模擬器對其進行通信性能模擬,結 合計算代碼段執(zhí)行時間預測值,預測并行程序整體執(zhí)行時間。
圖2是本發(fā)明第一步分離計算代碼段的流程圖。流程是 步驟S201,對并行程序源代碼進行規(guī)范化處理,保證并行程序源代碼中沒有既包 括計算代碼又包括通信代碼的過程或函數(shù)。 步驟S202,打開并行程序源代碼,將文件指針定位在開始處。初始化變量k為1。
步驟S203,從當前指針位置開始,定位一個新的計算代碼段。 步驟S204,生成一個編號為k的串行源程序文件,將當前找到的計算代碼段放到 其中,并將該串行源程序文件封裝為一個可獨立執(zhí)行的串行源程序。 步驟S205,判斷如果文件指針已到達程序末尾,則代碼分離軟件執(zhí)行結束;否 則,k增加1,轉步驟S203。 圖3是本發(fā)明第二步對串行源程序進行串行模擬的流程圖。流程是 步驟S301 ,初始化變量k為1 。 步驟S302,編譯編號為k的串行源程序。 步驟S303,在單臺計算機上,使用串行模擬器軟件,對編譯得到的串行程序進行面
向處理器的性能模擬,模擬完成后將模擬預測得到的時間加入計算代碼性能數(shù)據(jù)集。 步驟S304,判斷如果k小于N,則K值增加1,轉步驟S302 ;否則,結束。 圖4是本發(fā)明第三步將各個計算代碼段的執(zhí)行時間預測值標記到并行程序源代
碼中的流程圖。流程是 步驟S401 ,初始化變量k為1 。
步驟S402 ,在并行程序中定位第k個計算代碼段。 步驟S403,從計算代碼性能數(shù)據(jù)集中檢索第k個計算代碼段的執(zhí)行時間預測值。
步驟S404,在并行程序中第k個計算代碼段的末尾處,采用編譯指導命令方式,標 記第k個計算代碼段的執(zhí)行時間預測值。 步驟S405,判斷如果k小于N,則K值增加1,轉步驟S402 ;否則,結束。
圖5給出了采用本發(fā)明使模擬精度提高的示意圖。分別采用本發(fā)明(并行模擬器 和串行模擬器相結合的方法)和伊利諾伊大學厄貝納香檳分校的BigSim模擬方法(即背 景技術所述的只采用并行模擬器的方法)(見http:〃charm. cs. uiuc. edu),在一個含4處 理器的PC機群上模擬一套含16個Intel Itanium 2處理器的基于千兆以太網(wǎng)互連的HP 集群系統(tǒng)的性能。所采用的測試程序為一個求解三維Jacobi迭代問題的消息傳遞并行程 序Jacobi3d。兩種方法對程序并行程序在目標機上執(zhí)行時間的模擬精度如圖5所示。從 圖5可以看出,本發(fā)明相對于BigSim模擬方法的模擬精度有一定程度的提高,提高幅度在 1. 38% -8. 85%之間。
9
權利要求
一種串行與并行模擬相結合的并行計算機系統(tǒng)性能模擬方法,其特征在于包括以下步驟第一步,從并行程序源代碼中分離出各個計算代碼段,計算代碼段是一段連續(xù)的程序代碼,其中包含一系列計算語句或者函數(shù)調(diào)用,但不包括通信語句,除了位于程序開始或結束位置的計算代碼段之外,每個計算代碼段的前后均與通信語句相鄰,將各計算機代碼段生成獨立的串行源程序文件,并將串行源程序文件封裝為可獨立執(zhí)行的串行源程序,具體過程如下1.1對并行程序源代碼進行規(guī)范化處理從并行程序的主函數(shù)代碼開始處一直向后掃描到結束處,對遇到的每一個過程或函數(shù),如果其中包含通信語句,則將該函數(shù)內(nèi)聯(lián)到主函數(shù)中,即將主函數(shù)中對該函數(shù)的調(diào)用表達式用該函數(shù)的函數(shù)體來替換;如果該函數(shù)中還調(diào)用其它函數(shù),則還要檢查這些被調(diào)用的函數(shù)是否包含通信語句,如果被調(diào)用的函數(shù)包含通信語句就先將它們內(nèi)聯(lián)到被調(diào)用處;這一規(guī)范化處理步驟是遞歸的,直到檢查到原子函數(shù)-即不調(diào)用其它函數(shù)的函數(shù);1.2將文件指針定位在并行程序的主函數(shù)代碼的開始處,初始化變量k為1;1.3從當前文件指針位置開始,定位一個新的計算代碼段;1.4生成一個編號為k的串行源程序文件,將當前找到的計算代碼段放到其中,并將該串行源程序文件封裝為一個可獨立執(zhí)行的串行源程序,具體方法是a)創(chuàng)建一個新的源程序,將計算代碼段放在一個空的主函數(shù)中;b)如果計算代碼段中包括對過程或函數(shù)的調(diào)用,則將該函數(shù)在調(diào)用處進行內(nèi)聯(lián);c)如果當前串行源程序中存在未初始化即尚未被賦值的變量,則在代碼開始處增加對這些變量進行初始化的代碼;1.5判斷如果已到達主程序的末尾,表示并行源程序代碼中的全部計算代碼段均已分離出來,此時的k值就是得到的串行源程序的個數(shù),計共得到N個串行源程序,執(zhí)行第二步;否則,k增加1,轉1.3;第二步,對第一步代碼分離得到的N個串行源程序逐個進行編譯和串行模擬,并記錄得到的執(zhí)行時間預測值,具體過程如下2.1初始化變量k為1;2.2編譯編號為k的串行源程序,得到編譯后的串行程序;2.3在單臺計算機上,使用串行模擬器軟件,對串行程序進行面向處理器性能的模擬,得到計算代碼段的執(zhí)行時間預測值,并將該執(zhí)行時間預測值加入計算代碼性能數(shù)據(jù)集,計算代碼性能數(shù)據(jù)集是文本形式的,按順序存儲計算代碼段的編號及其執(zhí)行時間;2.4判斷,如果k小于N,則k值增加1,轉2.2;否則,執(zhí)行第三步;第三步,將模擬得到的各計算代碼段的執(zhí)行時間預測值標記到并行程序源代碼中,具體過程如下3.1初始化變量k為1;3.2在并行程序源代碼中定位第k個計算代碼段;3.3從計算代碼性能數(shù)據(jù)集中檢索第k個計算代碼段的執(zhí)行時間預測值;3.4在并行程序中第k個計算代碼段的末尾處,采用編譯指導命令標記第k個計算代碼段的執(zhí)行時間預測值;3.5判斷,如果k小于N,則K值增加1,轉3.2;否則,執(zhí)行第四步;第四步,對標記有計算代碼段執(zhí)行時間預測值的并行程序源代碼進行編譯,在并行宿主機上,采用并行模擬器對其進行通信性能模擬,結合計算代碼段執(zhí)行時間預測值,預測并行程序整體執(zhí)行時間,具體過程如下4.1編譯標記有計算代碼段執(zhí)行時間預測值的并行程序源代碼對通信語句和計算代碼進行編譯,并將說明計算代碼段執(zhí)行時間預測值的編譯指導命令編譯為并行模擬器可識別的時間提示信息;4.2在并行宿主機上,采用并行模擬器對編譯得到的代碼進行模擬并行模擬器對通信代碼進行性能模擬,預測各個通信操作的時間,得到通信時間的預測值;對各個計算代碼段不執(zhí)行性能模擬,只進行功能模擬,通過時間提示信息獲得計算代碼段執(zhí)行時間的預測值;并行模擬器結合計算代碼段執(zhí)行時間預測值與通信時間的預測值,預測并行程序整體執(zhí)行時間。
3. 5判斷,如果k小于N,則K值增加l,轉3. 2 ;否則,執(zhí)行第四步;第四步,對標記有計算代碼段執(zhí)行時間預測值的并行程序源代碼進行編譯,在并行宿主機上,采用并行模擬器對其進行通信性能模擬,結合計算代碼段執(zhí)行時間預測值,預測并行程序整體執(zhí)行時間,具體過程如下4. 1編譯標記有計算代碼段執(zhí)行時間預測值的并行程序源代碼對通信語句和計算代碼進行編譯,并將說明計算代碼段執(zhí)行時間預測值的編譯指導命令編譯為并行模擬器可識別的時間提示信息;4. 2在并行宿主機上,采用并行模擬器對編譯得到的代碼進行模擬并行模擬器對通信代碼進行性能模擬,預測各個通信操作的時間,得到通信時間的預測值;對各個計算代碼段不執(zhí)行性能模擬,只進行功能模擬,通過時間提示信息獲得計算代碼段執(zhí)行時間的預測值;并行模擬器結合計算代碼段執(zhí)行時間預測值與通信時間的預測值,預測并行程序整體執(zhí)行時間。
全文摘要
本發(fā)明公開了一種串行與并行模擬相結合的并行計算機系統(tǒng)性能模擬方法,要解決的技術問題是提高性能模擬準確性和模擬效率。技術方案是先從并行源程序中分離計算代碼段,將各計算機代碼段封裝為可獨立執(zhí)行的串行源程序;接著對串行源程序進行串行模擬,得到的各計算代碼段的執(zhí)行時間預測值;然后將各計算代碼段的執(zhí)行時間預測值標記到并行程序源代碼中;最后采用并行模擬器進行通信性能模擬,結合計算代碼段執(zhí)行時間預測值,預測并行程序整體執(zhí)行時間。本發(fā)明適應含不同處理器和網(wǎng)絡結構的并行機系統(tǒng)的模擬,采用本發(fā)明既可提高整個并行模擬數(shù)據(jù)的精確性,又可對大規(guī)??茖W計算程序在大規(guī)模互連網(wǎng)絡上的性能進行高效模擬,且大大降低了模擬開銷。
文檔編號G06F9/46GK101694628SQ20091004457
公開日2010年4月14日 申請日期2009年10月21日 優(yōu)先權日2009年10月21日
發(fā)明者彭宇行, 徐傳福, 方建濱, 王勇獻, 王正華, 翁玉芬, 車永剛, 陸平靜 申請人:中國人民解放軍國防科學技術大學;