循環(huán)變換技術(shù)在自動向量化中的應(yīng)用研究
發(fā)布時間:2020-07-13 06:55
【摘要】:近年來,隨著多媒體應(yīng)用的迅速發(fā)展,很多高性能微處理器都采用了SIMD擴展技術(shù)。SIMD擴展技術(shù)缺少統(tǒng)一的指令描述規(guī)范,程序員不僅需要對程序的結(jié)構(gòu)有較為深刻的認(rèn)識,而且要掌握目標(biāo)平臺支持的擴展體系結(jié)構(gòu)和指令集的特點,對程序員來說編寫SIMD程序是具有挑戰(zhàn)性的工作,因此當(dāng)前編譯技術(shù)中的自動向量化就是解決這個問題的一個重要方法。 自動向量化需要編譯器能夠充分分析原程序的特點,將其中可向量化的循環(huán)或語句塊轉(zhuǎn)換成語義等價的SIMD指令。本文針對當(dāng)前的主流編譯器在自動向量化方面的缺點,結(jié)合傳統(tǒng)的循環(huán)變換方法,深入研究了可以提升自動向量化效率的循環(huán)變換技術(shù)。首先,以數(shù)據(jù)依賴關(guān)系分析為基礎(chǔ),分析了程序中語句向量化的合法性,設(shè)計實現(xiàn)了語句向量化識別算法及基于語句向量化識別的循環(huán)分布算法。第二,針對SIMD體系結(jié)構(gòu)中標(biāo)量部件與向量部件可并行工作的特點,研究了基于混合并行的循環(huán)變換技術(shù),設(shè)計實現(xiàn)了一種簡單通用的循環(huán)選擇合并算法,并針對合并不成功或性能不能達到預(yù)期效果的情況,提出了相應(yīng)的分段展開變換策略,提高了系統(tǒng)的硬件資源利用率。第三,針對自動向量化變換在處理復(fù)雜應(yīng)用程序所存在的不足,研究了基于信息識別的交互式變換方法,設(shè)計實現(xiàn)了一種交互式的循環(huán)變換調(diào)優(yōu)框架。在該框架結(jié)構(gòu)內(nèi),通過分析應(yīng)用程序的特點,采用可視化動靜態(tài)編譯信息的方法,為用戶提供一個高效的漸近式SIMD交互調(diào)優(yōu)環(huán)境。 本文研究的循環(huán)變換方法在自動向量化項目SW-VEC中進行實現(xiàn),測試結(jié)果表明,使用本文的自動變換方法對SPEC CPU2000浮點測試集中幾個向量化較好的測試程序性能平均有10%左右的提升,從而驗證了本文提出的方法可以提升向量化識別率并能夠得到較高的加速比。同時,測試結(jié)果表明,通過交互式的循環(huán)變換方法,可以彌補自動向量化中難以處理的復(fù)雜情況,進一步提高編譯器的向量化能力。
【學(xué)位授予單位】:解放軍信息工程大學(xué)
【學(xué)位級別】:碩士
【學(xué)位授予年份】:2011
【分類號】:TP338
【圖文】:
交互工具完整的信息文件(*.outinfo.xml)顯示模塊源碼SIMD代碼編譯信息分析添加幫助信息用戶交互式變換交互結(jié)束轉(zhuǎn)換圖 25 交互信息的使用過程交互信息的輸出要符合程序員的認(rèn)知習(xí)慣,首先要定位到程序的行號,告訴程序員,當(dāng)前的信息所處的位置,程序員可結(jié)合程序源碼、向量化后的代碼、循環(huán)信息對程序作進一步的判斷,從而選擇較有利的循環(huán)變換方法,以提高程序向量化的性能。輸出的圖形界面如下圖所示:
信息工程大學(xué)碩士學(xué)位論文樣,因此,單純的加速比對比也不能很好的說明問題。5.4 交互式變換的實現(xiàn)與測試變換式變換的過程中,需要針對程序的特點進行變換,在此主要針對SPEC2000說明本文提到的交互式向量化對程序的識別情況,由于此測試?yán)颖容^復(fù)雜,不同的程序員對程序的理解不一樣,針對一些常用的應(yīng)用,列出經(jīng)過交互變換后程序的加速比改進情況。5.4.1 交互式變換的實現(xiàn)交互式變換將自動向量化工具與用戶有機的結(jié)合了起來,實現(xiàn)是就應(yīng)該在一個平臺上將各方面的信息結(jié)合起來顯示出來,供用戶參考,同時也可將用戶在應(yīng)用層的信息輸出交給編譯器去識別處理。因此課題設(shè)計了如下的交互式變換模式,如下圖所示:
第 71 頁圖 33 交互式變換對 swim程序段的識別從上圖33中可以看出,針對此循環(huán)編譯信息輸出的內(nèi)容為數(shù)組VNEW、PNEW、UNEW的存取不連續(xù),無法向量化,幫助信息顯示的內(nèi)容是循環(huán)最內(nèi)層的索引變量出現(xiàn)在數(shù)組的非最后一維的位置,即沒有按照數(shù)組的存儲結(jié)構(gòu)來存取數(shù)據(jù),因而造成數(shù)據(jù)存取不連續(xù)。C程序中的數(shù)組存儲結(jié)構(gòu)與邏輯結(jié)構(gòu)相同,按照行優(yōu)先的順序進行存儲,而Fortran程序中的數(shù)組存儲結(jié)構(gòu)與C不同,按照列優(yōu)先的順序來進行存儲,即從數(shù)組邏輯上的高維到低 維 的 順 序 存 儲 。 為 了 簡 單 的 說 明 , 假 設(shè) MNMIN=3 , 則 上 例 中 數(shù) 組PNEW(ICHECK,JCHECK)的讀取順序與存儲順序可用下圖來說明:PNEW(1,1) PNEW(1.2) PNEW(1,3)PNEW(2,1)PNEW(3,1)PNEW(2,2) PNEW(2,3)PNEW(3,2) PNEW(3,3)PNEW(1,1) PNEW(2,1) PNEW(3,1) PNEW(1,2) PNEW(2,2) PNEW(3,2) PNEW(1,3) PNEW(2,3) PNEW(3,3)PNEW(1,1) PNEW(1,2) PNEW(1,3) PNEW(2,1) PNEW(2,2) PNEW(2,3) PNEW(3,1) PNEW(3,2) PNEW(3,3)邏輯結(jié)構(gòu)行列存儲結(jié)構(gòu)讀取順序圖 34 swim 程序段的數(shù)據(jù)邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、讀取順序及相互關(guān)系從上圖可以看出
本文編號:2753130
【學(xué)位授予單位】:解放軍信息工程大學(xué)
【學(xué)位級別】:碩士
【學(xué)位授予年份】:2011
【分類號】:TP338
【圖文】:
交互工具完整的信息文件(*.outinfo.xml)顯示模塊源碼SIMD代碼編譯信息分析添加幫助信息用戶交互式變換交互結(jié)束轉(zhuǎn)換圖 25 交互信息的使用過程交互信息的輸出要符合程序員的認(rèn)知習(xí)慣,首先要定位到程序的行號,告訴程序員,當(dāng)前的信息所處的位置,程序員可結(jié)合程序源碼、向量化后的代碼、循環(huán)信息對程序作進一步的判斷,從而選擇較有利的循環(huán)變換方法,以提高程序向量化的性能。輸出的圖形界面如下圖所示:
信息工程大學(xué)碩士學(xué)位論文樣,因此,單純的加速比對比也不能很好的說明問題。5.4 交互式變換的實現(xiàn)與測試變換式變換的過程中,需要針對程序的特點進行變換,在此主要針對SPEC2000說明本文提到的交互式向量化對程序的識別情況,由于此測試?yán)颖容^復(fù)雜,不同的程序員對程序的理解不一樣,針對一些常用的應(yīng)用,列出經(jīng)過交互變換后程序的加速比改進情況。5.4.1 交互式變換的實現(xiàn)交互式變換將自動向量化工具與用戶有機的結(jié)合了起來,實現(xiàn)是就應(yīng)該在一個平臺上將各方面的信息結(jié)合起來顯示出來,供用戶參考,同時也可將用戶在應(yīng)用層的信息輸出交給編譯器去識別處理。因此課題設(shè)計了如下的交互式變換模式,如下圖所示:
第 71 頁圖 33 交互式變換對 swim程序段的識別從上圖33中可以看出,針對此循環(huán)編譯信息輸出的內(nèi)容為數(shù)組VNEW、PNEW、UNEW的存取不連續(xù),無法向量化,幫助信息顯示的內(nèi)容是循環(huán)最內(nèi)層的索引變量出現(xiàn)在數(shù)組的非最后一維的位置,即沒有按照數(shù)組的存儲結(jié)構(gòu)來存取數(shù)據(jù),因而造成數(shù)據(jù)存取不連續(xù)。C程序中的數(shù)組存儲結(jié)構(gòu)與邏輯結(jié)構(gòu)相同,按照行優(yōu)先的順序進行存儲,而Fortran程序中的數(shù)組存儲結(jié)構(gòu)與C不同,按照列優(yōu)先的順序來進行存儲,即從數(shù)組邏輯上的高維到低 維 的 順 序 存 儲 。 為 了 簡 單 的 說 明 , 假 設(shè) MNMIN=3 , 則 上 例 中 數(shù) 組PNEW(ICHECK,JCHECK)的讀取順序與存儲順序可用下圖來說明:PNEW(1,1) PNEW(1.2) PNEW(1,3)PNEW(2,1)PNEW(3,1)PNEW(2,2) PNEW(2,3)PNEW(3,2) PNEW(3,3)PNEW(1,1) PNEW(2,1) PNEW(3,1) PNEW(1,2) PNEW(2,2) PNEW(3,2) PNEW(1,3) PNEW(2,3) PNEW(3,3)PNEW(1,1) PNEW(1,2) PNEW(1,3) PNEW(2,1) PNEW(2,2) PNEW(2,3) PNEW(3,1) PNEW(3,2) PNEW(3,3)邏輯結(jié)構(gòu)行列存儲結(jié)構(gòu)讀取順序圖 34 swim 程序段的數(shù)據(jù)邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、讀取順序及相互關(guān)系從上圖可以看出
【參考文獻】
相關(guān)期刊論文 前2條
1 曾揚;循環(huán)分布及依賴關(guān)系破除的優(yōu)化問題[J];計算機學(xué)報;1993年06期
2 陳文光,楊博,王紫瑤,鄭豐宙,鄭緯民;一個交互式的Fortran77并行化系統(tǒng)[J];軟件學(xué)報;1999年12期
相關(guān)博士學(xué)位論文 前1條
1 李玉祥;面向非多媒體程序的SIMD向量化方法及優(yōu)化技術(shù)研究[D];中國科學(xué)技術(shù)大學(xué);2008年
本文編號:2753130
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2753130.html
最近更新
教材專著