摘要:本次論文首先對并行計算進行了基礎性的分析,主要包括軟、硬件體系結構、編程模型、算法等,涉及了并行計算中的新技術,也包含了傳統的算法。在比較了MPI、PVM和OpenMP作為編程模型的利弊之后,選擇了MPI作為并行計算環境,最后在搭建好的并行式Matlab平臺中運行了幾個例子,初步展現了并行計算的高效與快捷。
關鍵詞:并行計算;Matlab;信息傳遞接口
中圖法分類號:TP316文獻標識碼:A文章編號:1009-3044(2008)08-10ppp-0c
化工過程系統通常采用基于過程機理和嚴格物性計算的精確數學模型,需要耗費大量的計算時間才能求解。盡管目前計算機的硬件和和處理能力已經有了極大的提升,但單純依賴單機直接進行大規模化工過程系統優化尚有許多困難。采用個人計算機機群系統的分布式并行計算技術為大規模、非線性的化工系統優化問題提供了一個擴展性好、易于實現的解決方案。并行計算機和并行計算環境的研究一直是高性能計算研究領域的熱點之一。
1 集群簡介
集群(cluster)就是向用戶提供網絡資源的一組計算機,其中的每個計算機系統就是集群的節點(node)。集群就是一個系統,而非多個計算機系統.并且集群系統的管理員可以隨意增加和刪改集群系統的節點。對集群的研究起源于集群系統的良好的性能可擴展性。提高CPU主頻和總線帶寬是最初提供計算機性能的主要手段。但是這一手段對系統性能的提供是有限的。接著人們通過增加CPU個數和內存容量來提高性能,于是出現了向量機,對稱多處理機(SMP)等。但是當CPU的個數超過某一閾值,像SMP這些多處理機系統的可擴展性就變的極差。主要瓶頸在于CPU訪問內存的帶寬并不能隨著CPU個數的增加而有效增長。與SMP相反,集群系統的性能隨著CPU個數的增加幾乎是線性變化的。如下圖

圖1 集群系統的性能與CPU關系
2 MPI、PVM和OpenMP的介紹
由于消息傳遞并行編程模型的廣泛應用,目前已經出現了許多基于該模型的并行編程語言,其中最流行的是PVM(Parallel Virtual Machine)、MPI(Message Process Interface)和OpenMP。第一個將工作站集群作為并行計算平臺并被廣泛接受的并行編程語言是PVM。它由美國的Oak Ridge國家實驗室、Tennessean大學、Emorg大學、CMU大學等聯合開發而成,能夠將異構的Unix計算機通過異構網絡連接成一個\"虛擬\"的并行計算系統,為其上運行的應用程序提供分布式并行計算環境。
PVM是一種基于局域網的并行計算環境。它通過將多個異構的計算機有機地組織起來,形成一個易于管理、易于編程、并且具有很好的可擴展性的并行計算環境。MPI是為開發基于消息傳遞模型的并行程序而制定的工業標準,其目的是為了提高并行程序的可移植性和易用性。 OpenMP起源于ANSI X3H5標準,它具有簡單、移植性好和可擴展等優點,是共享存儲系統編程的一個工業標準。實際上OpenMP并不是一門新的語言,它是對基本語言(如Fortan77、Fortan90、C、C++等)的擴展。
3 基于Matlab的分布式并行優化計算環境
現有的基于消息傳遞的并行計算平臺如PVM、MPI,都是一種通用的消息傳遞環境,功能非常強大。但是由于其抽象層次較低,它們并未將程序員從低層的并行實現策略中解脫出來。發送端和接受端的通訊匹配、系統死鎖的避免以及并行系統性能的預測等問題都對程序設計人員提出了很高的要求。
目前的常用仿真計算都是基于Matlab環境,因此,開發基于Matlab的并行計算平臺也有很大的必要性。在本文討論的設計中,并行優化平臺的運行是在Matlab環境中進行的,由于Matlab是一種跨平臺軟件,因此整個并行計算環境也間接地實現了跨平臺,滿足了在Windows平臺下并行計算的需要。在平臺實現中,如果能有效地利用大粒度的分解計算,可以降低程序實現的復雜性。從機群系統的應用要求上來看,也需要大粒度的并行,以減少通訊開銷,從而獲得更高效率。因此,并行優化計算環境的設計是大粒度的。基于Matlab的并行優化計算平臺的層次結構基本上可以由圖2來表示,采用消息傳遞模式,消息傳遞時利用同步阻塞方式。

圖2 并行優化計算平臺層次結構
根據并行的基本原理,可以得出結論:并行計算無外乎任務的分解和綜合。并行優化計算平臺設計也應依照此原理來進行,同時采用共享文件作為并行的數據傳輸方式。Matlab下有很多的工具庫函數,各類不同的計算往往通過不斷調用工具庫中的函數來實現。同樣,也可以設計一個并行基礎函數庫,提供實現并行計算所需要的最基本函數。并行的函數,如果不涉及到平臺的管理,基本上可以劃分為初始化函數,發送接收任務函數、進行任務函數和回送并綜合結果函數四大類。
4 并行式Matlab平臺搭建
第一步:Matlab2007a的安裝
第二步:聯機
本次論文用的是由兩臺普通PC機(名為use1的華碩A8筆記本電腦和名為use2的清華同方臺式機)連接構成的小集群,由于機器數目比較少,我們直接用交叉線把電腦連了起來,從而構成一個局域網就可以了。
第三步:在Windows上配置MDCE
第四步:用任務管理器測試已安裝的MDCE
(1)檢查網絡連接
(2)執行一個分布式程序
(3)創建、定義、執行job
5 平臺應用舉例
(有公式輸入 注意)
的數值計算
(1)介紹:我們已經知道有:,根據等式左邊的 積分可以估算出 的值,下面將分別在單機和并行式Matlab平臺中來計算 的值。
(2)單機計算:
程序如下
>>Format long
>>tic
F= @(x) 4./(1 + x.^2)
a=(labindex - 1)/numlabs;
b=labindex/numlabs;
[a,b]
myIntegral = quadl(F, a, b)
piApprox = gplus(myIntegral)
abs(pi - piApprox)
toc
e=toc
由上述結果可以看出:單機運行這個程序總共花了0.014315227214632秒時間
(3)并行計算
準備步驟:
(1)按照第五章各項步驟搭建好并行式Matlab平臺
(2)輸入程序如下
Format long
tic
F= @(x) 4./(1 + x.^2)
a=(labindex - 1)/numlabs;
b=labindex/numlabs;
[a,b]
myIntegral=quadl(F, a, b)
piApprox=gplus(myIntegral)
abs(pi-piApprox)
toc
e=toc
運行這個程序總共花了0.008894705891391秒時間
(4)小結:由上面的實驗可得:串行運行時間 s,并行運行時間 s,如下圖:
加速比: ,效率:
6 結束語
上面的實驗可以表明:同樣的任務在并行計算環境中的執行時間比單機下執行所需時間要稍長一些,這是由于電腦之間的信息傳遞需要損耗一些時間,此外還受到網絡的影響等。如果允許的話,我們應盡可能使用更高配置的電腦、更高性能的其它硬件網絡設施,這樣的條件下來執行更龐大、復雜的任務,那么并行計算的效率將會是更高的,其高效、快捷的優勢將顯得更為突出。
參考文獻:
[1]C.Connors and J.Upchurch.A forward modeling program for fault-bend folding.Geological Society of America Abstracts with Programs,v.34,2002.
[2]D.T.Kaplan. Introduction to Scientific Computing and Programming.Brooks/Cole,Belmont,California,2004.
[3]都志輝.高性能計算之并行編程技術—MPI并行程序設計.清華大學出版社,2001.8.
[4]張林波,遲學斌.并行計算導論.清華大學,2006.1.