兩級分區(qū)兩次縮聚并行計(jì)算系統(tǒng)開發(fā)方法及并行計(jì)算系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種超級計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域的設(shè)計(jì)方法,具體是一種兩級分區(qū)兩次 縮聚并行計(jì)算系統(tǒng)開發(fā)方法。
【背景技術(shù)】
[0002] 雖然近年來我國在超級計(jì)算機(jī)研制上取得了許多重要突破,但在高性能計(jì)算軟件 開發(fā)和應(yīng)用上卻遠(yuǎn)遠(yuǎn)滯后于硬件的發(fā)展。為了滿足國內(nèi)科學(xué)研宄和工程分析的需要,我國 每年都要為國外的大型商業(yè)軟件支付昂貴的使用費(fèi)用。在有限元分析領(lǐng)域,國外著名的大 型商業(yè)化軟件如Ansys,Abaqus,Ls-Dyna和Adina等均已發(fā)布并行計(jì)算版本。但由于種種 原因它們對中國用戶能夠操控的最大并行求解核數(shù)進(jìn)行了一系列限制,致使我國超級計(jì)算 機(jī)的高效計(jì)算性能不能得到充分的發(fā)揮。此外,這些商業(yè)軟件在一些由我國完全獨(dú)立自主 研發(fā)的超級計(jì)算機(jī)上還存在不能正常安裝和運(yùn)行的問題。對于超級計(jì)算機(jī)來說,缺乏合適 的應(yīng)用軟件就無法開展相應(yīng)的應(yīng)用,也就無法吸引用戶使用超級計(jì)算機(jī)高效地解決科學(xué)和 工程中面臨的大規(guī)模計(jì)算難題。我國高性能計(jì)算軟件開發(fā)和應(yīng)用遠(yuǎn)遠(yuǎn)滯后于硬件發(fā)展的現(xiàn) 狀不僅導(dǎo)致了現(xiàn)有的超級計(jì)算機(jī)資源無法充分應(yīng)用到國民經(jīng)濟(jì)建設(shè)、高科技研宄和國防安 全中去,同時(shí)也限制了我國高性能計(jì)算自身的發(fā)展。因此,如何高效地開發(fā)出有限元分析并 行計(jì)算軟件以有效拓寬超級計(jì)算機(jī)的應(yīng)用范圍成為當(dāng)務(wù)之急。
[0003] 經(jīng)對現(xiàn)有技術(shù)文獻(xiàn)的檢索發(fā)現(xiàn):陳玉震等在計(jì)算力學(xué)學(xué)報(bào),2014, 31 (2) : 217-222 上發(fā)表文章"基于開放式結(jié)構(gòu)有限元系統(tǒng)SiPESC. FEMS的動(dòng)力時(shí)程分析通用算法構(gòu)架",該 文基于SiPESC. FEMS軟件采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法研發(fā)了一種結(jié)構(gòu)動(dòng)力分析通用算 法構(gòu)架。雖然利用該構(gòu)架進(jìn)行并行計(jì)算軟件開發(fā)可在一定程度上提高代碼的重用性和可維 護(hù)性,但實(shí)際操作起來卻存在很大的難度。首先SiPESC. FEMS的體系結(jié)構(gòu)過于龐大,因此要 在短時(shí)間內(nèi)弄清程序各部分的功能和子例程間的調(diào)用關(guān)系并非易事,而要在此基礎(chǔ)上對程 序進(jìn)行修改或添加新功能的難度則更大。其次,SiPESC. FEMS目前實(shí)現(xiàn)的功能還十分有限, 故在它的基礎(chǔ)上開發(fā)的并行計(jì)算軟件只適用于求解特定領(lǐng)域和特定類型的有限元分析問 題。
【發(fā)明內(nèi)容】
[0004] 針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種兩級分區(qū)兩次縮聚并行計(jì)算系 統(tǒng)開發(fā)方法。該方法不但能夠?yàn)楦鱾€(gè)學(xué)科和領(lǐng)域的有限元分析問題提供并行解決方案,而 且能夠提高有限元分析并行計(jì)算軟件開發(fā)的質(zhì)量和效率。
[0005] 根據(jù)本發(fā)明提供的一種兩級分區(qū)兩次縮聚并行計(jì)算系統(tǒng)開發(fā)方法,包括如下步 驟:
[0006] 第一步,根據(jù)求解問題的數(shù)學(xué)方程表達(dá)式通過有限元程序自動(dòng)生成系統(tǒng)FEPG產(chǎn) 生有限元分析串行計(jì)算所需的全部程序源代碼;
[0007] 第二步,去除所述全部程序源代碼中的求解線性方程組模塊,并基于區(qū)域分解法 對所述全部程序源代碼中的剩余模塊進(jìn)行并行化改造;
[0008] 第三步,基于兩級分區(qū)和兩次縮聚策略開發(fā)并行求解線性方程組模塊,并與第二 步中并行化改造后的所述剩余模塊實(shí)現(xiàn)無縫集成,得到集成后的系統(tǒng);
[0009] 第四步,對所述集成后的系統(tǒng)進(jìn)行編譯和調(diào)試,生成有限元分析并行計(jì)算可執(zhí)行 程序。
[0010] 優(yōu)選地,所述第一步中,所述全部程序源代碼由四個(gè)模塊組成:單元分析模塊、形 成系統(tǒng)平衡方程模塊、求解線性方程組模塊以及計(jì)算應(yīng)變應(yīng)力模塊;
[0011] 所述單元分析模塊,用于根據(jù)單元的類型和插值函數(shù)實(shí)現(xiàn)單元?jiǎng)偠染仃嚭唾|(zhì)量矩 陣的計(jì)算;
[0012] 所述形成系統(tǒng)平衡方程模塊,用于通過組集單元?jiǎng)偠染仃嚭屯獠枯d荷向量完成系 統(tǒng)總體剛度矩陣和總體外部載荷向量的計(jì)算以形成系統(tǒng)平衡方程;
[0013] 所述求解線性方程組模塊,用于通過求解系統(tǒng)平衡方程得到系統(tǒng)各節(jié)點(diǎn)處的位移 值;
[0014] 所述計(jì)算應(yīng)變應(yīng)力模塊,用于根據(jù)求得的位移值實(shí)現(xiàn)系統(tǒng)應(yīng)變、應(yīng)力的計(jì)算。
[0015] 優(yōu)選地,所述第二步中,所述基于區(qū)域分解法對剩余模塊進(jìn)行并行化改造,具體包 括步驟:并行計(jì)算環(huán)境的添加、各子區(qū)域節(jié)點(diǎn)的重新編號以及程序數(shù)據(jù)傳遞方式的改變; 其中:
[0016] 所述并行計(jì)算環(huán)境的添加,是利用消息傳遞接口 MPI初始化和退出指令將串行程 序轉(zhuǎn)換成并行程序;
[0017] 所述各子區(qū)域節(jié)點(diǎn)的重新編號,是將每個(gè)子區(qū)域的節(jié)點(diǎn)編號映射到從1開始的連 續(xù)正整數(shù)集上;
[0018] 所述程序數(shù)據(jù)傳遞方式的改變,是指通過將不同子列程間的數(shù)據(jù)傳遞方式由文件 傳輸改為函數(shù)接口參數(shù)傳輸。
[0019] 優(yōu)選地,所述第三步中,所述兩級分區(qū)策略,是通過兩級剖分實(shí)現(xiàn)的,具體為:
[0020] 首先將結(jié)構(gòu)有限元網(wǎng)格并行剖分為M個(gè)一級子區(qū)域,然后再將每個(gè)一級子區(qū)域進(jìn) 一步獨(dú)立地剖分為N個(gè)二級子區(qū)域;其中,為與多核分布式并行計(jì)算環(huán)境相適應(yīng),M等于并 行計(jì)算每次啟動(dòng)的節(jié)點(diǎn)機(jī)總數(shù),N等于每個(gè)節(jié)點(diǎn)機(jī)的處理器內(nèi)核總數(shù)。
[0021] 優(yōu)選地,所述第三步中,所述兩次縮聚策略,是通過依次在二級子區(qū)域和一級子區(qū) 域上應(yīng)用舒爾補(bǔ)方法實(shí)現(xiàn)縮聚過程的,具體為:
[0022] 首先同時(shí)獨(dú)立形成各二級子區(qū)域平衡方程,并經(jīng)縮聚消去各二級子區(qū)域內(nèi)部自由 度;然后通過將同一節(jié)點(diǎn)機(jī)內(nèi)所有二級子區(qū)域界面方程組集以形成相應(yīng)一級子區(qū)域平衡方 程;再經(jīng)縮聚消去各一級子區(qū)域內(nèi)部自由度,得到各一級子區(qū)域僅與邊界自由度相關(guān)的界 面方程。
[0023] 根據(jù)本發(fā)明提供的一種并行計(jì)算系統(tǒng),所述并行計(jì)算系統(tǒng)是通過權(quán)利要求1至5 中任一項(xiàng)所述的兩級分區(qū)兩次縮聚并行計(jì)算系統(tǒng)開發(fā)方法得到的。
[0024] 與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
[0025] (1)能夠?yàn)楦鱾€(gè)學(xué)科和領(lǐng)域的有限元分析問題提供并行解決方案,從而突破了目 前專業(yè)軟件和商業(yè)軟件只適用于求解特定領(lǐng)域和特定類型問題的限制。由于FEPG是一個(gè) 通用的有限元程序自動(dòng)生成系統(tǒng),因此在它的基礎(chǔ)上開發(fā)的并行計(jì)算程序適用于求解各個(gè) 學(xué)科和領(lǐng)域的有限元分析問題。
[0026] (2)可以減少大量繁瑣復(fù)雜的編程工作,從而有效提高有限元分析高性能計(jì)算軟 件開發(fā)的質(zhì)量和效率。用戶只需根據(jù)求解問題的數(shù)學(xué)方程表達(dá)式就可通過FEPG平臺自動(dòng) 生成有限元分析串行計(jì)算所需的全部源代碼,然后基于區(qū)域分解法對其進(jìn)行并行化改造就 能高效實(shí)現(xiàn)并行計(jì)算軟件的開發(fā)。
[0027] (3)能夠?qū)崿F(xiàn)任務(wù)級的粗粒度并行,從而有效提高并行程序的執(zhí)行效率?;趨^(qū)域 分解法實(shí)現(xiàn)對串行程序的并行化改造后,除了界面方程求解外,其余大部分計(jì)算任務(wù)如:子 區(qū)域單元?jiǎng)偠染仃嚨挠?jì)算、總體剛度矩陣和總體外部載荷向量的組集、縮聚以及內(nèi)部自由 度的回代等均可獨(dú)立完成,因此系統(tǒng)具有較高的并行度。
[0028] (4)能夠?qū)崿F(xiàn)節(jié)點(diǎn)內(nèi)和節(jié)點(diǎn)間通信的分離,從而有效提高并行程序的通信效率?;?于兩級分區(qū)和兩次縮聚策略開發(fā)的并行計(jì)算系統(tǒng)在并行計(jì)算時(shí)能夠?qū)⒋罅烤植客ㄐ畔拗?在各節(jié)點(diǎn)機(jī)內(nèi)部,并確保各節(jié)點(diǎn)機(jī)只有一個(gè)進(jìn)程參與全局通信。這就實(shí)現(xiàn)了節(jié)點(diǎn)內(nèi)與節(jié)點(diǎn) 間通信的分離,減少了進(jìn)程間通信和同步的開銷,從而有效提高了系統(tǒng)通信效率。
【附圖說明】
[0029] 通過閱讀參照以下附圖對非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、 目的和優(yōu)點(diǎn)將會變得更明顯:
[0030] 圖1為本發(fā)明實(shí)施例中的總體實(shí)現(xiàn)流程圖;
[0031] 圖2為本發(fā)明實(shí)施例中的節(jié)點(diǎn)重新編號實(shí)現(xiàn)流程圖;
[0032] 圖3為本發(fā)明實(shí)施例中的數(shù)據(jù)傳遞方式改變實(shí)現(xiàn)流程圖;
[0033] 圖4為本發(fā)明實(shí)施例中的兩級分區(qū)示意圖;
[0034] 圖5為本發(fā)明實(shí)施例中的兩次縮聚示意圖。
【具體實(shí)施方式】
[0035] 下面結(jié)合具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù) 人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù) 人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明 的保護(hù)范圍。
[0036] 本發(fā)明提供一種并行計(jì)算系統(tǒng),該并行計(jì)算系統(tǒng)是通過兩級分區(qū)兩次縮聚并行計(jì) 算系統(tǒng)開發(fā)方法得到的,所述兩級分區(qū)兩次縮聚并行計(jì)算系統(tǒng)開發(fā)方法,包括四個(gè)步驟: (1)根據(jù)求解問題的數(shù)學(xué)方程表達(dá)式通過有限元程序自動(dòng)生成系統(tǒng)(FEPG,F(xiàn)inite Element Program Generator)產(chǎn)生有限元分析串行計(jì)算所需的全部程序源代碼;(2)去除程序源代 碼中的求解線性方程組模塊,并基于區(qū)域分解法對剩余模塊(單元分析模塊、形成系統(tǒng)平 衡方程模塊以及計(jì)算應(yīng)變應(yīng)力模塊)進(jìn)行并行化改造;(3)基于兩級分區(qū)和兩次縮聚策略 開發(fā)并行求解線性方程組模塊,并與上一步并行化改造后的模塊實(shí)現(xiàn)無縫集成;(4)對集 成后的系統(tǒng)進(jìn)行編譯和調(diào)試,生成有限元分析并行計(jì)算可執(zhí)行程序。本發(fā)明不但能夠?yàn)楦?個(gè)學(xué)科和領(lǐng)域的有限元分析問題提供并行解決方案,而且能夠提高有限元分析并行計(jì)算軟 件開發(fā)的質(zhì)量和效率。
[0037] 具體地,本實(shí)施例中的總體實(shí)現(xiàn)流程如圖1所示。一種兩級分區(qū)兩次縮聚并行計(jì) 算系統(tǒng)開發(fā)方法總體流程主要包括:首先根據(jù)求解問題的數(shù)學(xué)方程表達(dá)式通過FEPG產(chǎn)生 有限元分析串行計(jì)算所需的全部程序源代碼;接著去除程序源代碼中的求解線性方程組模 塊,并基于區(qū)域分解法對剩余模塊進(jìn)行