隨著我國水利水電工程建設的向西推進,在建或擬建超大規模大壩數量不斷增多,再加上西南山區復雜地質條件、高地應力的影響,復雜力學問題求解分析的深入,水工結構工程科學計算的“瓶頸”日趨嚴重,傳統Von Neumann體系下計算機計算能力已不能滿足需求。即使將模型及算法簡化,一次計算仍然需要幾小時、幾天乃至數十天的時間,嚴重制約著水利學科的發展。
因此急需采用已在其他諸如氣象預報、分子動力學、新藥研制等領域廣泛應用的高性能并行計算,為水工結構工程的數值仿真研究提供新的技術支撐。雖然并行計算自20世紀70年代起就已有學者研究,但其應用于水工結構數值仿真中的時間較晚。水工問題主要以有限元為分析方法,因而目前研究主要針對有限元展開,并取得了一定成果。
1水工有限元并行計算的3種策略
在水工結構工程中,有限元分析已成為不可或缺的方法。針對有限元的計算步驟,常用的有限元并行計算方法可以分為方程組并行求解、區域分解方法和EBE(Element-by-element)方法[1].
1.1方程組并行求解
線性方程組是許多水工數值仿真問題的核心。理論上,有限元分析最終都歸結到求解線性方程組Ax=b,A為整體剛度矩陣,x為待求結點位移向量,b為區域荷載向量。對于線性的結構力學分析,剛度矩陣A是對稱正定的,而且往往是稀疏帶狀的。有限元計算過程中,方程組的求解占據了大部分計算時間。即使是對于最簡單的靜力分析,代數方程組的求解時間也占整個分析時間的70%以上,動力分析則要占到90%以上[2].
因此,將上述方程組求解并行化成為提高計算效率的簡單、有效方法。對于方程組Ax=b的并行求解,有兩方面工作需要做:一是并行計算剛度矩陣A的分解;二是并行求解相應的三角形方程組,此部分較容易實現。對于矩陣A的分解,可以采用Cholesky分解。
張健飛、姜弘道[3]研究了帶狀對稱正定矩陣A在等帶寬存儲方式下的并行Cholesky分解算法,并采用提前發送(Send Ahead)的策略減少了通信時間。數值試驗表明該算法具有較高的加速比和效率。但這種并行化的方法在計算過程中往往會引入大量的非零元素的填充,降低了矩陣的稀疏性,同時對內存需求也很大。當計算量大時,采用分布式并行計算的數據交換量也大,因而限制了數值仿真問題的規模。
1.2區域分解
由于在迭代過程中需要大量的數據交換,采用方程組并行求解會大大降低計算速度,導致并行效率的降低,尤其是在分布式內存并行系統中。因而對于分布式內存并行系統,采用區域分解算法有利于提升大型水工結構仿真計算速度。
區域分解算法(Domain Decomposition Meth-od)作為一種偏微分方程數值解的新技術在20世紀80年代驟然興起。它是為適應并行計算機工作原理而生成的一種算法。
在并行計算中,區域分解算法又被稱為“分而治之”策略,即將一個大型的計算問題依據某種方法將其分解成為許多個小問題,再利用對應多個并行機來求解這些小問題,最終將問題解決[4].在水工數值仿真問題中,通常將大壩、地基、水工閘門等規模較大的水工結構建模,將有限元網格分解為若干子結構,再在這些子結構上進行相應的有限元計算,最后匯總得到整個模型的解。水工有限元計算問題中,一個區域的系統方程為
同時,相應的荷載向量也按同樣原理進行分解。這樣,式(1)的求解就可轉化到子區域上進行,從而整個有限元計算就可并行求解。
1.3 EBE方法
進行有限元計算時,采用方程組并行求解實現比較容易,但當問題規模增大時,內存的需求也會相應增大,此外還可能涉及內外存交換技術,導致計算速度的降低;而區域分解方法往往只能在計算區域比較規則且剖分的子結構較好時才能獲得很高的并行效率。對于三維問題,區域分解算法仍是一個沒有得到很好解決的問題[5].
有限元EBE(element-by-element)方法則能很好地解決上述方法所面臨的問題。它不進行整體剛度矩陣和整體荷載向量的集成,所有計算均在單元一級上進行,因此可以實現有限元整個計算過程的并行化[5].
對于一個水工有限元數值仿真問題,在將求解區域進行有限元網格離散化后,得到如下方程組:
假設Ae與be為單元e對整個問題的貢獻,因而它們具有和整體矩陣相同的維數,從而可將式(4)改寫成:
其中:
Ae為僅在與單元e相關的位置元素才不為0的極度稀疏矩陣。在實際計算時,僅需存儲Ae的壓縮形式。同時,邊界條件經過處理也很容易施加到單元一級上。這樣,所有的計算均可在單元一級上相互獨立地進行,這也就是EBE的基本思想。
在求解過程中,需先對矩陣A進行預處理。適用于EBE方法的預處理技術可分為兩類:一類是將對整體剛度矩陣的預處理技術應用到共軛梯度法(CG)中,包括Jacobi預處理和多項式預處理;一類是基于矩陣的分裂獲取一個A的近似來作為預處理矩陣。EBE并行求解時,具體的計算過程可歸納如下:
1)對每一個單元,計算單元剛度矩陣和相應的右端荷載向量,并施加邊界條件。
2)采用基于EBE策略的預處理共軛梯度法(EBE-PCG)求解方程組,得到單元節點位移。
3)利用單元節點位移計算單元應變和應力。
4)單元節點位移集成總體節點位移并輸出。
其中,在采用EBE-PCG方法求解方程組時,各個處理器之間需要交換與邊界節點(各處理器間有關聯的節點)有關的數據,實現時可采用壓縮形式進行傳輸。
當計算規模增大時,可以保證處理器間需交換的數據量不會隨之增大。
2并行實現的方法
2.1 PC網絡機群
PC網絡機群主要是利用高速通訊網絡將一組高性能PC機按某種結構連接起來,進行統一調度、協調處理,從而實現高效并行計算。PC網絡機群具有可擴展性、高性價比、用戶編程方便等特點。機群系統采用通用網絡連接,因而當計算需要時易于擴大機群規模。
其次,PC機群采用廉價的PC機搭建而成,相對價格高昂的巨型機經濟適用。
此外,PC機群多采用WINDOWS操作系統,因而科研人員在熟悉的編程環境下易于開發調試并行計算程序,并進行相應問題的求解。
基于上述特點,在土木水利工程方面,許多科研人員搭建了PC網絡機群并進行了并行計算在該領域的應用研究。
張友良等[6]利用100Mbps高速以太網絡聯結若干臺個人計算機搭建了并行系統平臺,在此平臺上基于消息傳遞機制的MPI系統進行并行有限元程序開發,對水布婭地下廠房三維模型進行了模擬。
茹忠亮等[7]搭建了PC機群,采用C++語言與MPI環境開發了并行有限元計算程序,利用6臺計算機對247 871個單元的有限元模型進行了并行求解,并行加速比達到5.26,驗證了程序的可靠性和高效性。
2.2高性能計算集群
高性能計算集群又稱分布存儲式并行計算系統,是由多個互相連接的獨立計算機組成的系統。
有別于PC網絡機群,高性能計算集群主要是指由商業公司開發的大型系統,如曙光集群、HP集群等。它 主 要 采 用Linux操 作 系 統,常 見 的 有SuSeLinux、Redhat Enterprise Linux等。
在并行計算技術的發展過程中,基于X86架構的服務器機群系統因其具備良好的可擴展性、更高的可管理性、更低的使用維護成本、更好的可使用性、更高的系統魯棒性和更多的應用支持成為目前并行計算領域的主流技術?;谏鲜鰞烖c,高性能集群在數值仿真領域有著廣泛的運用。
劉耀儒等[5]利用清華大學研制的高性能集群系統,采用C/C++語言和MPI通信標準編制了有限元程序,成功對水布埡大型地下洞室進行了大規模數值計算。