两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種針對(duì)多核平臺(tái)的二進(jìn)制程序自動(dòng)并行化的設(shè)計(jì)方法

文檔序號(hào):9489291閱讀:581來(lái)源:國(guó)知局
一種針對(duì)多核平臺(tái)的二進(jìn)制程序自動(dòng)并行化的設(shè)計(jì)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于二進(jìn)制自動(dòng)并行化技術(shù)領(lǐng)域,具體涉及一種針對(duì)多核平臺(tái)的二進(jìn)制程序自動(dòng)并行化的設(shè)計(jì)方法。
【背景技術(shù)】
[0002]自2004年以來(lái),為了進(jìn)一步提升計(jì)算性能,緩解能耗問題,微處理器的體系結(jié)構(gòu)趨向于多核化發(fā)展,在嵌入式計(jì)算機(jī)領(lǐng)域,ARM近年來(lái)也推出了一系列的多核微處理器MPCore。雖然微處理器的多核化轉(zhuǎn)變進(jìn)一步提升了產(chǎn)品的性能,但由于傳統(tǒng)的上層軟件并不支持多核并行化,因此無(wú)法充分發(fā)揮多核處理器的性能潛力。另外,近年來(lái)由于數(shù)字圖像處理技術(shù)的廣泛應(yīng)用,需要處理的圖像數(shù)量增多、像素增大,從而使得圖像處理算法的計(jì)算量越來(lái)越大,而一般來(lái)說(shuō)圖像處理算法的可并行度較高。因此現(xiàn)在亟需一種自動(dòng)并行化的技術(shù)來(lái)解決這些問題。
[0003]1)基于源碼的自動(dòng)并行化
[0004]基于源碼的自動(dòng)并行化的一種方案是用可并行化的方式來(lái)編寫源碼,即使用一系列的API如Pthread來(lái)達(dá)到源碼的可并行化。另一種方案用指導(dǎo)性并行編譯方案如OpenMP,在源代碼中加入專用的pragma,由此編譯器可以自動(dòng)將程序進(jìn)行并行化。
[0005]基于源碼的自動(dòng)并行化算法比較成熟,比如使用控制流圖(CFG)查找循環(huán),使用定義使用鏈(def-use chain)查找標(biāo)量依賴,還有一些內(nèi)存依賴分析算法,如GO) (GreatestCommon Divisor)test、 Banerjee test、 Delta Array tests、 the Single IndexVariable (SIV)和 Multiple Index Variable (MIV) tests 等。但由于大部分的傳統(tǒng)軟件都是串行的,重寫源碼來(lái)達(dá)到可并行化的工作量太大,且對(duì)工程師在并行編程和算法上的要求比較高。
[0006]2)基于二進(jìn)制的自動(dòng)并行化
[0007]基于二進(jìn)制的自動(dòng)并行化具有適用于所有編譯器和語(yǔ)言、不用改變軟件的工具鏈、平臺(tái)的可移植性、高經(jīng)濟(jì)可行性、適用于匯編語(yǔ)言程序等優(yōu)點(diǎn)。但其缺點(diǎn)也很明顯??從源碼編譯成二進(jìn)制的過程往往會(huì)造成信息的丟失,易于分析的符號(hào)信息變成了寄存器操作,甚至編譯器為了能夠使生成的二進(jìn)制文件執(zhí)行速度更快,一些高級(jí)優(yōu)化選項(xiàng)會(huì)改變?cè)创a的程序結(jié)構(gòu)。由于寄存器信息靜態(tài)無(wú)法得到,尤其是多分支下靜態(tài)分析復(fù)雜,目前二進(jìn)制級(jí)別的自動(dòng)并行化多是基于運(yùn)行時(shí)動(dòng)態(tài)投機(jī)。
[0008]Second Write:自稱是第一個(gè)做仿射循環(huán)靜態(tài)二進(jìn)制自動(dòng)并行化的算法。缺點(diǎn):適用范圍較窄。該方法適用前提是通過前三步查找方法找到循環(huán)中的迭代子增量和地址變量的上下界:通過查找循環(huán)中的地址變量增量來(lái)得到迭代子增量;通過查找地址變量初始傳入的值來(lái)得到地址變量的下界;通過查找循環(huán)跳轉(zhuǎn)之前的比較指令中的地址變量來(lái)得到地址變量的上界。但是實(shí)際中滿足前三步查找方法的循環(huán)有限。首先是其尋找迭代子增量的方法不支持迭代子增量從多級(jí)內(nèi)存讀出的情況;其次,是在查找仿射內(nèi)存的地址變量的上下界時(shí)忽略了編譯器的將源碼編譯成二進(jìn)制時(shí)的優(yōu)化情況,對(duì)于一些高度優(yōu)化后的二進(jìn)制翻譯得到的循環(huán)適應(yīng)度較低;另外,無(wú)法找到邊界的基礎(chǔ)上給出的構(gòu)建reference group解決方法也存在問題,也沒有描述循環(huán)中含有多分支時(shí)的處理方法。

【發(fā)明內(nèi)容】

[0009]本發(fā)明的目的在于提供一種針對(duì)多核平臺(tái)的二進(jìn)制程序自動(dòng)并行化的設(shè)計(jì)方法,該方法能夠在無(wú)法獲取二進(jìn)制程序源碼的情況下分析和提取二進(jìn)制中的可并行性,并自動(dòng)生成對(duì)應(yīng)的可多核并行化二進(jìn)制程序,從而達(dá)到利用多核平臺(tái)對(duì)原程序進(jìn)行加速的效果。
[0010]為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案為:
[0011]—種針對(duì)多核平臺(tái)的二進(jìn)制程序自動(dòng)并行化的設(shè)計(jì)方法,包括以下步驟:
[0012]步驟一,將多核平臺(tái)中的二進(jìn)制翻譯成LLVM IR ;
[0013]步驟二,分析LLVM IR,得到LLVM IR的控制流圖CFG,通過控制流圖CFG找到LLVMIR中函數(shù)內(nèi)所有的循環(huán);
[0014]步驟三,對(duì)找到的所有循環(huán)分別進(jìn)行靜態(tài)分析,剔除所有沒有并行化可能的循環(huán);
[0015]步驟四,基于剩余的所有具有并行化可能的循環(huán)來(lái)重寫LLVM IR,判斷所有具有并行化可能的循環(huán)中是否存在內(nèi)存訪問依賴,若存在內(nèi)存訪問依賴,則按原循環(huán)的流程執(zhí)行,若不存在內(nèi)存訪問依賴,則對(duì)原循環(huán)進(jìn)行并行化處理,生成并行化代碼。
[0016]所述步驟三中剔除的沒有并行化可能的循環(huán)包括以下幾種:
[0017]第一類,含有多個(gè)不同循環(huán)退出條件的循環(huán);
[0018]第二類,循環(huán)體內(nèi)具體執(zhí)行順序會(huì)影響循環(huán)結(jié)束后程序運(yùn)行,且該影響不能被消除的循環(huán);
[0019]第三類,含有非迭代子類型的標(biāo)量依賴的循環(huán),以及含有迭代子類型的標(biāo)量依賴,且控制該標(biāo)量迭代的參數(shù)不恒定的循環(huán);
[0020]第四類,含有多分支的循環(huán)中不同分支迭代子更新情況不一致的循環(huán);
[0021]第五類,含有多分支的循環(huán)中有分支間標(biāo)量依賴的循環(huán);
[0022]第六類,循環(huán)退出條件不滿足以下條件的循環(huán):循環(huán)退出的比較指令的一個(gè)參數(shù)是和某迭代子相關(guān)的線性函數(shù),且另一個(gè)參數(shù)是和任何迭代子都不相關(guān)的循環(huán)內(nèi)恒定量。
[0023]所述步驟三在剔除所有沒有并行化可能的循環(huán)的同時(shí),也獲得以下兩個(gè)參數(shù):
[0024]1).循環(huán)中所有迭代子的信息;
[0025]2).循環(huán)的具體執(zhí)行次數(shù)計(jì)算式;
[0026]獲得的上述兩個(gè)參數(shù)將用于在步驟四中判斷所有具有并行化可能的循環(huán)中是否存在內(nèi)存訪問依賴。
[0027]當(dāng)循環(huán)內(nèi)部只含有內(nèi)存讀取操作或者只含有內(nèi)存寫入操作時(shí)不存在內(nèi)存訪問依賴,當(dāng)循環(huán)中同時(shí)包含對(duì)內(nèi)存地址的讀寫操作時(shí)則需判斷是否存在內(nèi)存訪問依賴從而影響循環(huán)并行性。
[0028]所述步驟四中在判斷是否存在內(nèi)存訪問依賴時(shí),簡(jiǎn)化成以下兩種情況:
[0029]第一種情況,若內(nèi)存讀取和內(nèi)存寫入的不是同一個(gè)數(shù)組,則其地址范圍沒有交集,即內(nèi)存讀取和內(nèi)存寫入地址的上下邊界沒有交集,表明不存在內(nèi)存訪問依賴;
[0030]第二種情況,若內(nèi)存讀取和內(nèi)存寫入的地址上下邊界有交集,則訪問的是同一個(gè)數(shù)組,分析內(nèi)存讀取和內(nèi)存寫入操作的內(nèi)存是否是一個(gè)數(shù)組中沒有交集的兩段內(nèi)存,若是,則不存在內(nèi)存訪問依賴,若不是,則存在內(nèi)存訪問依賴。
[0031]所述步驟四中判斷是否存在內(nèi)存訪問依賴的具體判斷方法如下:
[0032]將內(nèi)存讀取load和內(nèi)存寫入store操作的內(nèi)存地址簡(jiǎn)化為
[0033]load:。辦+山
[0034]store:Cjnj+dj
[0035]其中0 (叫七州小為循環(huán)次數(shù)七七分別是第i次、第j次循環(huán)迭代子的值;cC]分別是迭代子η ρ η,的倍數(shù),是本層循環(huán)計(jì)算內(nèi)存地址與迭代子相關(guān)的常量;d p d,分別是第i次、第j次子循環(huán)的地址偏移和父循環(huán)中計(jì)算地址偏移與迭代子無(wú)關(guān)的量之和;
[0036]首先代入η;、n.j和d ^ dj的最大值來(lái)計(jì)算load和store的操作內(nèi)存的上邊界,代入n^iij和d^dj的最小值來(lái)計(jì)算load和store的操作內(nèi)存的下邊界,若load和store的操作內(nèi)存不重合,表明不存在內(nèi)存訪問依賴;
[0037]若load和store的操作內(nèi)存重合,且有c.j,則計(jì)算e = max( d「dj |),若貝lj不存在內(nèi)存訪問依賴,若e>Cl,則遍歷來(lái)判斷是否存在內(nèi)存訪問依賴。
[0038]所述步驟四中生成并行化代碼是指將原本在單核串行N次執(zhí)行完畢的循環(huán)拆分到兩個(gè)核上運(yùn)行,一個(gè)CPU運(yùn)行原循環(huán)的[0到N/2)次循環(huán),另一個(gè)CPU運(yùn)行原循環(huán)的(N/2到N]次循環(huán)。
[0039]相對(duì)于現(xiàn)有技術(shù),本發(fā)明的有益效果為:
[0040]本發(fā)明提供的針對(duì)多核平臺(tái)的二進(jìn)制程序自動(dòng)并行化的設(shè)計(jì)方法,適用于在多核平臺(tái)中無(wú)法獲取某二進(jìn)制文件對(duì)應(yīng)源代碼的前提下,通過二進(jìn)制級(jí)別的翻譯和分析技術(shù),對(duì)該二進(jìn)制文件進(jìn)行并行化分析,若可以多核并行執(zhí)行,則自動(dòng)生成相應(yīng)的并行化執(zhí)行二進(jìn)制程序,從而達(dá)到充分利用多核平臺(tái)對(duì)程序進(jìn)行加速的效果。本發(fā)明在解決二進(jìn)制層面的自動(dòng)并行化分析時(shí),不僅考慮到了 Second Write能夠分析的簡(jiǎn)單案例,同時(shí)充分考慮了編譯器在生成二進(jìn)制時(shí)引入的高度優(yōu)化特點(diǎn),提供了一套完備性強(qiáng)且應(yīng)用范圍更廣的二進(jìn)制自動(dòng)并行化分析和實(shí)現(xiàn)方法。該方法具有以下優(yōu)點(diǎn):
[0
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
凭祥市| 郓城县| 股票| 铁岭市| 安康市| 沙河市| 安阳市| 偏关县| 隆德县| 北票市| 河北区| 清苑县| 宁乡县| 大冶市| 盘山县| 南投县| 阿尔山市| 垦利县| 通辽市| 灌云县| 安国市| 北海市| 南丹县| 建瓯市| 阳曲县| 赞皇县| 正镶白旗| 沽源县| 深州市| 武清区| 宁强县| 永善县| 嘉祥县| 咸宁市| 宁陕县| 桃源县| 石景山区| 成武县| 罗平县| 蒲城县| 句容市|