一種cpu串行程序移植到mic平臺(tái)的方法
【專(zhuān)利摘要】本發(fā)明提供了一種實(shí)現(xiàn)CPU串行程序移植到MIC平臺(tái)的方法,涉及CPU串行程序修改和MIC并行程序移植。該方法包括:按照MIC程序格式要求修改原CPU串行程序,得到新版本的CPU串行程序;然后開(kāi)發(fā)CPU版本的OpenMP版本并行程序;最后把OpenMP程序移植到MIC平臺(tái)上并進(jìn)行進(jìn)一步的優(yōu)化。本發(fā)明利用先修改CPU串行程序后移植到MIC平臺(tái)的方法,充分利用CPU和MIC上的資源,快速、有效地實(shí)現(xiàn)CPU串行程序移植到MIC平臺(tái)的方法。
【專(zhuān)利說(shuō)明】—種CPU串行程序移植到MIC平臺(tái)的方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及計(jì)算機(jī)高性能計(jì)算領(lǐng)域、并行計(jì)算領(lǐng)域,具體涉及一種實(shí)現(xiàn)CPU串行程序移植到MIC平臺(tái)的方法。
【背景技術(shù)】
[0003]MIC (Many Integrated Core)是Intel公司推出的眾核處理器,跟通用的多核至強(qiáng)處理器相比,MIC眾核架構(gòu)具有更小的內(nèi)核和硬件線(xiàn)程,眾核處理器計(jì)算資源密度更高,片上通信開(kāi)銷(xiāo)顯著降低,更多的晶體管和能量,能夠勝任更為復(fù)雜的并行應(yīng)用。
[0004]Intel MIC產(chǎn)品基于X86架構(gòu),基于重核的眾核處理器,包含50個(gè)以上的核心,以及512bit的向量位寬,雙精性能超過(guò)lTFlops。
[0005]Intel MIC產(chǎn)品采用PC1-E的方式與主板連接,如圖1所示,因此MIC做計(jì)算時(shí)需要先把數(shù)據(jù)由CPU內(nèi) 存?zhèn)鬟f到MIC內(nèi)存中。另外,MIC作為眾核處理器,并行線(xiàn)程數(shù)較多,與CPU平臺(tái)上的并行方式有很大的不同,正確的MIC并行程序開(kāi)發(fā)過(guò)程將獲得快速、高效的結(jié)果,否則將不能有效地、合理地利用MIC加速。
[0006]可見(jiàn),為實(shí)現(xiàn)MIC并行程序開(kāi)發(fā)的需求,需要一種快速、有效地實(shí)現(xiàn)CPU串行程序移植到MIC平臺(tái)的方法。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于實(shí)現(xiàn)一種快速、有效地CPU串行程序移植到MIC平臺(tái)的方法,提高M(jìn)IC并行程序開(kāi)發(fā)效率,降低MIC并行程序開(kāi)發(fā)周期,該方法按照先修改CPU串行程序后移植到MIC平臺(tái)的原理,把需要在MIC上做的工作盡量先在CPU平臺(tái)上修改,降低了程序的開(kāi)發(fā)難度,同時(shí)有利用bug的調(diào)試。可以分為以下步驟:
(I)CPU串行程序分析
對(duì)于CPU串行程序,首先需要測(cè)試串行程序中的熱點(diǎn)函數(shù),以及分析熱點(diǎn)函數(shù)的并行
性:
a)熱點(diǎn)測(cè)試
根據(jù)時(shí)間的測(cè)試結(jié)果確定熱點(diǎn)函數(shù),作為后面移植的重點(diǎn)代碼模塊。
[0008]b)并行性分析
找出熱點(diǎn)代碼后,需要分析熱點(diǎn)部分的算法、數(shù)據(jù)特點(diǎn),根據(jù)算法和數(shù)據(jù)的特點(diǎn)分析其是否可以并行,確定其并行性。
[0009]c)確定MIC內(nèi)核使用的數(shù)組
根據(jù)對(duì)串行程序的分析,確定哪些模塊需要移植到MIC平臺(tái)上運(yùn)行,對(duì)于需要運(yùn)行上MIC平臺(tái)上的代碼內(nèi)的數(shù)據(jù)進(jìn)行分析,確定數(shù)組在代碼中的什么位置傳遞到MIC上,傳遞的方向是in、out、還是inout,以及每次傳遞時(shí)的大小等信息。[0010](2)仿MIC格式的CPU串行程序
MIC程序相對(duì)CPU程序比較復(fù)雜,當(dāng)出現(xiàn)bug時(shí),調(diào)試的難度也要比CPU程序大很多,為了降低MIC程序開(kāi)發(fā)難度和周期,可以把一些MIC上的移植工作提前在CPU平臺(tái)上實(shí)現(xiàn),具體涉及下面幾個(gè)方面:a)修改成可并行算法
對(duì)于CPU串行程序,有些代碼理論上可以并行,但經(jīng)過(guò)CPU版本的優(yōu)化之后導(dǎo)致代碼不能直接并行化,這時(shí)需要根據(jù)并行算法的要求修改原程序,改成可并行的模式;有些模塊理論上是可以并行的,但串行算法無(wú)法直接并行化,需要重新設(shè)計(jì)并行算法。
[0011]b)數(shù)組修改
根據(jù)Mic并行程序?qū)?shù)組格式的要求對(duì)串行程序中的數(shù)組進(jìn)行修改。
[0012]根據(jù)前面幾條的修改方式,對(duì)原CPU程序修改成一個(gè)仿MIC格式的CPU串行程序,為后面的移植工作做大量的準(zhǔn)備,這樣有利于后面MIC程序的開(kāi)發(fā)和調(diào)試。
[0013](3) CPU平臺(tái)OpenMP版本程序
基于CPU多核平臺(tái)和步驟2得到的串行程序利用OpenMP并行編程模型實(shí)現(xiàn)其OpenMP并行程序,并保證其結(jié)果的正確性。
[0014]為了滿(mǎn)足程序往MIC平臺(tái)的移植,設(shè)計(jì)CPU版本的OpenMP程序需要充分考慮擴(kuò)展性,因?yàn)椋琈CI平臺(tái)需要設(shè)置數(shù)百個(gè)線(xiàn)程,而CPU平臺(tái)僅幾十個(gè)線(xiàn)程。
[0015](4) MIC并行程序基本版本
根據(jù)對(duì)原程序數(shù)組的分析,把CPU平臺(tái)上的OpenMP版本程序移植到MIC平臺(tái),主要包
括:
a)實(shí)現(xiàn)Offload語(yǔ)句
根據(jù)對(duì)數(shù)組的分析,完成offload語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)的傳遞和MIC內(nèi)核的調(diào)用。
[0016]b)修改OpenMP線(xiàn)程數(shù)
根據(jù)MIC核的數(shù)目設(shè)計(jì)OpenMP的線(xiàn)程數(shù),充分利用MIC的計(jì)算資源。
[0017](5) MIC并行程序優(yōu)化版本
根據(jù)步驟4實(shí)現(xiàn)的基本版本的MIC并行程序,利用MIC的優(yōu)化技術(shù)進(jìn)一步提高并行程序的性能,主要優(yōu)化包括兩個(gè)方面:通信優(yōu)化和內(nèi)核優(yōu)化。
[0018]a) MIC通信優(yōu)化
MIC計(jì)算需要CPU與MIC之間進(jìn)行數(shù)據(jù)的傳遞,合理的利用通信優(yōu)化技術(shù)有利用提高M(jìn)IC并行程序的性能,主要手段包括:nOCOpy、異步傳遞等。
[0019]b) MIC內(nèi)核優(yōu)化
MIC內(nèi)核的優(yōu)化對(duì)其性能更為重要,常見(jiàn)的方法有:并行度、Cache、向量化等。
[0020]本發(fā)明的有益效果是:提出一種MIC程序開(kāi)發(fā)的過(guò)程,可以快速、有效地實(shí)現(xiàn)CPU串行程序移植到MIC平臺(tái)上,降低MIC并行程序開(kāi)發(fā)的周期和難度,減少bug的調(diào)試時(shí)間。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0021]附圖1 CPU+MIC協(xié)同計(jì)算方式示意圖;
附圖2 CPU串行程序移植到MIC平臺(tái)的過(guò)程示意圖。【具體實(shí)施方式】
[0022]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清晰,下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明作以下詳細(xì)說(shuō)明。
[0023]( I) CPU串行程序分析
對(duì)于CPU串行程序,首先需要測(cè)試串行程序中的熱點(diǎn)函數(shù),以及分析熱點(diǎn)函數(shù)的并行
性:
a)熱點(diǎn)測(cè)試
通常測(cè)試熱點(diǎn)有兩種方法:(1)對(duì)每個(gè)函數(shù)模塊添加時(shí)間函數(shù),根據(jù)打印出來(lái)的時(shí)間確定熱點(diǎn)模塊;(2)使用Intel vTune Amplifier XE等熱點(diǎn)分析工具確定熱點(diǎn)模塊。根據(jù)時(shí)間的測(cè)試結(jié)果確定熱點(diǎn)函數(shù),作為后面移植的重點(diǎn)代碼模塊。
[0024]b)并行性分析
找出熱點(diǎn)代碼后,需要分析熱點(diǎn)部分的算法、數(shù)據(jù)特點(diǎn),根據(jù)算法和數(shù)據(jù)的特點(diǎn)分析其是否可以并行,確定其并行性。
[0025]c)確定MIC內(nèi)核使用的數(shù)組
根據(jù)對(duì)串行程序的分析,確定哪些模塊需要移植到MIC平臺(tái)上運(yùn)行,對(duì)于需要運(yùn)行上MIC平臺(tái)上的代碼內(nèi)的數(shù)據(jù)進(jìn)行分析,確定數(shù)組在代碼中的什么位置傳遞到MIC上,傳遞的方向是in、out、還是inout,以及每次傳遞時(shí)的大小等信息。
[0026](2)仿MIC格式的CPU串行程序
MIC程序相對(duì)CPU程序比較復(fù)雜,當(dāng)出現(xiàn)bug時(shí),調(diào)試的難度也要比CPU程序大很多,為了降低MIC程序開(kāi)發(fā)難度和周期,可以把一些MIC上的移植工作提前在CPU平臺(tái)上實(shí)現(xiàn),具體涉及下面幾個(gè)方面:a)修改成可并行算法
對(duì)于CPU串行程序,有些代碼理論上可以并行,但經(jīng)過(guò)CPU版本的優(yōu)化之后導(dǎo)致代碼不能直接并行化,這時(shí)需要根據(jù)并行算法的要求修改原程序,改成可并行的模式;有些模塊理論上是可以并行的,但串行算法無(wú)法直接并行化,需要重新設(shè)計(jì)并行算法。
[0027]b)數(shù)組修改
CPU串行程序中使用的數(shù)組定義的形式有可能無(wú)法在MIC上直接使用,這時(shí)需要對(duì)數(shù)組的定義進(jìn)行修改,如C語(yǔ)言程序,多維數(shù)組改成一維數(shù)組,才能進(jìn)行CPU與MIC之間的數(shù)據(jù)傳遞。另外,考慮到向量化和訪(fǎng)存之間的關(guān)系,有時(shí)還需要對(duì)數(shù)組的訪(fǎng)問(wèn)方向進(jìn)行修改,從而也需要改變數(shù)組的定義形式(如做行列變換)??傊鶕?jù)MIC對(duì)數(shù)組使用和CPU串行程序之間的區(qū)別,提前把數(shù)組修改,方便程序的調(diào)試。
[0028]根據(jù)前面幾條的修改方式,對(duì)原CPU程序修改成一個(gè)仿MIC格式的CPU串行程序,為后面的移植工作做大量的準(zhǔn)備,這樣有利于后面MIC程序的開(kāi)發(fā)和調(diào)試。
[0029](3 ) CPU平臺(tái)OpenMP版本程序
基于CPU多核平臺(tái)和步驟2得到的串行程序利用OpenMP并行編程模型實(shí)現(xiàn)其OpenMP并行程序,并保證其結(jié)果的正確性。
[0030]為了滿(mǎn)足程序往MIC平臺(tái)的移植,設(shè)計(jì)CPU版本的OpenMP程序需要充分考慮擴(kuò)展性,因?yàn)?,MCI平臺(tái)需要設(shè)置數(shù)百個(gè)線(xiàn)程,而CPU平臺(tái)僅幾十個(gè)線(xiàn)程。
[0031](4) MIC并行程序基本版本根據(jù)對(duì)原程序數(shù)組的分析,把CPU平臺(tái)上的OpenMP版本程序移植到MIC平臺(tái),主要包
括:
a)實(shí)現(xiàn)Offload語(yǔ)句
根據(jù)對(duì)數(shù)組的分析,完成offload語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)的傳遞和MIC內(nèi)核的調(diào)用,offload語(yǔ)句按下面格式實(shí)現(xiàn):
【權(quán)利要求】
1.一種實(shí)現(xiàn)CPU串行程序移植到MIC平臺(tái)的方法,該方法包括:CPU串行程序和MIC并行程序, 所述CPU串行程序是指CPU串行程序的分析和修改、以及OpenMP并行程序?qū)崿F(xiàn); 所述MIC并行程序是指CPU程序移植到MIC平臺(tái),以及MIC并行程序的優(yōu)化。
2.按照權(quán)利要求1所述的方法,其特征在于,所述CPU串行程序?qū)⒁绦蚍治觥⑿薷摹⒁约癘penMP并行程序?qū)崿F(xiàn),具體包括: CPU串行程序分析; 仿MIC格式的CPU串行程序修改; CPU平臺(tái)OpenMP版本程序?qū)崿F(xiàn)。
3.按照權(quán)利要求2所述的方法,其特征在于,所述CPU串行程序分析,具體包括: 利用打印時(shí)間或vTune工具測(cè)試方式測(cè)試串行程序中的熱點(diǎn)模塊; 根據(jù)算法特點(diǎn)和數(shù)據(jù)特點(diǎn)分析熱點(diǎn)模塊是否可以并行; 根據(jù)可并行的模塊,找到MIC內(nèi)核將會(huì)使用到的數(shù)組。
4.按照權(quán)利要求2所述的方法,其特征在于,所述仿MIC格式的CPU串行程序修改,具體包括: 原程序算法修改,修改成可并行的代碼; 數(shù)組修改,修改成適合MIC并行程序格式的數(shù)組形式。
5.按照權(quán)利要求2所述的方法,其特征在于,所述CPU平臺(tái)OpenMP版本程序?qū)崿F(xiàn)是指基于CPU多核平臺(tái),利用OpenMP并行模型實(shí)現(xiàn)OpenMP版本并行程序。
6.按照權(quán)利要求1所述的方法,其特征在于,所述CPU程序移植到MIC平臺(tái),以及MIC并行程序的優(yōu)化,具體包括: MIC并行程序基本版本的實(shí)現(xiàn); MIC并行程序的優(yōu)化。
7.按照權(quán)利要求6所述的方法,其特征在于,所述MIC并行程序基本版本的實(shí)現(xiàn),具體包括: Offload語(yǔ)句的實(shí)現(xiàn),實(shí)現(xiàn)CPU和MIC之間的數(shù)據(jù)傳遞,以及MIC內(nèi)核的調(diào)用; 修改OpenMP線(xiàn)程數(shù),根據(jù)MIC核的數(shù)目設(shè)計(jì)OpenMP的線(xiàn)程數(shù),充分利用MIC的計(jì)算資源。
8.按照權(quán)利要求6所述的方法,其特征在于,所述MIC并行程序的優(yōu)化,具體包括: MIC通信優(yōu)化,利用nocopy、異步等技術(shù)減少CPU和MIC之間通信的時(shí)間; MIC內(nèi)核優(yōu)化,利用并行度優(yōu)化、cache局部性原理、向量化優(yōu)化等手段優(yōu)化MIC內(nèi)核,提高M(jìn)IC并行程序的性能。
【文檔編號(hào)】G06F9/44GK103530132SQ201310517767
【公開(kāi)日】2014年1月22日 申請(qǐng)日期:2013年10月29日 優(yōu)先權(quán)日:2013年10月29日
【發(fā)明者】張廣勇, 沈鉑, 盧曉偉, 吳紹華, 張清 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司