999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多核SMP集群混合并行編程技術的研究*

2017-03-10 08:54:08祝永志
網絡安全與數據管理 2017年4期
關鍵詞:進程程序模型

劉 超,祝永志

(曲阜師范大學 信息科學與工程學院,山東 日照276826)

多核SMP集群混合并行編程技術的研究*

劉 超,祝永志

(曲阜師范大學 信息科學與工程學院,山東 日照276826)

目前,高性能計算領域中大多數系統采用層次化硬件設計,具有若干多核CPU共享存儲的節點通過高速網絡互聯起來。混合并行編程技術將節點間的分布式存儲與節點內的共享存儲進行了融合。針對多核SMP集群體系結構的特點,進一步研究了適用于多核SMP集群的層次化混合并行編程模型MPI/OpenMP,以及多核SMP節點間和節點內多級并行的機制。充分利用消息傳遞編程模型和共享內存編程模型各自的優勢,在此基礎上研究了多粒度并行化編程方法。

多核SMP集群;混合編程;MPI/OpenMP

0 引言

隨著CMP技術的發展以及SMP集群體系結構的推廣,融合SMP與MPP雙重特點的多核SMP集群成為高性能計算(HPC)領域廣泛采用的新型多核體系架構與主流研發趨勢。這種分布式存儲與共享存儲相結合的體系架構繼承了MPP在性能和可擴展性上的優勢,改善了SMP可擴展性差的缺點,同時又具有集群高效通信的優點[1]。這種節點間使用消息傳遞和節點內利用共享內存的多級混合并行編程模型,更好地匹配了多核SMP集群特點。

圖1 多核SMP集群體系架構

圖1顯示了具有N個節點(每個節點為兩個四核CPU,圓形表示處理器內核)的多核SMP集群體系結構。處理器之間通過BUS/CROSSBAR互聯,并共享內存區域與I/O設備。多核SMP節點通過高速通信網絡(如Myrinet、以太網等)連接,節點間利用消息傳遞進行通信[2]。

1 混合平臺上的并行編程模型

嚴格來說,一個并行編程模型是計算機系統結構的抽象[3],它不依賴于任何特定的機器類型。但因CPU的組合方式不同,建立起的并行系統會產生許多可能的并行編程模型。圖2顯示了混合平臺上并行編程模型的分類。

圖2 混合架構并行編程模型的分類

1.1 共享存儲編程模型 OpenMP

常見的共享內存編程標準為OpenMP,它是為在多處理機上編寫并行程序而設計的API,其目的是易于共享存儲并行編程。通過在源程序代碼中加入指導性注釋(Compiler Directive)、編譯指導指令#pragma行來指定程序的并發性。在OpenMP中,線程并行已高度結構化,常采用Fork-Join并行執行模式[4]:首先由一個主線程串行運行程序,當需要并行計算時,派生的若干從線程與主線程共同并行執行任務。在執行結束后派生的從線程同步或中斷,控制流重回主線程中,如圖3所示。

圖3 Fork-Join并行執行模式

OpenMP的特點為:隱式通信;高層次抽象;支持增量并行;可擴展性高,移植性好;支持粗粒度和細粒度并行;面向應用的同步原語,易于編并行程序;不僅能在共享存儲系統使用,也能在非共享存儲結構上實現,只是效率不同。

1.2 消息傳遞編程模型 MPI

常見的消息傳遞編程標準為MPI(Message Passing Interface),它并不是一種編程語言,而是綁定在Fortran語言或C語言中的消息傳遞庫以及API接口,其目的是服務于進程間通信。對于分布式存儲系統而言,MPI是一種自然的編程模型,而且能夠實現SPMD并行模型,常采用Master-Woker工作模式:Master進程把數據分配給Worker進程;所有的Worker進程接收相應的數據;每個Worker進程進行數據計算;Worker進程將結果發送給主進程[5]。應用程序的每次迭代都是重復這個邏輯,根據問題的性質,Master進程可能必須等待來自所有Worker進程的結果之后才能發送新的數據,如圖4所示。

圖4 Master-Work工作模式

MPI特點是:顯式通信;效率高,移植性好;特別適用于粗粒度并行;多種優化的組通信庫函數;通過在計算/通信的疊加,以提升并行性能。能在分布式存儲系統與共享存儲系統上運行; 用戶控制對數據的劃分和進程的同步。

OpenMP與MPI的主要特點對比如表1所示。

表1 OpenMP與MPI模型主要特點對比

1.3 OpenMP/MPI混合編程模型

結合多核SMP集群層次化存儲的結構特點,充分利用上述兩種編程模型的優勢:共享存儲模型的編程效率與分布式存儲模型的可擴展性。基本思想是:(1)將問題規模進行MPI劃分,形成通信不密集的若干子任務;(2)將每個子任務(即一個MPI進程)分配到一個多核SMP節點上,節點之間依靠消息傳遞進行通信;(3)在每個節點上使用OpenMP編譯制導語句將子任務再次劃分,并分配到節點的不同處理核心上由多線程并行執行,節點內利用共享變量進行通信,如圖5所示。

圖5 Hybrid MPI/OpenMP編程模型

Hybrid MPI/OpenMP編程模型的優勢:

(1)匹配當前硬件的發展趨勢——多核和多處理器計算機;

(2)明確兩個并行層次:粗粒度(適用于MPI)和細粒度(適用于OpenMP);

(3)某些應用或系統特點可能會限制MPI進程數量(可擴展性問題),因此OpenMP可以提供增量并行;

(4)有些應用在MPI層工作負載不平衡,OpenMP通過分配不同數量的線程到MPI進程以解決此問題;

(5)OpenMP避免了由MPI計算節點引起的額外通信開銷。

在現有MPI代碼中引入OpenMP意味著同時引入OpenMP的一些缺陷:

(1)控制任務分配與同步時的限制;

(2)線程創建和同步產生的開銷;

(3)對編譯器的依賴以及對OpenMP運行時庫的支持;

(4)共享存儲問題;

(5)MPI與OpenMP運行時庫相互作用可能對程序性能產生負面影響。

大部分的Hybrid代碼基于一個層次模型,這使得在MPI層利用大中型粒度并行和OpenMP層利用細粒度并行成為可能。在高層次,程序被顯示地構造為若干MPI任務,其順序代碼中引入OpenMP制導指令,加入多線程以利用共享存儲的特點。這種編程模型根據通信與計算之間是否重疊分為兩類:

(1)無計算/通信重疊。這類又分為兩種方式:①只在并行域和主線程外調用MPI。優點是SMP節點內沒有消息傳遞。缺點是效率低,即在主線程進行通信時,其他線程進入休眠,沒有實現計算/通信的重疊。②應用程序代碼在并行域外調用MPI,但MPI通信由多個CPU完成。MPI通信線程可由MPI庫自動完成或由使用線程安全的MPI庫的應用程序顯示完成。該方式示意圖如圖6所示。

圖6 無計算/重疊編程方式

(2)計算/通信重疊。為了避免MPI通信期間計算線程閑置而從OpenMP線程組中分離出一個或多個線程來處理與計算并行的通信,此時MPI函數的調用應在Critical、Master 或 Single相應的區域內。有兩種方法:①當通信由主線程(或幾個線程)執行時,所有通信都注入到主線程,其他所有非通信線程執行數據計算任務;②當每個線程都有通信需求時,通信會注入到多個線程。計算/重疊編程方式示意圖如圖7所示。

圖7 計算/重疊編程方式

2 層次化混合編程的實現

解決混合并行編程所存在問題的核心策略就是標準,從這個角度來看,有分布式存儲編程MPI和共享式存儲OpenMP,這就構成了開發混合編程的策略基礎。利用現有的MPI或OpenMP代碼構建混合并行應用程序,具體方法如下:

(1)使用OpenMP改良MPI。這是一種簡單的混合編程實現方式,僅需將OpenMP編譯制導指令插入原循環代碼段外部。其性能取決于能被OpenMP并行求解的循環部分的計算量(通常是細粒度并行)。這種方式有利于通信綁定的應用程序,因為其減少了需要進行通信的MPI進程數。但是,如果程序中循環較多,使用的編譯指令也將隨之增多,創建并行域或線程同步的開銷將會增大[6]。因此,在進行循環級并行化時,應首選全局時間中計算時間占比較大的循環[7]。以下是細粒度偽混合程序代碼:

#include"mpi.h"

#include"omp.h"

......

//一些計算和MPI通信

#pragma omp paralle num_threads(...)

#pragam omp for private(...)

for(...)

{ //計算 }

//一些計算和MPI通信

......

MPI_Finalize();

(2)使用MPI改良OpenMP。這種方法(粗粒度并行)不同于前一個,需要考慮每個進程如何與其他進程通信,它可能需要完全重新設計并行性。編譯制導指令通常在程序的最外層,OpenMP線程緊隨MPI進程而生成,生成的線程與SPMD模式中的進程較為相似,即在不同的數據上執行相同的代碼段。與SPMD的不同之處在于多核SMP節點內各處理器共享存儲,無需預分配數據到各處理器上。此方法優點是OpenMP編譯制導指令使用較少,調用與通信開銷較低。然而,OpenMP多線程的使用類似于MPI多進程的使用,特別是當使用混合模型中多級并行機制時,編程復雜性則會增大。以下是OpenMP部分偽混合代碼:

......

omp_set_num_threads(...)

#pragma omp paralle private(...)

th_id=omp_get_thread_num();

th_size=omp_get_num_threads();

......

for(...)

{..//計算}

#pargma omp barrier

#pargma omp master/single

{...//MPI通信}

......//MPI通信

......

3 實驗

考慮到性能和易用性兩方面的因素,本文從整體上采用類似SMPD的模式:節點內OpenMP細粒度并行與節點間MPI粗粒度并行,即Hybrid OpenMP/MPI層次化編程。選取矩陣乘法為案例,在矩陣規模和執行內核數量不同的情況下對比Non-hybirid混合編程所表現出的性能差異。

3.1 曙光TC5000高性能計算集群系統

曙光TC5000集群系統整體計算能力為5.7萬億次, 一臺A620r-H作為管理節點,6臺CB65作為計算節點,一套磁盤陣列提供存儲。每個刀片計算節點有兩顆AMD Opteron6128 2 GHz四核處理器,共計8核,整個集群配有144 GB內存。

集群軟件環境:SUSE Linux Enterprise Server 10SP操作系統; 并行環境:MPI版本為MPICH2, GCC4.2.4編譯器;NFS文件共享服務;InfiniBand高速計算網絡管理并行通信等。

3.2 實驗及結果分析

使用集群中6個雙路四核計算節點運行MPI代碼與MPI/OpenMP代碼進行對比測試。運行混合MPI/OpenMP代碼時,每個計算節點分配一個MPI進程和8個線程(節點內的線程數不應超過物理處理器個數[7])。應當注意到,在矩陣相乘計算的核心部分,可以認為兩個循環都可以并行執行。如果將內部循環并行,程序在外部循環的每次迭代中都進行線程的Fork-Join操作,這樣做的開銷可能高于將內部循環在多線程間并行化所節省的時間;若對外層循環并行化,將使用一次Fork-Join操作,并可使程序有更大的粒度。程序中使用的矩陣規模分別為500×500,1 000×1 000,1 500×1 500。如表2所示,表中每個時間點對應的值都是該程序運行五次的平均值。從圖8可以清晰地看到在使用不同節點數時混合MPI/OpenMP程序與MPI程序的加速比。隨著節點數的增加,混合編程的加速比明顯高于純MPI的加速比。因為在運行MPI程序時CPU的利用率較低,并未充分利用處理器資源;而混合編程中CPU利用率較高,這進一步驗證了在多核處理器中使用OpenMP多線程對程序性能的影響(這些結果是在沒有任何優化措施的情況下得到的)。

表2 執行時間與加速比

圖8 MPI與MPI/OpenMP

4 結論

本文分析了多核SMP集群并行體系結構的特點,研究適用于多核SMP集群的混合并行編程模型,針對MPI程序存在負載不平衡與可擴展性差的問題,使用OpenMP改造MPI程序,這種細粒度并行化的MPI+OpenMP更容易實現且能提高程序性能。目前尚不清楚這種編程技術對多核SMP集群而言是否是最為有效的機制,還有很多問題尚待解決,這需要進一步研究。

[1] 孫凝暉, 李凱, 陳明宇. HPP:一種支持高性能和效用計算的體系結構[J]. 計算機學報, 2008,31(9): 1503-1508.

[2] RABENSEIFNER R, HAGER G, JOST G. Hybrid MPI/OpenMP parallel programming on clusters of multi-core SMP nodes[C]. Proceedings of 17th Euromicro International Conference on Parallel, Distributed, and Network-based Processing. 2009:427-436.

[3] KOTOBI A, ABDUL H N A W, OTHMAN M, et al. Performance analysis of hybrid OpenMP/MPI based on multi-core cluster architecture[C]. 2014 International Conference on,Computational Science and Technology (ICCST). IEEE, 2015:1-6.

[4] MATTSON T G, SANDERS B A, MASSINGILL B. Patterns for parallel programming[M]. Addison-Wesley Professional, 2005.

[5] CASTELLANOS A, MORENO A, SORRIBES J, et al. Performance model for Master/Worker hybrid applications on multicore clusters[C]. IEEE International Conference on High Performance Computing and Communications, 2013:210-217.

[6] 祝永志. 多核SMP集群Hybrid并行編程模式的研究與分析[J]. 電子技術, 2016(2):72-75.

[7] 陳勇, 陳國良, 李春生,等. SMP機群混合編程模型研究[J]. 小型微型計算機系統, 2004, 25(10):1763-1767.

Research on hybrid parallel programming technology on multi-core SMP cluster

Liu Chao,Zhu Yongzhi

(School of Information Science and Engineering, Qufu Normal University, Rizhao 276826,China)

Currently, the majority of high-performance computing systems use hierarchical hardware design. Nodes have a plurality of multi-core CPU shared memory interconnect by high-speed network. Hybrid parallel programming technology fuses inter-nodes of distributed memories and intra-nodes of sharing memories. Therefore, according to the characteristics of multi-core SMP cluster architecture, this paper further studies the hierarchy hybrid parallel programming model MPI/OpenMP applied to multi-core SMP cluster, and multi-core SMP inter-nodes and intra-nodes multi-level parallelism mechanisms. On the basis of making full use of respective advantages of message passing programming model and shared-memory programming model, this paper studies a multi-granularity parallel programming method.

multi-core SMP cluster; hybrid programming; MPI/OpenMP

山東省自然科學基金(ZR2013FL015)

TP301

A

10.19358/j.issn.1674- 7720.2017.04.006

劉超,祝永志.多核SMP集群混合并行編程技術的研究[J].微型機與應用,2017,36(4):18-21.

2016-08-31)

劉超(1984-),男,碩士研究生,主要研究方向:并行計算。

祝永志(1964-),男,碩士,教授,主要研究方向:分布式數據庫,并行與分布式計算。

猜你喜歡
進程程序模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
3D打印中的模型分割與打包
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 亚洲一区二区视频在线观看| 18禁黄无遮挡免费动漫网站| 欧美成人a∨视频免费观看| 亚洲国产精品成人久久综合影院| 亚洲成人黄色在线| 国产迷奸在线看| 国产福利在线观看精品| 人妖无码第一页| 国产精品吹潮在线观看中文| 第九色区aⅴ天堂久久香| 3D动漫精品啪啪一区二区下载| 日韩a在线观看免费观看| 日韩欧美国产三级| 国产麻豆永久视频| 中文字幕在线不卡视频| 丁香综合在线| 日韩二区三区无| 99资源在线| 国产网站免费看| 天天操天天噜| 国产精品免费p区| 欧美激情视频在线观看一区| 精品国产www| 99999久久久久久亚洲| 亚洲V日韩V无码一区二区| 国产亚洲欧美在线视频| 99青青青精品视频在线| 亚洲AV无码乱码在线观看代蜜桃| 五月天天天色| 国产成年女人特黄特色大片免费| 激情在线网| 日韩av高清无码一区二区三区| 国产主播福利在线观看| 欧美日韩精品在线播放| 亚洲乱码视频| 青青草a国产免费观看| 欧美黄网站免费观看| 亚洲IV视频免费在线光看| 欧美97欧美综合色伦图| 99久久这里只精品麻豆| 2020最新国产精品视频| 亚洲爱婷婷色69堂| 国模视频一区二区| 原味小视频在线www国产| 国产午夜精品一区二区三| 五月天综合婷婷| 欧美午夜精品| 国产微拍一区二区三区四区| 99久久精品免费视频| 成人免费网站久久久| 亚洲热线99精品视频| 婷婷亚洲视频| 成人国内精品久久久久影院| 久久a毛片| a级毛片免费网站| 日韩国产欧美精品在线| 91午夜福利在线观看精品| 伊人色天堂| 国产精品手机视频一区二区| 狠狠操夜夜爽| 午夜视频在线观看免费网站| 玩两个丰满老熟女久久网| 亚洲欧洲一区二区三区| 国产尹人香蕉综合在线电影| 国产成人区在线观看视频| 精品人妻系列无码专区久久| 亚洲视屏在线观看| 四虎成人在线视频| 综合色88| 欧美在线黄| 欧美日韩亚洲国产主播第一区| 四虎精品黑人视频| 91在线视频福利| 福利姬国产精品一区在线| 真人免费一级毛片一区二区| 国产麻豆永久视频| 亚洲一区二区三区中文字幕5566| 日韩精品久久无码中文字幕色欲| 国产91精品调教在线播放| 亚洲 日韩 激情 无码 中出| 婷婷成人综合| 国产综合另类小说色区色噜噜 |