国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于可視化建模的mpi并行程序設(shè)計(jì)系統(tǒng)及框架代碼自動生成方法

      文檔序號:6483353閱讀:249來源:國知局
      專利名稱:基于可視化建模的mpi并行程序設(shè)計(jì)系統(tǒng)及框架代碼自動生成方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種MPI高性能并行計(jì)算中的編程環(huán)境、模型與方法,特別是涉及MPI 并行程序框架代碼的自動生成及程序設(shè)計(jì)方法。
      背景技術(shù)
      隨著計(jì)算機(jī)的應(yīng)用范圍和應(yīng)用水平的不斷拓展和提高,人們對于計(jì)算機(jī)的計(jì)算和處 理能力等性能要求也隨之增加。近些年來,尤其是在天文、氣象、海洋、生物、能源、 化工、地質(zhì)勘探、軍事以及理論物理、數(shù)學(xué)等科學(xué)計(jì)算能力要求高的領(lǐng)域,對計(jì)算與信 息處理能力提出了越來越高的要求。并行計(jì)算的出現(xiàn)和發(fā)展,也正是為了克服和解決這 個問題而不斷努力的。
      目前,構(gòu)建并行計(jì)算硬件環(huán)境的技術(shù)也己日臻成熟,搭建一個理論上計(jì)算能力相當(dāng) 強(qiáng)的并行計(jì)算環(huán)境,現(xiàn)在已經(jīng)不是難題。然而,如何高效地在并行計(jì)算環(huán)境中進(jìn)行各種 并行計(jì)算應(yīng)用程序的設(shè)計(jì)與開發(fā),對于多數(shù)非計(jì)算機(jī)專業(yè)出身并且缺乏并行計(jì)算程序開 發(fā)的專業(yè)訓(xùn)練的各應(yīng)用領(lǐng)域的技術(shù)人員來說,已成為并行計(jì)算技術(shù)轉(zhuǎn)化為實(shí)際生產(chǎn)力所 面臨的關(guān)鍵問題。
      經(jīng)文獻(xiàn)檢索發(fā)現(xiàn),傳統(tǒng)的支持并行程序設(shè)計(jì)與開發(fā)的系統(tǒng)和方法主要有并行程序
      設(shè)計(jì)語言(HPF、 Erlang、 XIO、 Cilk)、并行編譯器、高性能并行函數(shù)庫(Intel的TBB、 Microsoft TPL、 IBMAmino)、可移植的多線程庫(Pthread)、消息傳遞庫(MPI、 PVM)、 自動并行化工具(OpenMP)、協(xié)同編程語言(Linda)、基于模板的并行程序設(shè)計(jì)方法 (Frameworks)、并行組件編程方法(CCA)等等。
      上述現(xiàn)有技術(shù)中的這些系統(tǒng)和方法,有的抽象程度太低,需要并行程序設(shè)計(jì)人員過 多的關(guān)注底層細(xì)節(jié),如消息傳遞、同步、加減鎖等,致使編程效率低,程序代碼錯誤多;有的不能滿足當(dāng)前最新的應(yīng)用和系統(tǒng)需求;有的存在可移植性、可擴(kuò)展性差的缺陷;有 的是因?yàn)槊嫦蛱厥鈱S妙I(lǐng)域,如空氣動力學(xué)模擬、求解偏微分方程等,因而通用性很差。 因此,目前隨著多核微處理器的普及,并行計(jì)算機(jī)走進(jìn)了更加大眾化的計(jì)算領(lǐng)域, 研究并提出一套通用的并行程序設(shè)計(jì)方法和系統(tǒng)已經(jīng)迫在眉睫。

      發(fā)明內(nèi)容
      鑒于上述技術(shù)問題,本發(fā)明提出了一種基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng) 及其框架代碼自動生成方法,提供一套輔助并行程序設(shè)計(jì)與開發(fā)的系統(tǒng)與方法,利用可 視化的用戶操作界面,根據(jù)用戶在系統(tǒng)設(shè)計(jì)階段建立的各種模型,通過解析模型,自動 生成結(jié)構(gòu)完整且優(yōu)化的并行程序框架代碼。
      本發(fā)明提出了一種基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),包括用戶界面層 和代碼生成層和并行標(biāo)準(zhǔn)庫,用戶界面模塊向其即代碼生成層提供模型,代碼生成層 對模型進(jìn)行解析,根據(jù)用戶的需要通過對已有的并行標(biāo)準(zhǔn)庫進(jìn)行調(diào)用,其中用戶界面 層包括用于圖形化建模的圖形編輯器和用于生成代碼框架的修改的代碼編輯器,代 碼生成層包括算法骨架模塊、模型驗(yàn)證模塊和代碼生成模塊,算法骨架模塊用于定義 模式的屬性集的方法來描述相應(yīng)模式的特征和行為,將多種設(shè)計(jì)模式進(jìn)行再次的封裝, 提供程序框架;模型驗(yàn)證模塊用于在代碼生成前對模型的邏輯正確性進(jìn)行驗(yàn)證,以確保 生成代碼的有效性,代碼生成模塊用于根據(jù)用戶需求不同調(diào)用不同的并行標(biāo)準(zhǔn)庫。
      1. 一種基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),包括用戶界面層、代碼生 成層,用戶界面層基于可視化操作界面向代碼生成層提供模型;代碼生成層用于對模 型進(jìn)行解析,其中用戶界面層包括用于圖形化建模的圖形編輯器和作為生成代碼框架 修改環(huán)境的代碼編輯器,代碼生成層包括算法骨架模塊、模型驗(yàn)證模塊和代碼生成 模塊,算法骨架模塊用定義模式的屬性集的方法來描述相應(yīng)模式的特征和行為,將設(shè) 計(jì)模式進(jìn)行再次的封裝,提供程序框架;模型驗(yàn)證模塊用于在代碼生成前對模型的邏輯 正確性進(jìn)行驗(yàn)證,以確保生成代碼的有效性,代碼生成模塊用于根據(jù)用戶需求不同調(diào)用 不同的并行標(biāo)準(zhǔn)庫。
      該系統(tǒng)還包括并行設(shè)計(jì)標(biāo)準(zhǔn)庫,所提供的模型根據(jù)用戶的需要通過對已有的并行 設(shè)計(jì)標(biāo)準(zhǔn)庫進(jìn)行調(diào)用。
      在該系統(tǒng)中定義一組用來刻畫模型的構(gòu)造塊,該構(gòu)造塊由在不同模型間被重復(fù)使用 的基本元素定義。每個所述模型對應(yīng)著一個樹型數(shù)據(jù)結(jié)構(gòu),該樹型數(shù)據(jù)結(jié)構(gòu)包括作為根的Contents Model類,該類抽象成員屬性列表,該列表中保存有該系統(tǒng)中所有構(gòu)造塊成員,當(dāng)訪問 模型數(shù)據(jù)結(jié)構(gòu)時,得到這個數(shù)據(jù)結(jié)構(gòu)的根,即在DiagmmEditor類中定義的成員函數(shù) Contents Model類的對象parent,通過parent.getChildren()可訪問到所有的構(gòu)造塊,并且 根據(jù)構(gòu)造塊可以訪問對應(yīng)的屬性;NodeModel記錄了一類構(gòu)造塊的相關(guān)信息,包括名稱、 位置、基本屬性;構(gòu)造塊的共有屬性,即List類型的sourceConnection和targetConnection, 這兩個屬性分別保存了連接到這個構(gòu)造塊的連接線和從這個構(gòu)造塊發(fā)出的連接線的另 一端鏈接的對象;連接線有NodeModel類型的屬性source和target,描述一個連接線的 起始點(diǎn)和結(jié)束點(diǎn)。
      所述模型的保存是將Java對象轉(zhuǎn)化為XML格式的文件保存。 本發(fā)明還提出一種基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng)的框架代碼自動生成 方法,該方法包括以下步驟
      用戶根據(jù)底層的并行計(jì)算硬件平臺和運(yùn)行環(huán)境選擇一類并行編程語言或者并行程 序庫,由代碼生成器根據(jù)該語言的編程模型選擇基本的程序結(jié)構(gòu)骨架;同時由代碼生成 器遍歷已創(chuàng)建的并行應(yīng)用的樹型數(shù)據(jù)結(jié)構(gòu),形成并行應(yīng)用程序的控制流信息,插入到程 序結(jié)構(gòu)骨架中生成最終的程序源代碼;其中將模型進(jìn)行解析,自動生成框架代碼流程, 該流程包括以下步驟
      步驟l:首先查找開始節(jié)點(diǎn),査找成功時生成頭文件以及main()函數(shù)頭;
      步驟2:根據(jù)連接線連接到的方向解析下一個節(jié)點(diǎn),并生成相應(yīng)代碼; 步驟3:若遇到上循環(huán),生成循環(huán)開始語句; 步驟4:解析循環(huán)體中的各個節(jié)點(diǎn),生成對應(yīng)代碼;
      步驟5:若遇到下循環(huán),循環(huán)結(jié)束,返回到步驟2,繼續(xù)解析其余節(jié)點(diǎn); 步驟6:若經(jīng)過檢査該節(jié)點(diǎn)不是循環(huán),則檢査是否遇到分支節(jié)點(diǎn);
      步驟7:若遇到了分支節(jié)點(diǎn)則計(jì)算此次分支的合并節(jié)點(diǎn)是哪個,然后按解析分支節(jié) 點(diǎn)到合并節(jié)點(diǎn)之間的構(gòu)造塊,并生成對應(yīng)代碼,放入分支的一個條件下; 步驟8:參與步驟7中的功能;
      步驟9、 10:共同完成分支中另一條路徑的解析;
      步驟11、 12:若該節(jié)點(diǎn)不是循環(huán)或者分支節(jié)點(diǎn),則檢査是否碰到了結(jié)束節(jié)點(diǎn)。若 是則進(jìn)入步驟12,退出解析過程,若不是則該節(jié)點(diǎn)就是一個普通節(jié)點(diǎn),生成相應(yīng)代碼,然后繼續(xù)解析下一個節(jié)點(diǎn); 步驟12:結(jié)束解析過程。
      與現(xiàn)有技術(shù)相比,本發(fā)明具有很好的通用性,即使不具備專業(yè)編程知識的專業(yè)人員, 也可以通過可視化的建模方式字形生成代碼框架,操作方便,無需編程。


      圖1為MPI并行程序設(shè)計(jì)及框架代碼自動化生成系統(tǒng)的結(jié)構(gòu)示意圖; 圖2為面向構(gòu)造塊的MPI并行程序的可視化建模流程示意圖; 圖3為將模型進(jìn)行解析,自動生成框架代碼流程示意圖; 表1表示基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng)層次。
      具體實(shí)施例方式
      MPI是基于消息傳遞的高性能并行計(jì)算環(huán)境中的消息傳遞標(biāo)準(zhǔn),目前已經(jīng)被高校、 研究機(jī)構(gòu)和工業(yè)界在集群系統(tǒng)、工作站網(wǎng)絡(luò)等高性能并行計(jì)算硬件平臺上廣泛的采用, 成為事實(shí)上的消息傳遞標(biāo)準(zhǔn)規(guī)范?,F(xiàn)有的各種MPI實(shí)現(xiàn)版本,如MPICH、 CHIMP、 LAM 等函數(shù)庫在局域網(wǎng)和廣域網(wǎng)環(huán)境高性能并行計(jì)算中取得了良好的效果。因此,本發(fā)明的 并行程序設(shè)計(jì)中也采納MPI標(biāo)準(zhǔn)。
      MPI并行程序設(shè)計(jì)及框架代碼自動化生成系統(tǒng)在所創(chuàng)建模型的基礎(chǔ)上,能夠生成基 于消息傳遞的并行程序代碼框架。用戶只需要補(bǔ)充更具體的算法細(xì)節(jié),就能夠開發(fā)出完 整的、可運(yùn)行的并行應(yīng)用程序的源代碼。該平臺擁有良好的用戶界面,對于各種常用的 功能提供了操作系統(tǒng)風(fēng)格的圖形化操作界面,從而方便了程序員和其他系統(tǒng)用戶;該平 臺為并行應(yīng)用程序的可視化建模過程和代碼生成功能提供完整的模塊支持,如交互式模 型編輯器,基本構(gòu)造塊庫,代碼控制模塊,代碼生成等;該平臺提供了不同類型的建模 構(gòu)造塊,以滿足不同類型并行應(yīng)用程序的設(shè)計(jì)需要,用戶可通過配置選項(xiàng)設(shè)置不同的屬 性;為了使平臺具有較好的可維護(hù)性、可擴(kuò)展性與可使用性,在開發(fā)過程中使用了多種 已經(jīng)驗(yàn)證過的設(shè)計(jì)模式,保證其具有良好的軟件體系結(jié)構(gòu)。
      軟件工程中將軟件系統(tǒng)開發(fā)分為問題定義、需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)編碼、系統(tǒng) 測試、系統(tǒng)維護(hù)等階段,本發(fā)明方法以此為基礎(chǔ),但是只涉及到了系統(tǒng)設(shè)計(jì)與系統(tǒng)編碼 階段。
      7在系統(tǒng)設(shè)計(jì)階段,本發(fā)明提供用戶交互界面,包括一套預(yù)定義的閨形元素和一個編 輯區(qū);這些圖形元素可供建立各種模型,每一個元素塊都有特定名稱、屬性、含義和用 法,并行程序設(shè)計(jì)用戶根據(jù)需求分析的結(jié)果,依據(jù)一定的限定規(guī)則,通過拖拽左邊的圖 形元素到右邊的編輯區(qū),建立程序的各種模型,如進(jìn)程模型、消息傳遞模型、系統(tǒng)流程 模型等,編輯各種圖形元素的屬性并進(jìn)行賦值。設(shè)計(jì)完成以后,用戶可以把各種模型保 存為xml文件,供以后的編輯、修改與優(yōu)化,并提供了不同系統(tǒng)之間的模型復(fù)用。
      系統(tǒng)設(shè)計(jì)階段完成之后,在進(jìn)入編碼階段之前,本發(fā)明根據(jù)用戶在系統(tǒng)設(shè)計(jì)階段建 立的各種模型,自動生成結(jié)構(gòu)完整且優(yōu)化的并行程序框架代碼,涉及到所有的并行通信 與控制的細(xì)節(jié),包括并行運(yùn)行環(huán)境初始化代碼、并行運(yùn)行環(huán)境動態(tài)參數(shù)獲取代碼、多個 進(jìn)程生成代碼、進(jìn)程任務(wù)分配代碼、進(jìn)程間消息傳遞代碼、進(jìn)程間同步代碼、并行運(yùn)行 環(huán)境終止代碼等。并且,以可編輯的文檔窗口展示給用戶,用戶可以在此編輯窗口進(jìn)行 更加具體的串行程序代碼(面向具體問題域的解決方案)編寫,而所有涉及到并行框架
      代碼和并行通信模式都已經(jīng)由本方法自動生成。各層的功能如表1所示。 表 1
      層模塊名功能
      用戶界面層圖形編輯器為用戶提供一個簡單易用的圖形化建模的環(huán)境。
      代碼編輯器為用戶提供生成代碼框架的修改環(huán)境,保證生成 的代碼符合用戶的需要,并且可以根據(jù)用戶需要 細(xì)化代碼框架。
      代碼生成層算法骨架一種基于設(shè)計(jì)模式思想進(jìn)行并行程序設(shè)計(jì)的方 法,以定義模式的屬性集的方法來描述相應(yīng)模式 的特征和行為,將多種設(shè)計(jì)模式進(jìn)行再次的封 裝,并提供程序框架。
      模型驗(yàn)證在代碼生成前對模型的邏輯正確性進(jìn)行驗(yàn)證,以 確保生成代碼的有效性。
      代碼生成根據(jù)用戶需求不同調(diào)用不同的并行標(biāo)準(zhǔn)庫,生成 不同的用戶需要的代碼框架,減輕用戶代碼開發(fā) 的強(qiáng)度。
      本發(fā)明的基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng)分為兩層第一層是與語言和 運(yùn)行的硬件環(huán)境無關(guān)的用戶界面模塊,它向其下一層(即代碼生成層)提供建立好的模 型,以供i面的模塊分析并且生成用戶需要的代碼框架;第二層是核心代碼生成的模塊, 它對上一層建好模型進(jìn)行翻譯,并根據(jù)用戶的需要通過對已有的并行標(biāo)準(zhǔn)庫進(jìn)行調(diào)用, 從而生成代碼,大大減小了用戶的代碼開發(fā)強(qiáng)度。
      8本發(fā)明的處理對象是對并行計(jì)算應(yīng)用程序業(yè)務(wù)邏輯和算法流程所創(chuàng)建的模型。為了 能夠更加精確的描述模型,進(jìn)而描述并行應(yīng)用程序,在系統(tǒng)中定義一組用來刻畫模型 (Models)、定義明確的構(gòu)造塊(Constructing blocks)是非常必要的。使用這種方法的 好處可以表現(xiàn)在以下幾個方面第一,構(gòu)造塊是比模型規(guī)模更小的描述單元,因此構(gòu)造 塊的精確定義和描述要比模型更加容易實(shí)現(xiàn),而且構(gòu)造塊要比模型更容易使用。第二, 構(gòu)造塊的實(shí)現(xiàn)為模型的精確描述提供了可能性,只要構(gòu)造塊的定義是精確的,那么只需 要精確定義從構(gòu)造塊組成模型的規(guī)則,得到的模型也能夠被證明是精確的。第三,描述 不同模型的基本元素之間是存在重疊的,如果將這些在不同模型間被重復(fù)使用的基本元 素定義為構(gòu)造塊,那么將實(shí)現(xiàn)構(gòu)造塊的復(fù)用,簡化了模型描述。如圖2所示,為本發(fā)明 的劃分為構(gòu)造塊的MPI并行程序設(shè)計(jì)系統(tǒng)的功能模塊圖,它包括構(gòu)造塊設(shè)計(jì)、結(jié)合構(gòu) 造規(guī)則設(shè)計(jì),可以實(shí)現(xiàn)進(jìn)程模型設(shè)計(jì)、通信模型設(shè)計(jì)和編程模型設(shè)計(jì),進(jìn)一步實(shí)現(xiàn)主視 圖設(shè)計(jì)和分層視圖設(shè)計(jì)。
      除了對構(gòu)造塊的劃分和定義,還要將構(gòu)造塊以合理的方式組織成模型。 一個結(jié)構(gòu)良 好的模型應(yīng)該在語義上是前后一致的,并且與所有的相關(guān)模型協(xié)調(diào)一致。
      MPI并行程序設(shè)計(jì)及框架代碼自動化生成系統(tǒng),支持自動化的處理可視化建模系統(tǒng) 創(chuàng)建的并行應(yīng)用。該類并行應(yīng)用通過樹型的數(shù)據(jù)結(jié)構(gòu)保存在內(nèi)存中,并通過自定義的 XML文件儲存在文件系統(tǒng)里。
      每個模型對應(yīng)著一個樹型數(shù)據(jù)結(jié)構(gòu),如圖3所示,其中根為Contents Model類,它 包括一個成員屬性列表,每當(dāng)添加一個新的構(gòu)造塊,就在這個列表中添加一項(xiàng),刪除構(gòu) 造塊則相反。當(dāng)訪問模型數(shù)據(jù)結(jié)構(gòu)時,得到這個數(shù)據(jù)結(jié)構(gòu)的根,即在DiagramEditor類 中定義的成員函數(shù)Contents Model類的對象parent,通過parent.getChildren()可訪問到 所有的構(gòu)造塊,并且根據(jù)構(gòu)造塊可以訪問對應(yīng)的屬性。
      每一個NodeModel (例如NodeModell、 NodeMode21、 NodeMode13)類記錄了一類 構(gòu)造塊的相關(guān)信息,包括名稱、位置、基本屬性等。構(gòu)造塊根據(jù)實(shí)際情況不同存在不同 的屬性,但是它們都擁有兩個共同的屬性,艮卩List類型的sourceConnection和 targetConnection。這兩個屬性分別保存了連接到這個構(gòu)造塊的連接線和從這個構(gòu)造塊發(fā) 出的連接線的另一端鏈接的對象。
      連接線有NodeModel類型的屬性source和target,描述一個連接線的起始點(diǎn)和結(jié)束點(diǎn)。保存模型有幾種可以選擇的方式
      第一種方法是使跟模型相關(guān)的Java類都實(shí)現(xiàn)Serializable接口 ,通過Java的序列化 方法,將模型對象序列化到文件中。這種方式實(shí)現(xiàn)起來簡單,也最容易上手,可以作為 快速原型開發(fā)的方式。Java序列化方式最大的缺點(diǎn)就是版本沖突問題,如果模型增加了 新的屬性或結(jié)構(gòu)發(fā)生變化,那就很難恢復(fù)上一個模型版本保存的數(shù)據(jù)了。
      第二種方法是將Java對象轉(zhuǎn)化為XML (可擴(kuò)展標(biāo)記語言)格式的文件保存,Java 對象到XML格式文件轉(zhuǎn)化有很多框架,可以將Java對象轉(zhuǎn)化為XML格式文件來保存。 使用這種方法的好處是XML是一種國際通用的標(biāo)準(zhǔn),有利于模型的轉(zhuǎn)換操作和在不同 環(huán)境下的移植。目前XML相關(guān)技術(shù)已經(jīng)非常成熟,也有比較多的商業(yè)軟件包和開源軟 件包對該項(xiàng)技術(shù)提供軟件支持。
      第三種方法是將模型保存到關(guān)系數(shù)據(jù)中,這就需要建立一個對象關(guān)系數(shù)據(jù)庫映射框 架,然后將模型保存到關(guān)系數(shù)據(jù)庫中。這種方式依賴于底層的數(shù)據(jù)庫軟件的支持,因此 對系統(tǒng)有著較強(qiáng)的依賴性,不利于擴(kuò)展和移植。
      本系統(tǒng)選擇第二種方式實(shí)現(xiàn)對模型的保存,并且采用Dom4j開源XML解析包作為 XML解析工具。Dom4j是一個易用的、開源的庫,用于XML, XPath和XSLT。它應(yīng) 用于Java平臺,采用了 Java集合框架并完全支持DOM, SAX和JAXP。作為一個易用 的、開源的庫,Dom4j在處理性能上非常出色,使用方法十分靈活。它使用帶有多個繼 承層的基于接口的方法,擁有大量的接口,專門針對Java開發(fā),使用起來非常簡單、 直觀,簡化了對XML格式文件的構(gòu)造和解析過程。Dom4j基于多個繼承層接口的方法 和特性設(shè)置等功能保證了處理XML格式文件的性能及穩(wěn)定性。
      具體的處理流程如下用戶根據(jù)底層的并行計(jì)算硬件平臺和運(yùn)行環(huán)境選擇一類并行 編程語言或者并行程序庫,由代碼生成器根據(jù)該語言的編程模型選擇基本的程序結(jié)構(gòu)骨 架;同時由代碼生成器遍歷己創(chuàng)建的并行應(yīng)用的樹型數(shù)據(jù)結(jié)構(gòu),形成并行應(yīng)用程序的控 制流信息,插入到程序結(jié)構(gòu)骨架中生成最終的程序源代碼。
      將模型進(jìn)行解析,自動生成框架代碼流程示意圖如圖3所示,該流程包括以下步驟 步驟l:首先査找開始節(jié)點(diǎn),査找成功時生成頭文件以及mainO函數(shù)頭;
      步驟2:根據(jù)連接線連接到的方向解析下一個節(jié)點(diǎn),并生成相應(yīng)代碼; 步驟3:若遇到上循環(huán),生成循環(huán)開始語句;步驟4:解析循環(huán)體中的各個節(jié)點(diǎn),生成對應(yīng)代碼;
      步驟5:若遇到下循環(huán),循環(huán)結(jié)束,返回到步驟2,繼續(xù)解析其余節(jié)點(diǎn);
      步驟6:若經(jīng)過檢査該節(jié)點(diǎn)不是循環(huán),則檢査是否遇到分支節(jié)點(diǎn);
      步驟7:若遇到了分支節(jié)點(diǎn)則計(jì)算此次分支的合并節(jié)點(diǎn)是哪個,然后按解析分支節(jié)
      點(diǎn)到合并節(jié)點(diǎn)之間的構(gòu)造塊,并生成對應(yīng)代碼,放入分支的一個條件下;
      步驟8:參與步驟7中的功能;
      步驟9、 10:共同完成分支中另一條路徑的解析;
      步驟11、 12:若該節(jié)點(diǎn)不是循環(huán)或者分支節(jié)點(diǎn),則檢査是否碰到了結(jié)束節(jié)點(diǎn)。若 是則進(jìn)入步驟12,退出解析過程,若不是則該節(jié)點(diǎn)就是一個普通節(jié)點(diǎn),生成相應(yīng) 代碼,然后繼續(xù)解析下一個節(jié)點(diǎn); 步驟12:結(jié)束解析過程。
      根據(jù)用戶建立的模型生成并行程序框架代碼,可以表示用戶根據(jù)具體的應(yīng)用域問題 建立任意的應(yīng)用求解域進(jìn)程模型,展示了本方法良好的通用性。除此之外,本方法還引 入了并行設(shè)計(jì)模式的思想,對一些成熟的、經(jīng)常被復(fù)用的并行問題解決模式(并行設(shè)計(jì) 模式)進(jìn)行了模型描述和預(yù)定義實(shí)現(xiàn),提供了代碼結(jié)構(gòu)優(yōu)化的并行設(shè)計(jì)模式庫,用戶可 以根據(jù)具體的應(yīng)用問題,選擇合適的設(shè)計(jì)模式來直接實(shí)現(xiàn)自己的問題解決框架結(jié)構(gòu)和并 行框架代碼結(jié)構(gòu),而不需要自己手工的進(jìn)行應(yīng)用建模。
      權(quán)利要求
      1. 一種基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),包括用戶界面層、代碼生成層,用戶界面層基于可視化操作界面向代碼生成層提供模型;代碼生成層用于對模型進(jìn)行解析,其中用戶界面層包括用于圖形化建模的圖形編輯器和作為生成代碼框架修改環(huán)境的代碼編輯器,代碼生成層包括算法骨架模塊、模型驗(yàn)證模塊和代碼生成模塊,算法骨架模塊用定義模式的屬性集的方法來描述相應(yīng)模式的特征和行為,將設(shè)計(jì)模式進(jìn)行再次的封裝,提供程序框架;模型驗(yàn)證模塊用于在代碼生成前對模型的邏輯正確性進(jìn)行驗(yàn)證,以確保生成代碼的有效性,代碼生成模塊用于根據(jù)用戶需求不同調(diào)用不同的并行標(biāo)準(zhǔn)庫。
      2. 如權(quán)利要求1所述的基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),其特征在于, 還包括并行設(shè)計(jì)標(biāo)準(zhǔn)庫,所提供的模型根據(jù)用戶的需要通過對已有的并行設(shè)計(jì)標(biāo)準(zhǔn)庫 進(jìn)行調(diào)用。
      3. 如權(quán)利要求1所述的基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),其特征在于, 在該系統(tǒng)中定義一組用來刻畫模型的構(gòu)造塊,該構(gòu)造塊由在不同模型間被重復(fù)使用的基 本元素定義。 '
      4. 如權(quán)利要求1所述的基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),其特征在于, 每個所述模型對應(yīng)著一個樹型數(shù)據(jù)結(jié)構(gòu),該樹型數(shù)據(jù)結(jié)構(gòu)包括:作為根的Contents Model 類,該類抽象成員屬性列表,該列表中保存有該系統(tǒng)中所有構(gòu)造塊成員,當(dāng)訪問模型數(shù) 據(jù)結(jié)構(gòu)時,得到這個數(shù)據(jù)結(jié)構(gòu)的根,即在DiagramEditor類中定義的成員函數(shù)Contents Model類的對象parent,通過parent.getChildren()可訪問到所有的構(gòu)造塊,并且根據(jù)構(gòu) 造塊可以訪問對應(yīng)的屬性;NodeModel記錄了一類構(gòu)造塊的相關(guān)信息,包括名稱、位置、 基本屬性;構(gòu)造塊的共有屬性,艮卩List類型的sourceConnection禾口targetConnection,這 兩個屬性分別保存了連接到這個構(gòu)造塊的連接線和從這個構(gòu)造塊發(fā)出的連接線的另一 端鏈接的對象;連接線有NodeModel類型的屬性source和target,描述一個連接線的起 始點(diǎn)和結(jié)束點(diǎn)。 .
      5. 如權(quán)利要求1所述的基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng),其特征在于, 所述模型的保存是將Java對象轉(zhuǎn)化為XML格式的文件保存。
      6. 如權(quán)利要求1所述的基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng)的框架代碼自動生成方法,該方法包括以下步驟用戶根據(jù)底層的并行計(jì)算硬件平臺和運(yùn)行環(huán)境選擇一類并行編程語言或者并行程 序庫,由代碼生成器根據(jù)該語言的編程模型選擇基本的程序結(jié)構(gòu)骨架;同時由代碼生成器遍歷已創(chuàng)建的并行應(yīng)用的樹型數(shù)據(jù)結(jié)構(gòu),形成并行應(yīng)用程序的控制流信息,插入到程 序結(jié)構(gòu)骨架中生成最終的程序源代碼;其中將模型進(jìn)行解析,自動生成框架代碼流程, 該流程包括以下步驟步驟l:首先査找開始節(jié)點(diǎn),査找成功時生成頭文件以及main()函數(shù)頭;步驟2:根據(jù)連接線連接到的方向解析下一個節(jié)點(diǎn),并生成相應(yīng)代碼; 步驟3:若遇到上循環(huán),生成循環(huán)開始語句; 步驟4:解析循環(huán)體中的各個節(jié)點(diǎn),生成對應(yīng)代碼;步驟5:若遇到下循環(huán),循環(huán)結(jié)束,返回到步驟2,繼續(xù)解析其余節(jié)點(diǎn); 步驟6:若經(jīng)過檢查該節(jié)點(diǎn)不是循環(huán),則檢査是否遇到分支節(jié)點(diǎn);步驟7:若遇到了分支節(jié)點(diǎn)則計(jì)算此次分支的合并節(jié)點(diǎn)是哪個,然后按解析分支節(jié) 點(diǎn)到合并節(jié)點(diǎn)之間的構(gòu)造塊,并生成對應(yīng)代碼,放入分支的一個條件下; 步驟8:參與步驟7中的功能;步驟9、 10:共同完成分支中另一條路徑的解析;步驟11、 12:若該節(jié)點(diǎn)不是循環(huán)或者分支節(jié)點(diǎn),則檢査是否碰到了結(jié)束節(jié)點(diǎn)。若 是則進(jìn)入步驟12,退出解析過程,若不是則該節(jié)點(diǎn)就是一個普通節(jié)點(diǎn),生成相應(yīng)代碼, 然后繼續(xù)解析下一個節(jié)點(diǎn);步驟12:結(jié)束解析過程。
      全文摘要
      本發(fā)明公開了一種基于可視化建模的MPI并行程序設(shè)計(jì)系統(tǒng)及框架代碼自動生成方法,用戶界面層基于可視化操作界面向代碼生成層提供模型;代碼生成層用于對模型進(jìn)行解析,其中用戶界面層包括用于圖形化建模的圖形編輯器和作為生成代碼框架修改環(huán)境的代碼編輯器,代碼生成層包括算法骨架模塊、模型驗(yàn)證模塊和代碼生成模塊,算法骨架模塊用于描述模式的特征和行為,將設(shè)計(jì)模式進(jìn)行再次的封裝,提供程序框架;模型驗(yàn)證模塊用于在代碼生成前對模型的邏輯正確性進(jìn)行驗(yàn)證,代碼生成模塊用于根據(jù)用戶需求不同調(diào)用不同的并行標(biāo)準(zhǔn)庫。與現(xiàn)有技術(shù)相比,本發(fā)明具有很好的通用性,即使不具備專業(yè)編程知識的專業(yè)人員,也可以通過可視化的建模方式自形生成代碼框架。
      文檔編號G06F9/44GK101464799SQ20091006771
      公開日2009年6月24日 申請日期2009年1月16日 優(yōu)先權(quán)日2009年1月16日
      發(fā)明者策 于, 杰 劉, 超 孫, 孫濟(jì)洲, 孟曉靜, 廖士中, 禎 徐, 武華北, 湯善江 申請人:天津大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1