基于mpi的網格并行預處理方法
【技術領域】
[0001]本發(fā)明涉及一種并行預處理技術,具體地說,涉及一種網格并行預處理方法。
【背景技術】
[0002]在科學與工程計算領域中,網格對各類微分方程的數(shù)值求解具有重要意義,網格分布是求解計算的基礎環(huán)境。微分方程的求解主要包括數(shù)值離散和代數(shù)方程組求解兩步,在離散方法確定的情況下,網格分布信息能直接反映代數(shù)方程組解向量和系數(shù)矩陣的邏輯結構。隨著并行計算的廣泛應用,網格在微分方程的并行求解中扮演著十分重要的角色。對分布式并行計算而言,基于區(qū)域分解的網格劃分和網格數(shù)據(jù)分布存儲的并行執(zhí)行是微分方程主要的并行求解途徑。
[0003]網格劃分通過建立網格單元與并行計算機多處理器的對應關系,將一個大規(guī)模復雜的網格劃分成多個子網格。網格劃分的好壞直接影響著并行計算的效率和求解算法的精確度,網格劃分策略的關鍵在于如何將大網格進行劃分,使得子網格較容易并行求解,并且能夠達到各處理器上計算負載平衡和處理器間通信開銷最小的目標。
[0004]數(shù)據(jù)分割和網格信息管理是網格并行預處理主要的耗時階段,現(xiàn)有技術在網格預處理的數(shù)據(jù)分割和網格信息管理階段,耗時長,效率低。對于網格的劃分,現(xiàn)有的多層遞歸對分、行列劃分等技術速度慢,劃分質量不理想。現(xiàn)有網格預處理方案多為串行執(zhí)行的方式,只能在單個CPU核上執(zhí)行,同時多采用串行遍歷網格文件,速度較慢。而且,現(xiàn)有網格預處理方案多將網格數(shù)據(jù)文件集中存儲在一個或少數(shù)幾個文件里,當數(shù)據(jù)規(guī)模較大時,會產生I/o文件讀寫堵塞,影響網格處理數(shù)據(jù)的規(guī)模和速度。
【發(fā)明內容】
[0005]本發(fā)明的目的在于提供一種基于MPI的網格并行預處理方法,采用ParMETIS實現(xiàn)高效快速的網格劃分,采用分布式存儲網格數(shù)據(jù),提高了處理數(shù)據(jù)的規(guī)模和速度。
[0006]為了實現(xiàn)上述目的,本發(fā)明所采用的技術方案如下:
[0007]—種基于MPI的網格并行預處理方法,包括以下步驟:給定計算域的網格的分區(qū)數(shù);啟動MPI多進程,設定進程數(shù);判斷進程數(shù)是否等于分區(qū)數(shù),若等于則打開網格文件,主進程讀取網格單元信息文件,將網格單元平均初始分配到各個進程,每個進程創(chuàng)建網格單元的鄰接數(shù)組,否則重新啟動MPI多進程;每個進程調用ParMETIS對網格單元進行網格劃分;每個進程將網格單元信息分塊讀到數(shù)組,設定數(shù)組的索引位置;每個進程循環(huán)遍歷網格單元信息文件,判斷數(shù)組長度減去數(shù)組的索引位置號是否小于網格單元信息長度,若小于則讀取網格單元信息文件的數(shù)據(jù)填充到數(shù)組中,否則將數(shù)組元素賦值給網格單元,并修改數(shù)組的索引位置;判斷網格單元的分區(qū)號是否等于進程號,若等于則將網格單元信息存儲到進程文件中,否則修改數(shù)組索引位置,繼續(xù)循環(huán)判斷。
[0008]進一步,計算域的網格的分區(qū)數(shù)小于或等于并行計算機的處理器數(shù)。
[0009]進一步,鄰接數(shù)組的存儲格式為CSR。
[0010]進一步,每個進程調用ParMETIS的子程序ParMETIS_V3_Mesh2Dual,將網格單元轉化成圖。
[0011]進一步,每個進程調用ParMETIS的子程序ParMETIS_V3_AdaptiveRepart,對圖進行重劃分。
[0012]進一步,每個進程調用ParMETIS的子程序ParMETIS_V3_Ref ineKway,進一步精化網格劃分的質量。
[0013]與現(xiàn)有技術相比,本發(fā)明采用ParMETIS實現(xiàn)高效快速的網格劃分,采用分布式存儲網格數(shù)據(jù),提高了處理數(shù)據(jù)的規(guī)模和速度。
【附圖說明】
[0014]圖1為本發(fā)明的網格并行預處理的流程示意圖;
[0015]圖2為本發(fā)明的網格分布式存儲的流程示意圖。
【具體實施方式】
[0016]下面結合附圖和具體實施例對本發(fā)明基于MPI的網格并行預處理方法作進一步說明。
[0017]本發(fā)明采用基于MPI的分布式并行執(zhí)行方式,通過ParMETIS并行網格分區(qū)和重分區(qū)功能,利用多層k-路圖劃分方法對三維網格進行高質量的劃分。根據(jù)網格劃分后的結果,啟動多進程循環(huán)遍歷網格文件,實現(xiàn)大規(guī)模網格的快速并行預處理。利用本發(fā)明基于MPI的網格并行預處理方法,能顯著減少網格并行計算中的通信時間,提高并行計算效率。
[0018]ParMETIS (Parallel Graph Partit1ning and Fill-reducing MatrixOrdering)-并行圖劃分和填充-約化矩陣排序,特別適合于大規(guī)模無結構網格的并行數(shù)值模擬。ParMETIS基于MPI并行庫,實現(xiàn)了用于無結構圖劃分、網格劃分、計算稀疏矩陣的填充-約化次序等多種算法。ParMETIS擴展了 METIS所提供的功能,并包含了特別適合于并行計算和大規(guī)模數(shù)值模擬的子程序。ParMETIS中實現(xiàn)的算法有基于并行的多層k_路圖劃分算法,多層k-路圖劃分是一種基于圖論的劃分方法,通常有圖的粗化算法、初始劃分算法和還原優(yōu)化算法組成。基于多層k-路圖劃分方法使各子圖的頂點權值基本相同且劃分產生的邊截權數(shù)最小化,劃分結果產生的通信時間與行列等其它劃分方法相比大大降低,從而使得整個并行程序的執(zhí)行時間能得到有效減少,并且隨著數(shù)據(jù)規(guī)模的不斷增大和處理器個數(shù)的增加,通信開銷降低的效果更加明顯。
[0019]網格劃分完成之后,可隨即獲得各網格結點或單元與處理器的分配對應關系,接著需要根據(jù)此劃分結果為網格信息的分布式存儲進行數(shù)據(jù)分割。數(shù)據(jù)分割的主要實現(xiàn)過程是對所有處理器按結點或單元編號做遍歷循環(huán),對劃分給當前處理器的結點或單元,把對應的數(shù)組元素與網格單元結點列表遷移到本地存儲器中,最終在各個處理機內部生成局部的坐標數(shù)組與鄰點矩陣,實現(xiàn)網格信息的分布式存儲。
[0020]MPI是一種基于消息傳遞的并行編程模型,現(xiàn)被廣泛應用于分布式存儲結構的并行計算中。MPI通過MPI_Init函數(shù)初始化MPI執(zhí)行環(huán)境,啟動多個進程,創(chuàng)建多個MPI進程之間的通信域?;贛PI的分布式并行執(zhí)行策略,是一種粗粒度的并行算法,通過將有限元網格計算區(qū)域劃分成與進程數(shù)相等的子區(qū)域數(shù),然后將這些子區(qū)域的網格數(shù)據(jù)映射到每個進程上并行預處理。由于每個進程只負責各自子區(qū)域的預處理,只在網格子區(qū)域邊界面上產生通信,數(shù)據(jù)通信量少,因此能獲得很好的并行預處理的效果。
[0021]請參閱圖1,本發(fā)明提供的網格并行預處理的方案,在計算機上啟動MPI多進程,設定執(zhí)行ParMETIS分區(qū)任務的進程數(shù),即創(chuàng)建ParMETIS的通信域。利用ParMETIS并行區(qū)域分解工具,倉Il建網格單元的鄰接數(shù)組xadj和adjncy,作為ParMETIS功能函數(shù)的輸入?yún)?shù),將網格轉化成圖,再將圖進行重分區(qū)。重分區(qū)結果能實現(xiàn)并行計算的負載平衡和較少的分區(qū)邊界數(shù),從而減少并行計算的通信時間,顯著提高網格并行計算的效率。ParMETIS網格劃分結果建立了網格單元或結點與處理器進程間的一一對應關系,各進程根據(jù)該劃分結果循環(huán)遍歷網格信息文件,通過定位文件指針和數(shù)組索引的方法分塊讀網格數(shù)據(jù),對劃分給當前處理器的結點或單元,把對應的數(shù)組元素與網格單元結點列表遷移到本地存儲器中,最終在各個處理器內部生成局部的坐標數(shù)組與鄰接矩陣,快速實現(xiàn)網格信息的分布式存儲。本發(fā)明定位文件指針和數(shù)組索引分塊讀的方法,大量減少了讀文件的操作,而且有效避免了多進程同時讀文件產生的競爭等待時間消耗。
[0022]請參閱圖1和圖2,網格數(shù)據(jù)分布式存儲完成后,各進程采用鏈表數(shù)據(jù)結構,將構成本地網格單元的所有網格結點進行插入排序,以索引鏈表表示本地網格結點的局部索弓丨,創(chuàng)建網格結點的局部索引。各進程對網格單元進行重排序,改善求解線性方程組稀疏矩陣的品質,并對排序后的網格單元設置進程間通信關系索引,最后各進程保存本地稀疏矩陣等數(shù)據(jù)用作方程的并行求解。本發(fā)明中的高質量網格劃分結果和高效快速的實現(xiàn),為微分方程并行求解的精確性提供了保障,同時為大規(guī)模網格在數(shù)值模擬中的應用提供了方便。
[0023]請參閱圖2,本發(fā)明公開了一種基于MPI的網格并行預處理方法,包括以下步驟:給定計算域的