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

3D_EW在MIC并行編程中的移植與實現(xiàn)研究

2017-06-10 08:38:55李薛劍許興中
實驗室研究與探索 2017年4期
關(guān)鍵詞:程序效率優(yōu)化

李薛劍, 羅 京, 魯 昶, 許興中

(安徽大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院, 合肥 230601)

3D_EW在MIC并行編程中的移植與實現(xiàn)研究

李薛劍, 羅 京, 魯 昶, 許興中

(安徽大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院, 合肥 230601)

3D_EW是一款用于石油勘探領(lǐng)域的應(yīng)用程序,其運(yùn)行需要極高的計算能力支持,在CPU上進(jìn)行大規(guī)模計算時效率極低,而MIC卡為英特爾公司推出的基于集成中和架構(gòu)的至強(qiáng)融核產(chǎn)品,可以提供數(shù)百個同時運(yùn)行的硬件線程,帶來極高的并行性。將3D_EW程序并行化并移植于MIC卡,實驗表明:3D_EW進(jìn)行大規(guī)模運(yùn)算時在MIC并行運(yùn)行速度遠(yuǎn)大于僅利用CPU時的串行運(yùn)行速度。

三維彈性波建模(3D_EW); MIC; 移植; 并行; 優(yōu)化策略

0 引 言

隨著現(xiàn)代技術(shù)的高速發(fā)展,串行程序往往不能滿足人們的對各方面的要求,如運(yùn)行時間、運(yùn)行空間,人們急需一種可以提高程序效率的方法,并行程序應(yīng)運(yùn)而生。而且隨著大數(shù)據(jù)的高速發(fā)展,現(xiàn)在在社會的各個方面,人們對計算的要求也越來越高,要求程序計算能提高效率或精度,MIC卡則應(yīng)運(yùn)而生,MIC卡可以很好地運(yùn)行并行[1]的大規(guī)模計算,其還可以與CPU合作,CPU運(yùn)行簡單的串行部分和不能并行的程序部分,而MIC則運(yùn)行復(fù)雜的并行計算[2],目前針對MIC平臺的研究已經(jīng)取得了一定的進(jìn)展[3-6]。

本文中的3D_EW程序就是用以CPU為主MIC為協(xié)處理器的offload模式[7]。實驗表明,3D_EW在此方式下處理大規(guī)模運(yùn)算數(shù)據(jù)時效率遠(yuǎn)高于CPU。

1 三維縱橫波分離的彈性波方程模擬算法

1.1 介紹

3D_EW(3D Elastic Wave Modeling)[8]是用于石油勘探領(lǐng)域的應(yīng)用程序。它是一種用波場延拓的方法來模擬彈性波在各向同性的彈性介質(zhì)中傳播的方法。在該程序中,縱波(P波)和橫波(S波)被分別模擬,這樣可以更好地得知縱波和橫波在彈性介質(zhì)中的傳遞。該方法可以通過高階有限差分方法來模擬彈性波的傳遞。其求解的方程為彈性波波動方程:

(1)

1.2 原程序結(jié)構(gòu)

原程序結(jié)構(gòu)如圖1所示。

2 MIC移植的優(yōu)化設(shè)計

2.1 MIC介紹

至強(qiáng)融核TM(Xeon Phi)協(xié)處理器,是首款英特爾集成眾核(Many Integrated Core,MIC)[9]架構(gòu)產(chǎn)品。用作高性能計算(HPC)[10]的超級計算機(jī)或服務(wù)器的加速卡。最多61個處理器核心,每個核心擁有4個超線程,最多244個線程,超線程無法關(guān)閉。與之競爭的是GPGPU(通用圖形處理器)在HPC領(lǐng)域應(yīng)用的普及。英特爾至強(qiáng)融核協(xié)處理器提供了類似于英特爾至強(qiáng)處理器編程環(huán)境的通用編程環(huán)境。多個英特爾至強(qiáng)融核協(xié)處理器可安裝在單個主機(jī)系統(tǒng)中,這些協(xié)處理器可通過 PCIe 對等互連相互通信,不受主機(jī)的任何干擾。

2.2 MIC程序移植流程

具體改寫與移植流程[11]:

(1) 將串行程序改為OpenMP程序[12];

(2) 將OpenMP版本程序做一定優(yōu)化;

(3) 將OpenMP版本程序移植到單MIC卡上;

(4) 根據(jù)MIC版程序運(yùn)行情況,做針對性優(yōu)化;

(5) 單節(jié)點內(nèi)CPU+MIC協(xié)同計算。

2.3 MIC移植優(yōu)化策略

2.3.1 移植前OpenMP并行優(yōu)化

程序進(jìn)行移植前,需要使用OpenMP對原串行程序進(jìn)行改寫。OpenMP是一種API,用于編寫可移植的多線程應(yīng)用程序,能夠為編寫多線程應(yīng)用程序提供一種簡單的方法,而無需程序員進(jìn)行復(fù)雜的線程創(chuàng)建、同步、負(fù)載均衡和銷毀工作。OpenMP是基于共享內(nèi)存和線程的支持單指令流多數(shù)據(jù)流的并行編程模型。OpenMP基于fork/join模型,即在并行任務(wù)開始時穿件并發(fā)線程,執(zhí)行并行任務(wù),并在任務(wù)結(jié)束時收束線程,等待線程全部結(jié)束才認(rèn)為任務(wù)結(jié)束。OpenMP是顯式并行的,需要程序員顯示控制需要并行的代碼。本次移植優(yōu)化使用了內(nèi)部各線程負(fù)載均衡優(yōu)化、向量化優(yōu)化、并行力度優(yōu)化的策略。

3D_EW程序根據(jù)不同的輸入數(shù)據(jù)量,計算規(guī)模也不同,在小規(guī)模時各線程間存在任務(wù)分配不均而導(dǎo)致的性能使用效率低下,使用各線程負(fù)載均衡優(yōu)化可以解決此問題。

Intel編譯器支持向量化,即使用批處理單元進(jìn)行批量計算的方法,可以把循環(huán)計算部分用MMX、SSE等擴(kuò)展指令進(jìn)行向量化,從而提高計算速度。MIC向量化優(yōu)化方式主要有兩種,自動向量化和SIMD指令優(yōu)化,由于SIMD同時支持CPU與MIC,故十分適合用于本程序優(yōu)化。

3D_EW程序根據(jù)不同的輸入數(shù)據(jù)量,計算規(guī)模也不同,在小規(guī)模時單個線程所分配到的任務(wù)量可能會很小,一層循環(huán)可能無法達(dá)到MIC的并行度要求,而經(jīng)過并行力度優(yōu)化后可以滿足。

2.3.2 移植后深度優(yōu)化

程序移植于MIC后,由于種種原因,運(yùn)行效率可能并不盡如人意,此時仍需要對MIC版本程序進(jìn)行針對性優(yōu)化,使用的優(yōu)化策略為C Intrinsic優(yōu)化、數(shù)據(jù)對齊優(yōu)化與數(shù)據(jù)傳輸優(yōu)化。

C Intrinsic、數(shù)據(jù)對齊操作可為3D_EW的數(shù)據(jù)進(jìn)行優(yōu)化處理,提高程序在MIC上的運(yùn)行效率,而數(shù)據(jù)傳輸優(yōu)化則提高了CPU與MIC之間的數(shù)據(jù)交換,從而提高了總體效率。

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

3.1 硬件環(huán)境

硬件主要有:① 服務(wù)器,型號為Inspur NF5280M4, CPU:Intel XeonE5-2680v3 × 2,2.5 GB,12核心;內(nèi)存:16 GB × 8,DDR4,2 133 MB; 硬盤: 1T SATA × 1。 ② 加速卡(MIC),型號為XEON PHI-31S1P, Intel XEON PHI-31S1P (57核心,1.1 GB,1003GFlops,8GB GDDR5)。

3.2 熱點分析與判斷

3D_EW程序結(jié)構(gòu)相對簡單,并沒有復(fù)雜的函數(shù)調(diào)用,主要的計算都是在循環(huán)內(nèi),而l之間數(shù)據(jù)依賴,l循環(huán)內(nèi)部則是如下所示的kji3層循環(huán),在最內(nèi)層的i循環(huán)中,僅有簡單的加法和乘法運(yùn)算,使用Intel分析工具VTune[9]可以很簡單的分析出程序內(nèi)花費(fèi)較多的部分,看出整個程序花費(fèi)時間最多的為350行左右,查看原代碼后可以發(fā)現(xiàn)正好屬于kji循環(huán),所以程序的熱點就是kji循環(huán)內(nèi)的計算。

3.3 移植可行性分析

Ishot循環(huán)為計算不同震源的數(shù)據(jù),在Ishot循環(huán)內(nèi),對于不同的Ishot,計算任務(wù)完全獨立。Ishot循環(huán)之后進(jìn)入l循環(huán),這里是時間推進(jìn)方法,不同的l表示不同的時步,前一次迭代的結(jié)果將會用于后一步的計算,因而不同l之間存在極強(qiáng)的數(shù)據(jù)依賴。在l以內(nèi),則是不同格的計算,對于顯示格式的有限差分來說,不同網(wǎng)格的計算是完全獨立的,因而這里也具備很強(qiáng)的并行性。l循環(huán)部分十分適合利用MIC進(jìn)行加速。

3.4 MIC平臺判斷(程序移植模式分析)

在MIC應(yīng)用程序模式[11,13]中,存在以CPU為主、以MIC為主和CPU與MIC對等模式3種可能性,而前兩種模式也會有僅用CPU(CPU原生模式)或MIC(MIC原生模式)的分支。

在3D_EW程序中,大部分代碼為串行執(zhí)行,串行執(zhí)行部分在CPU與MIC上執(zhí)行效率相差無幾,而小部分的可并行代碼部分計算量又十分巨大,此時在CPU與MIC計算效率則會有顯著不同,因此3D_EW程序適合于以CPU為主MIC為協(xié)處理器的offload模式。

3.5 使用OpenMP對串行程序進(jìn)行改寫[14-15]

如圖2所示,使用制導(dǎo)語句#pragma omp parallel指出并行區(qū)域即kji循環(huán),由于kji循環(huán)中存在一些變量px、sx、vvp2、vvs2、drd1、drd2等與并行區(qū)域外并沒有存儲關(guān)聯(lián),所以可以用private進(jìn)行標(biāo)識,若如此做則每個線程都會有自己的一份拷貝。

原程序目的是為了在超級計算機(jī)上實現(xiàn),故輸入數(shù)據(jù)量較大,在測試環(huán)境中(普通計算機(jī)未安裝MIC卡,雙核四線程,2.6 GHz)實現(xiàn)是相當(dāng)不現(xiàn)實的,為了檢驗修改后程序運(yùn)行效率是否提高,對輸入量(即循環(huán)次數(shù))進(jìn)行了一定比例的縮小。

在此數(shù)據(jù)下,未修改串行程序運(yùn)行完畢需要188 s,使用OpenMP修改后運(yùn)行完畢需190 s。從結(jié)果可以得出,經(jīng)OpenMP改寫后,程序的運(yùn)行效率不僅沒有提高,反而還降低了(此現(xiàn)象是正常的)。在使用修改后的輸入數(shù)據(jù)后,循環(huán)規(guī)模相比于原規(guī)模已大大減小,使用并行化帶來的效果無法抵消并行化的額外負(fù)擔(dān),而當(dāng)數(shù)據(jù)量較大時(使用原輸入),每個線程負(fù)擔(dān)的工作將會足夠多,并行化的效率便會提高。

3.6 優(yōu)化OpenmMP版本程序

3.6.1 內(nèi)部各線程負(fù)載均衡優(yōu)化

并行區(qū)域內(nèi)線程[16]分配方式可選有dynamic、static、guided和runtime,經(jīng)過對每一種方式測試,最終得到較好方案為dynamic,如圖3所示,將循環(huán)任務(wù)進(jìn)行動態(tài)分配,采取先到先得方式,為每個線程分配任務(wù)。

3.6.2 向量化優(yōu)化

在3D_EW程序中,處理的大部分?jǐn)?shù)據(jù)是3維數(shù)組,而C程序是基于存儲的,源程序kji循環(huán)內(nèi)數(shù)組的索引也是基于最內(nèi)層i循環(huán),因而對i循環(huán)進(jìn)行了向量化處理,如圖4所示。這樣可以使得同一條SIMD指令處理的數(shù)據(jù)跨度更小,增加數(shù)據(jù)讀寫的空間局部性,更加高效的利用讀寫帶寬。

3.6.3 并行力度優(yōu)化

在當(dāng)前程序中,當(dāng)程序規(guī)模較小時(輸入的循環(huán)變量較小)一層循環(huán)可能無法達(dá)到MIC的并行度要求,針對這種情況,可以采取多層循環(huán)合并或者嵌套并行的方法。當(dāng)前程序由于循環(huán)內(nèi)變量初值不為0,合并循環(huán)進(jìn)行的計算可能較為繁瑣,因此,使用的方法為嵌套并行。

3.7 將程序移植于MIC卡[11]

當(dāng)前使用的應(yīng)用模式以CPU為主,MIC為輔的offload模式,offload模式以CPU端為控制端完成控制任務(wù)和數(shù)據(jù)傳輸任務(wù)(可能會有小部分計算任務(wù)),MIC端作為計算端,完成CPU交于的并行計算任務(wù)。基本流程是在當(dāng)前的串行程序中,每當(dāng)執(zhí)行到需要并行的部分(OpenMP語句已標(biāo)出),則將這段代碼與相關(guān)的數(shù)據(jù)發(fā)送到設(shè)備端并行執(zhí)行,待其返回后,主線程再繼續(xù)執(zhí)行。

在修改后的代碼基礎(chǔ)上,使用offload關(guān)鍵字將需要在MIC卡上運(yùn)行的程序部分進(jìn)行標(biāo)出。在kji循環(huán)開始之前,添加offload引語。使用編譯指令icpc生成MIC程序。

3.8 MIC程序進(jìn)一步優(yōu)化

3.8.1 C Intrinsic優(yōu)化

使用底層編程指令集C Intrinsic來控制向量化的數(shù)據(jù)讀取操作,從而有效減少聚合/分散操作,使得MIC平臺上程序性能提升。

3.8.2 數(shù)據(jù)對齊優(yōu)化

如圖5所示,在MIC上開辟內(nèi)存時使用_mm_malloc語句可以保證數(shù)據(jù)對齊,將一個高速緩存行的數(shù)據(jù)一次性讀入向量寄存器。

3.8.3 數(shù)據(jù)傳輸優(yōu)化

當(dāng)程序運(yùn)行至MIC程序塊部分/MIC程序部分運(yùn)行完畢時,CPU與MIC卡之間需要進(jìn)行數(shù)據(jù)傳輸,例如開始時CPU需要向MIC傳送MIC代碼段需要的變量值,而在MIC部分程序計算完成后向CPU返回計算結(jié)果,如圖6所示。

采用以上方法后,使得CPU與MIC卡之間高效傳輸,并減少不必要的數(shù)據(jù)交換,提高了程序運(yùn)行效率。

3.9 運(yùn)算性能結(jié)果與分析

在高性能計算領(lǐng)域中常使用加速比[1,10]來衡量并行系統(tǒng)或程序并行化的性能和效果,加速比定義為:

(2)

從圖7中的運(yùn)算結(jié)果可以看出,程序運(yùn)算量較小時,使用CPU與MIC協(xié)同計算的效果并不是很好,較僅使用CPU甚至更差,主要是因為MIC與CPU之間數(shù)據(jù)傳輸所花費(fèi)的時間比例較大,而主要的計算部分花費(fèi)的時間卻并不多。當(dāng)程序運(yùn)算量達(dá)到中等時,MIC的計算優(yōu)勢開始漸漸顯現(xiàn),與在MIC上計算所需的時間相比,數(shù)據(jù)傳輸?shù)臅r間占比已漸漸減小,當(dāng)達(dá)到大規(guī)模數(shù)據(jù)計算時,數(shù)據(jù)傳輸在整個時間花費(fèi)上已可以忽略不計。

圖7 不同規(guī)模下的加速比

4 結(jié) 語

程序的并行化和大規(guī)模計算都是近幾年發(fā)展的熱點。本文將兩者利用MIC卡結(jié)合起來,在大規(guī)模計算的前提下,很好地提高了程序的效率,而通過實驗也證明了MIC卡并行計算的優(yōu)越性。

[1] 陳國良編著.并行算法的設(shè)計與分析[M].2版.北京:高等教育出版社,2002.

[2] (美)格蘭馬,等.并行計算導(dǎo)論[M].2版.張武等譯.北京:機(jī)械工業(yè)出版社,2005.

[3] 易 娟.基于MIC的主從式并行遺傳算法的研究和實現(xiàn)[D].濟(jì)南:山東大學(xué).2015.

[4] 陳 呈.面向MIC平臺的OpenACC實現(xiàn)與優(yōu)化關(guān)鍵技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué).2013.

[5] 周長飛.基于MIC的圖像顯著性檢測技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué).2013.

[6] 劉國波.MIC平臺上的并行散列函數(shù)庫的研究與應(yīng)用[D].廣州:華南理工大學(xué).2015.

[7] 沈 鉑,張廣勇,吳韶華,等.基于MIC平臺的offload并行方法研究[J].計算機(jī)科學(xué).2014,41(6):477-480.

[8] 亞洲超算競賽協(xié)會.超算競賽導(dǎo)論.

[9] 英特爾Xeon Phi協(xié)處理器的軟件開發(fā)指南ver.1.04.

[10] 張軍華,臧勝濤,單聯(lián)瑜,等.高性能計算的發(fā)展現(xiàn)狀及趨勢[J].石油地球物理勘探.2010,45(6):918-925.

[11] 王恩東,張 清,沈 鉑,等.MIC高性能計算編程指南[M].北京:中國水利水電出版社.2012.

[12] 殷順昌.OpenMP并行程序性能分析[D].長沙:國防科學(xué)技術(shù)大學(xué).2006.

[13] (美)馬特森,等.并行編程模式[M].張云良等譯.北京:機(jī)械工業(yè)出版社, 2015.

[14] 羅秋明.OpenMP編譯原理及實現(xiàn)技術(shù)[M].北京:清華大學(xué)出版社,2012.

[15] 查普曼.使用OpenMP:便攜式共享存儲并行編程(科學(xué)與工程計算).

[16] (孟加拉)阿克特,(美)羅伯茨.多核程序設(shè)計技術(shù):通過軟件多線程提升性能[M].李寶峰,富弘毅,李稻譯.北京:電子工業(yè)出版社,2007.

Research on the Porting and Implementation of 3D_EW in MIC Parallel Programming

LIXuejian,LUOJing,LUChang,XUXingzhong

(School of Computer Science and Technology, Anhui University, Hefei 230601, China)

3D_EW is a real application in the field of petroleum exploration which requires high computing power support when it operates. The efficiency is very low when the calculation runs on one CPU. MIC card is a Xeon core melt product launched by Intel Corporation. It provides hundreds of hardware threads running simultaneously, bringing a high parallelism. In this paper, a method is proposed to parallel 3D_EW program and transplant it to the MIC card. The experiments show that the parallel running speed of MIC is much larger than that of serial operation speed when 3D_EW is used in large scale operation.

3D elastic wave modeling; MIC; transplant; parallel; optimization policy

2016-08-15

國家自然科學(xué)基金項目(61300169)

李薛劍(1981-),男,安徽合肥人,碩士,講師,研究方向為程序分析與驗證、高性能計算。

Tel.:13856005370; E-mail:wind1999@mail.ustc.edu.cn

TP 391

A

1006-7167(2017)04-0123-04

猜你喜歡
程序效率優(yōu)化
超限高層建筑結(jié)構(gòu)設(shè)計與優(yōu)化思考
民用建筑防煙排煙設(shè)計優(yōu)化探討
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
提升朗讀教學(xué)效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
試論我國未決羈押程序的立法完善
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
跟蹤導(dǎo)練(一)2
主站蜘蛛池模板: 国产一级特黄aa级特黄裸毛片 | 8090午夜无码专区| 伊人久久久久久久久久| 精品欧美日韩国产日漫一区不卡| 欧美性精品不卡在线观看| 无码久看视频| 欧美一级爱操视频| 精品久久高清| 波多野结衣一区二区三区四区| 在线观看精品自拍视频| 激情综合网址| 一级爱做片免费观看久久| 三上悠亚一区二区| 亚洲精品图区| 亚洲第一av网站| 欧美一级在线看| 婷婷丁香色| 91久久偷偷做嫩草影院精品| 又大又硬又爽免费视频| 色老头综合网| 国产综合精品一区二区| 亚洲久悠悠色悠在线播放| 日本福利视频网站| 美女潮喷出白浆在线观看视频| 国产精品久久久久久久久kt| 国产国产人成免费视频77777| 十八禁美女裸体网站| 中文字幕永久在线看| 九九热精品免费视频| 欧美a√在线| 欧美激情第一欧美在线| 99福利视频导航| 91精品国产自产在线老师啪l| 国产91小视频| 精品视频在线一区| 欧美劲爆第一页| 国产无人区一区二区三区| 婷婷成人综合| 国产国产人在线成免费视频狼人色| 在线观看精品自拍视频| 中文字幕 91| 色哟哟国产精品| 日韩欧美在线观看| 国产在线观看精品| 亚洲精品在线91| 亚洲第一视频区| 91视频99| 丝袜久久剧情精品国产| 91久久夜色精品国产网站| 99热精品久久| 性欧美在线| 日本福利视频网站| 亚洲精品第一页不卡| 黄色国产在线| 动漫精品啪啪一区二区三区| 国产午夜在线观看视频| 日韩在线中文| 5388国产亚洲欧美在线观看| av一区二区三区高清久久| 国产精品一区在线麻豆| 国产精品毛片一区视频播| 亚洲无码高清免费视频亚洲 | 九九九国产| 久青草免费视频| 亚洲国产精品一区二区第一页免 | 欧美一区福利| 四虎永久在线精品影院| 亚洲码在线中文在线观看| 国产在线视频自拍| 无码在线激情片| 伦伦影院精品一区| 亚洲精品色AV无码看| 青青青国产免费线在| 一本色道久久88综合日韩精品| 亚洲国产无码有码| 日韩少妇激情一区二区| 国产精品亚欧美一区二区三区 | 色妞www精品视频一级下载| 国产高清不卡| 国产成人一区免费观看| 日韩a在线观看免费观看| 亚洲精品另类|