国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于多核集群系統(tǒng)的并行編程模型的研究與實現(xiàn)

2013-12-29 00:00:00李桂君祝永志
電腦知識與技術(shù) 2013年10期

摘要:主要對并行計算的編程模型進(jìn)行了研究,包括 MPI 和 OpenMP 兩種編程模型,同時提出了一種層次化混合編程模型。并以計算 π 的問題為例,用 C 語言設(shè)計了混合編程模型下的程序,在以多核處理器作為節(jié)點(diǎn)的曙光 TC5000 集群上對三種編程模型下的求 π 程序進(jìn)行了實驗,同時將實驗結(jié)果進(jìn)行了性能分析和比較。結(jié)果表明該混合并行算法具有更好的擴(kuò)展性和加速比。

關(guān)鍵詞:層次化;混合編程;多核集群;性能分析

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)10-2349-04

隨著社會對計算機(jī)性能的要求越來越高,對高速并行計算的應(yīng)用越來越廣泛,多核集群系統(tǒng)得到了飛速的發(fā)展。現(xiàn)在的并行計算機(jī)體系結(jié)構(gòu)中絕大部分都是集群體系結(jié)構(gòu),并且大多數(shù)的集群節(jié)點(diǎn)是多核 SMP。因此多核集群系統(tǒng)具有一下特點(diǎn):每一個節(jié)點(diǎn)都是一個共享存儲的多處理機(jī),而節(jié)點(diǎn)間是分布式的內(nèi)存結(jié)構(gòu),它結(jié)合了基于分布式存儲和基于共享存儲的處理器的優(yōu)點(diǎn)。因此在多核集群系統(tǒng)上可以進(jìn)行多種并行程序設(shè)計和實現(xiàn),包括可以在節(jié)點(diǎn)間執(zhí)行的基于消息傳遞的純 MPI 編程模型,可以在節(jié)點(diǎn)內(nèi)(多核 SMP)執(zhí)行的基于共享內(nèi)存的OpenMP 編程模型,以及 MPI+OpenMP 的混合編程模型。

本文將對以上提到的三種并行編程模型進(jìn)行研究,并對計算 π 的算法分別進(jìn)行了三種編程模型的程序設(shè)計,最后用以多核處理器作為節(jié)點(diǎn)的曙光 TC5000 作為實驗工具,對所設(shè)計的程序進(jìn)行實現(xiàn),并進(jìn)行了性能比較。

1 MPI編程模型和OpenMP 編程模型

在并行計算領(lǐng)域內(nèi),主要的并行編程模型有三類模型:數(shù)據(jù)并行、消息傳遞、共享變量。其中基于消息傳遞的 MPI 編程模型和基于共享變量的 OpenMP 編程模型是最為流行的并行編程模型。

1.1 MPI 編程模型

消息傳遞界面 MPI (Message Passing Interface) 是一種消息傳遞接口,是目前國內(nèi)外最主流的編程模型之一。并行語言 MPI 庫可以被 FORTRAN77、C、FORTRAN90、C++ 調(diào)用,MPI 允許靜態(tài)任務(wù)調(diào)度,顯示并行提供了良好的性能和移植性,用 MPI 編寫的程序可直接在多核集群上運(yùn)行[1]。在集群系統(tǒng)中,集群的各節(jié)點(diǎn)之間可以采用 MPI 編程模型進(jìn)行程序設(shè)計,每個節(jié)點(diǎn)都有自己的內(nèi)存,可以對本地的指令和數(shù)據(jù)直接進(jìn)行訪問,各節(jié)點(diǎn)之間通過互聯(lián)網(wǎng)絡(luò)進(jìn)行消息傳遞,這樣設(shè)計具有很好的可移植性,完備的異步通信功能,較強(qiáng)的可擴(kuò)展性等優(yōu)點(diǎn)。

MPI 模型存在一些不足,包括:程序的分解、開發(fā)和調(diào)試相對困難,而且通常要求對代碼做大量的改動;通信會造成很大的開銷,為了最小化延遲,通常需要大的代碼粒度[2];細(xì)粒度的并行會引發(fā)大量的通信;動態(tài)負(fù)載平衡困難;并行化改進(jìn)需要大量地修改原有的串行代碼,調(diào)試難度比較大[3]。

1.2 OpenMP 編程模型

2.2 MPI 和 OpenMP 混合編程的優(yōu)勢

1)降低通信開銷

單獨(dú)采用 MPI 模型時,節(jié)點(diǎn)間的進(jìn)程需要消息傳遞,而混合模型中,節(jié)點(diǎn)內(nèi)部采用共享存儲的方式進(jìn)行訪問,這樣就可以減少所需的進(jìn)程數(shù)量,即減少了節(jié)點(diǎn)間的通信次數(shù)從而降低通信開銷。

2)有效的改善 MPI 代碼可擴(kuò)展性

因負(fù)載均衡的原因 MPI 代碼不易進(jìn)行擴(kuò)展,它的一些不規(guī)則的應(yīng)用都存在負(fù)載不均衡問題[7],采用混合編程模式,能夠?qū)崿F(xiàn)更好的并行粒度。MPI 僅僅負(fù)責(zé)結(jié)點(diǎn)間的通信,實行粗粒度并行:OpenMP 實現(xiàn)結(jié)點(diǎn)內(nèi)部的并行,因為 OpenMP 不存在負(fù)載均衡問題,從而提高了性能。

3)實現(xiàn)通信和計算重疊

大部分 MPI 都是通過單線程來實現(xiàn),然而單個的 MPI 進(jìn)程不能同時進(jìn)行通信和計算,這樣大大降低了效率。采用混合模型可以選擇主線程或指定一個線程進(jìn)行通信,而其它的線程執(zhí)行計算的部分,這樣便實現(xiàn)了通信和計算的重疊。

4)充分的利用 CPU

在某些情況下,MPI 應(yīng)用實現(xiàn)的性能并不隨處理器數(shù)量的增加而提高,而是有一個最優(yōu)值。這時使用混合編程模式會比較有益,因為可以用 OpenMP 線程來替代進(jìn)程這樣就可以減少所需進(jìn)程數(shù)量,從而運(yùn)行理想數(shù)目的 MPI進(jìn)程,再用 OpenMP 進(jìn)一步分解任務(wù),使得所有處理器高效運(yùn)行。

5)提高每個節(jié)點(diǎn)內(nèi)的計算效率

在節(jié)點(diǎn)內(nèi)使用OpenMP 進(jìn)行編程使程序在節(jié)點(diǎn)內(nèi)部運(yùn)行的時候更充分的利用了多核并行計算的優(yōu)勢。同時線程比 MPI 進(jìn)程耗費(fèi)更少的資源,比單純使用MPI 的運(yùn)算效率大為提高[8]。

在一般情況下,使用混合編程模型具有更好地效率和性能,但是它也存在幾方面需要注意的問題,比如對于純 MPI 編程模型的應(yīng)用,參與通信的 CPU 可以飽和結(jié)點(diǎn)間的帶寬,而混合編程模型中若分出一個線程進(jìn)行通信很難做到這一點(diǎn)。同時還要注意混合編程模型中 MPI 進(jìn)程內(nèi)的線程之間進(jìn)行點(diǎn)對點(diǎn)通訊時的正確發(fā)送與接收、OpenMP 產(chǎn)生的系統(tǒng)開銷等問題。

3 實驗結(jié)果與分析

3.1 測試環(huán)境

3.2 測試程序

3.3 實驗及結(jié)論

4 結(jié)束語

本文通過結(jié)合一個具體的程序案例,詳細(xì)描述了適用于多核集群的并行編程模型,并在曙光 TC5000 集群上進(jìn)行了實驗,實驗表明采用 MPI+OpenMP 混合編程模型比采用純 MPI 編程模型能更充分利用多核集群系統(tǒng)。隨著多核集群系統(tǒng)的飛速發(fā)展,對并行計算模型的研究仍需繼續(xù),在本文的基礎(chǔ)上,我們會對多核集群系統(tǒng)上的并行計算的性能優(yōu)化做更深層的研究,從而使多核集群系統(tǒng)的性能進(jìn)一步提高。

參考文獻(xiàn):

[1] 祝永志,張丹丹,曹寶香,等.基于 SMP 機(jī)群的層次化并行編程技術(shù)的研究[J].電子學(xué)報,2012,40(11):2206-2210.

[2] 鄭漢垣,劉智翔,封衛(wèi)兵,等.MPI+OpenMP混合編程模型在大規(guī)模三對角線性方程組求解中的應(yīng)用[J].微電子學(xué)與計算機(jī),2011,28(8):158-161.

[3] 張軍,萬劍怡.多核集群系統(tǒng)上的混合編程模型研究[J].計算機(jī)與現(xiàn)代化,2009(5):1-4.

[4] 陳國良.并行計算—結(jié)構(gòu)·算法·編程[M].北京:高等教育出版社,2003.

[5] BARBARA CHAPMAN,GABRIELE JOST, RUUD VAN DERPAS.Using OpenMP [M].The MIT Press,2007.

[6] Bull J M,Enright J P,Ameer N.A microb-enchmark suite for mixed-mode OpenMP/MPI[C]//Müller M S,de Supinski B R,Chapman B M.IWOMP 2009.LNCS, vol. 5568, Springer, Heidelberg, 2009:118-131.

[7] 魏偉.基于SMP集群的性能優(yōu)化方法的研究[D].蘭州:蘭州大學(xué),2006.

[8] 胡斌,袁道華.TBB 多核編程及其混合編程模型的研究[J].計算機(jī)技術(shù)與發(fā)展,2009,19(2):98-101.

[9] 楊際祥,譚國真,王榮生.多核軟件的幾個關(guān)鍵問題及其研究進(jìn)展[J].電子學(xué)報,2010,38(9):2140-2145.

[10] Rabenseifner R.Hybrid Parallel Programming on HPC Platforms[C]//Proceedings of the Fifth European Workshop on OpenMP.EWOMP 2003, Aachen, Germany, September 22-26, 2003:185-194.

[11] 王惠春.基于 SMP 集群的 MPI+OpenMP混合并行編程模型研究與應(yīng)用[D].湘潭:湘潭大學(xué),2008.

[12] 李俊醅,莊子波.WRF 模式在 LINUX 集群系統(tǒng)的并行計算與評測[J].計算機(jī)技術(shù)與發(fā)展,2012,22(7):5-8.

池州市| 南投市| 田东县| 炉霍县| 尼勒克县| 太原市| 陇南市| 亳州市| 渭源县| 抚宁县| 沛县| 巴楚县| 榆树市| 内江市| 五家渠市| 鹤壁市| 轮台县| 克拉玛依市| 巩义市| 叙永县| 丘北县| 游戏| 卢龙县| 泊头市| 西城区| 吐鲁番市| 当雄县| 瑞丽市| 荥阳市| 彩票| 南川市| 襄垣县| 拉孜县| 平陆县| 吉木萨尔县| 昌宁县| 杭锦后旗| 高陵县| 留坝县| 盈江县| 南阳市|