摘要:本次論文首先對并行計算進行了基礎(chǔ)性的分析,主要包括軟、硬件體系結(jié)構(gòu)、編程模型、算法等,涉及了并行計算中的新技術(shù),也包含了傳統(tǒng)的算法。在比較了MPI、PVM和OpenMP作為編程模型的利弊之后,選擇了MPI作為并行計算環(huán)境,最后在搭建好的并行式Matlab平臺中運行了幾個例子,初步展現(xiàn)了并行計算的高效與快捷。
關(guān)鍵詞:并行計算;Matlab;信息傳遞接口
中圖法分類號:TP316文獻標(biāo)識碼:A文章編號:1009-3044(2008)08-10ppp-0c
化工過程系統(tǒng)通常采用基于過程機理和嚴(yán)格物性計算的精確數(shù)學(xué)模型,需要耗費大量的計算時間才能求解。盡管目前計算機的硬件和和處理能力已經(jīng)有了極大的提升,但單純依賴單機直接進行大規(guī)?;み^程系統(tǒng)優(yōu)化尚有許多困難。采用個人計算機機群系統(tǒng)的分布式并行計算技術(shù)為大規(guī)模、非線性的化工系統(tǒng)優(yōu)化問題提供了一個擴展性好、易于實現(xiàn)的解決方案。并行計算機和并行計算環(huán)境的研究一直是高性能計算研究領(lǐng)域的熱點之一。
1 集群簡介
集群(cluster)就是向用戶提供網(wǎng)絡(luò)資源的一組計算機,其中的每個計算機系統(tǒng)就是集群的節(jié)點(node)。集群就是一個系統(tǒng),而非多個計算機系統(tǒng).并且集群系統(tǒng)的管理員可以隨意增加和刪改集群系統(tǒng)的節(jié)點。對集群的研究起源于集群系統(tǒng)的良好的性能可擴展性。提高CPU主頻和總線帶寬是最初提供計算機性能的主要手段。但是這一手段對系統(tǒng)性能的提供是有限的。接著人們通過增加CPU個數(shù)和內(nèi)存容量來提高性能,于是出現(xiàn)了向量機,對稱多處理機(SMP)等。但是當(dāng)CPU的個數(shù)超過某一閾值,像SMP這些多處理機系統(tǒng)的可擴展性就變的極差。主要瓶頸在于CPU訪問內(nèi)存的帶寬并不能隨著CPU個數(shù)的增加而有效增長。與SMP相反,集群系統(tǒng)的性能隨著CPU個數(shù)的增加幾乎是線性變化的。如下圖
圖1 集群系統(tǒng)的性能與CPU關(guān)系
2 MPI、PVM和OpenMP的介紹
由于消息傳遞并行編程模型的廣泛應(yīng)用,目前已經(jīng)出現(xiàn)了許多基于該模型的并行編程語言,其中最流行的是PVM(Parallel Virtual Machine)、MPI(Message Process Interface)和OpenMP。第一個將工作站集群作為并行計算平臺并被廣泛接受的并行編程語言是PVM。它由美國的Oak Ridge國家實驗室、Tennessean大學(xué)、Emorg大學(xué)、CMU大學(xué)等聯(lián)合開發(fā)而成,能夠?qū)悩?gòu)的Unix計算機通過異構(gòu)網(wǎng)絡(luò)連接成一個\"虛擬\"的并行計算系統(tǒng),為其上運行的應(yīng)用程序提供分布式并行計算環(huán)境。
PVM是一種基于局域網(wǎng)的并行計算環(huán)境。它通過將多個異構(gòu)的計算機有機地組織起來,形成一個易于管理、易于編程、并且具有很好的可擴展性的并行計算環(huán)境。MPI是為開發(fā)基于消息傳遞模型的并行程序而制定的工業(yè)標(biāo)準(zhǔn),其目的是為了提高并行程序的可移植性和易用性。 OpenMP起源于ANSI X3H5標(biāo)準(zhǔn),它具有簡單、移植性好和可擴展等優(yōu)點,是共享存儲系統(tǒng)編程的一個工業(yè)標(biāo)準(zhǔn)。實際上OpenMP并不是一門新的語言,它是對基本語言(如Fortan77、Fortan90、C、C++等)的擴展。
3 基于Matlab的分布式并行優(yōu)化計算環(huán)境
現(xiàn)有的基于消息傳遞的并行計算平臺如PVM、MPI,都是一種通用的消息傳遞環(huán)境,功能非常強大。但是由于其抽象層次較低,它們并未將程序員從低層的并行實現(xiàn)策略中解脫出來。發(fā)送端和接受端的通訊匹配、系統(tǒng)死鎖的避免以及并行系統(tǒng)性能的預(yù)測等問題都對程序設(shè)計人員提出了很高的要求。
目前的常用仿真計算都是基于Matlab環(huán)境,因此,開發(fā)基于Matlab的并行計算平臺也有很大的必要性。在本文討論的設(shè)計中,并行優(yōu)化平臺的運行是在Matlab環(huán)境中進行的,由于Matlab是一種跨平臺軟件,因此整個并行計算環(huán)境也間接地實現(xiàn)了跨平臺,滿足了在Windows平臺下并行計算的需要。在平臺實現(xiàn)中,如果能有效地利用大粒度的分解計算,可以降低程序?qū)崿F(xiàn)的復(fù)雜性。從機群系統(tǒng)的應(yīng)用要求上來看,也需要大粒度的并行,以減少通訊開銷,從而獲得更高效率。因此,并行優(yōu)化計算環(huán)境的設(shè)計是大粒度的?;贛atlab的并行優(yōu)化計算平臺的層次結(jié)構(gòu)基本上可以由圖2來表示,采用消息傳遞模式,消息傳遞時利用同步阻塞方式。
圖2 并行優(yōu)化計算平臺層次結(jié)構(gòu)
根據(jù)并行的基本原理,可以得出結(jié)論:并行計算無外乎任務(wù)的分解和綜合。并行優(yōu)化計算平臺設(shè)計也應(yīng)依照此原理來進行,同時采用共享文件作為并行的數(shù)據(jù)傳輸方式。Matlab下有很多的工具庫函數(shù),各類不同的計算往往通過不斷調(diào)用工具庫中的函數(shù)來實現(xiàn)。同樣,也可以設(shè)計一個并行基礎(chǔ)函數(shù)庫,提供實現(xiàn)并行計算所需要的最基本函數(shù)。并行的函數(shù),如果不涉及到平臺的管理,基本上可以劃分為初始化函數(shù),發(fā)送接收任務(wù)函數(shù)、進行任務(wù)函數(shù)和回送并綜合結(jié)果函數(shù)四大類。
4 并行式Matlab平臺搭建
第一步:Matlab2007a的安裝
第二步:聯(lián)機
本次論文用的是由兩臺普通PC機(名為use1的華碩A8筆記本電腦和名為use2的清華同方臺式機)連接構(gòu)成的小集群,由于機器數(shù)目比較少,我們直接用交叉線把電腦連了起來,從而構(gòu)成一個局域網(wǎng)就可以了。
第三步:在Windows上配置MDCE
第四步:用任務(wù)管理器測試已安裝的MDCE
(1)檢查網(wǎng)絡(luò)連接
(2)執(zhí)行一個分布式程序
(3)創(chuàng)建、定義、執(zhí)行job
5 平臺應(yīng)用舉例
(有公式輸入 注意)
的數(shù)值計算
(1)介紹:我們已經(jīng)知道有:,根據(jù)等式左邊的 積分可以估算出 的值,下面將分別在單機和并行式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
由上述結(jié)果可以看出:單機運行這個程序總共花了0.014315227214632秒時間
(3)并行計算
準(zhǔn)備步驟:
(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)小結(jié):由上面的實驗可得:串行運行時間 s,并行運行時間 s,如下圖:
加速比: ,效率:
6 結(jié)束語
上面的實驗可以表明:同樣的任務(wù)在并行計算環(huán)境中的執(zhí)行時間比單機下執(zhí)行所需時間要稍長一些,這是由于電腦之間的信息傳遞需要損耗一些時間,此外還受到網(wǎng)絡(luò)的影響等。如果允許的話,我們應(yīng)盡可能使用更高配置的電腦、更高性能的其它硬件網(wǎng)絡(luò)設(shè)施,這樣的條件下來執(zhí)行更龐大、復(fù)雜的任務(wù),那么并行計算的效率將會是更高的,其高效、快捷的優(yōu)勢將顯得更為突出。
參考文獻:
[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]都志輝.高性能計算之并行編程技術(shù)—MPI并行程序設(shè)計.清華大學(xué)出版社,2001.8.
[4]張林波,遲學(xué)斌.并行計算導(dǎo)論.清華大學(xué),2006.1.