面向循環(huán)并行化的軟件重構(gòu)方法研究與實現(xiàn)
發(fā)布時間:2020-09-16 20:32
隨著多核處理器的發(fā)展,多線程編程在提高軟件服務(wù)質(zhì)量方面扮演了愈發(fā)重要的角色。循環(huán)結(jié)構(gòu)在蘊含了豐富并行性的同時,因自身的復(fù)雜性及多樣性,成為軟件執(zhí)行過程中最耗時的部分。因此,如何實現(xiàn)循環(huán)結(jié)構(gòu)的并行化成為高性能計算的研究熱點。本文提出了一種面向循環(huán)并行化的軟件自動重構(gòu)方法,并在Eclipse JDT環(huán)境下,結(jié)合抽象語法樹分析方法設(shè)計實現(xiàn)了自動重構(gòu)工具R-Loop。本文的主要研究內(nèi)容如下:1)循環(huán)的并行化分析與實現(xiàn)。首先對循環(huán)結(jié)構(gòu)進行規(guī)范化約束,并對循環(huán)數(shù)據(jù)依賴、循環(huán)控制依賴等依賴關(guān)系進行分析,同時根據(jù)各自的成因及特點,對上述依賴進行消除。然后在確保訪問安全的前提下,通過添加與線程相關(guān)的操作實現(xiàn)Executor機制下的循環(huán)并行化。最后對程序執(zhí)行時間、加速比進行驗證,為自動重構(gòu)提供理論基礎(chǔ)。2)面向循環(huán)并行化的自動重構(gòu)。結(jié)合軟件靜態(tài)分析方法對重構(gòu)的轉(zhuǎn)換邏輯、前置條件等進行設(shè)置,通過抽象語法樹分析方法將源程序解析成抽象樹狀結(jié)構(gòu),確定源程序中各變量與抽象語法樹中各節(jié)點的對應(yīng)關(guān)系。通過對不同節(jié)點的增加、刪除、修改等操作實現(xiàn)循環(huán)并行化的自動重構(gòu)。3)自動重構(gòu)工具的設(shè)計與實現(xiàn)。依據(jù)循環(huán)并行化重構(gòu)方法,在Eclipse JDT環(huán)境下,設(shè)計實現(xiàn)自動重構(gòu)工具R-Loop,同時詳細展示了該工具的實現(xiàn)過程和預(yù)覽界面。最后選取Java Grande Forum基準測試套件中的Crypt、Lufact、Series、SOR、SparseMatmulti以及MonteCarlo程序?qū)-Loop進行重構(gòu)功能測試。結(jié)果表明,R-Loop可以在較短的時間內(nèi)完成for型循環(huán)的自動并行化轉(zhuǎn)換,同時可以保證重構(gòu)前后程序外部可觀測行為的一致性、正確性,一定程度上提高了程序的執(zhí)行效率。
【學(xué)位單位】:河北科技大學(xué)
【學(xué)位級別】:碩士
【學(xué)位年份】:2019
【中圖分類】:TP332
【部分圖文】:
圖 2-2 并行設(shè)計的兩種形式行化重構(gòu)步驟重構(gòu)對象的不同,重構(gòu)又可以化分為對象化重構(gòu)、模型重構(gòu)、面向方。在實際重構(gòu)過程中,不同類型對應(yīng)了不同的重構(gòu)依據(jù)及重構(gòu)策略。致分為以下五個步驟:理解源代碼,確定重構(gòu)位置 重構(gòu)開始之前首先需要對源代碼進行理握其內(nèi)部結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系后,確定出重構(gòu)擴展點位置。其中針對,如變量名更換等可以由人工進行分析,根據(jù)變量對象之間的關(guān)系確口。但對于較為復(fù)雜的重構(gòu),單靠人工分析很難準確定位到重構(gòu)片段要借助軟件分析工具進行輔助。分解執(zhí)行的任務(wù)或數(shù)據(jù) 重構(gòu)擴展點位置確定后,根據(jù)硬件線程與軟,對執(zhí)行的任務(wù)或數(shù)據(jù)進行分解、劃分,使每個線程并行執(zhí)行的任務(wù)的片段。具體分解步驟見本章 2.2 節(jié),當(dāng)兩個或兩個以上的線程同時訪址,且至少有一個線程為寫操作時,會引發(fā)數(shù)據(jù)競爭問題而導(dǎo)致并行
化是循環(huán)并行化過程中的關(guān)鍵步驟,其目的迭代次數(shù),確保能夠?qū)⒀h(huán)迭代分布在中,僅依靠循環(huán)形式規(guī)范化是遠遠不夠的還需要結(jié)合軟件靜態(tài)分析方法,對可能引處理。系問而導(dǎo)致的數(shù)據(jù)競爭問題是阻礙串行程序行化過程中,循環(huán)迭代之間依賴關(guān)系的存此有必要對依賴關(guān)系進行分析,按照依賴環(huán)數(shù)據(jù)依賴兩種形式[56]。依賴是指當(dāng)前循環(huán)中的控制條件依賴于前依賴是指在程序執(zhí)行過程中,存在兩個或位置,且至少有一個為寫操作。根據(jù)數(shù)據(jù)
比產(chǎn)生很大的負面影響。因此,在對循環(huán)進行并行化操作潛在的依賴關(guān)系,根據(jù)依賴關(guān)系的成因及特點進行消除,部分,提高程序可并行化占比。賴關(guān)系消除并行化過程中,一般要先保證程序的正確性,其次才是提高化分析的過程即依賴關(guān)系的消除過程,由于不同形式的依消除方法,正確匹配消除方法與消除形式是循環(huán)并行化的關(guān)串行程序的并行化時,首先要考慮程序中語句上下文之間的語句是否存在控制依賴的情況,并對這種依賴關(guān)系進行消碼中,語句 S2 中的 a[i-1]依賴于前一次循環(huán)迭代中的語句 S義,語句 S2 控制依賴于語句 S1。針對循環(huán)控依賴,本文采。在示例中,分別定義了兩個臨時寄存器變量 temp 和 next,入的 a[i]值,如圖 3-2 右側(cè)示例代碼所示,if 循環(huán)中的控制除了循環(huán)迭代的控制依賴。
本文編號:2820342
【學(xué)位單位】:河北科技大學(xué)
【學(xué)位級別】:碩士
【學(xué)位年份】:2019
【中圖分類】:TP332
【部分圖文】:
圖 2-2 并行設(shè)計的兩種形式行化重構(gòu)步驟重構(gòu)對象的不同,重構(gòu)又可以化分為對象化重構(gòu)、模型重構(gòu)、面向方。在實際重構(gòu)過程中,不同類型對應(yīng)了不同的重構(gòu)依據(jù)及重構(gòu)策略。致分為以下五個步驟:理解源代碼,確定重構(gòu)位置 重構(gòu)開始之前首先需要對源代碼進行理握其內(nèi)部結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系后,確定出重構(gòu)擴展點位置。其中針對,如變量名更換等可以由人工進行分析,根據(jù)變量對象之間的關(guān)系確口。但對于較為復(fù)雜的重構(gòu),單靠人工分析很難準確定位到重構(gòu)片段要借助軟件分析工具進行輔助。分解執(zhí)行的任務(wù)或數(shù)據(jù) 重構(gòu)擴展點位置確定后,根據(jù)硬件線程與軟,對執(zhí)行的任務(wù)或數(shù)據(jù)進行分解、劃分,使每個線程并行執(zhí)行的任務(wù)的片段。具體分解步驟見本章 2.2 節(jié),當(dāng)兩個或兩個以上的線程同時訪址,且至少有一個線程為寫操作時,會引發(fā)數(shù)據(jù)競爭問題而導(dǎo)致并行
化是循環(huán)并行化過程中的關(guān)鍵步驟,其目的迭代次數(shù),確保能夠?qū)⒀h(huán)迭代分布在中,僅依靠循環(huán)形式規(guī)范化是遠遠不夠的還需要結(jié)合軟件靜態(tài)分析方法,對可能引處理。系問而導(dǎo)致的數(shù)據(jù)競爭問題是阻礙串行程序行化過程中,循環(huán)迭代之間依賴關(guān)系的存此有必要對依賴關(guān)系進行分析,按照依賴環(huán)數(shù)據(jù)依賴兩種形式[56]。依賴是指當(dāng)前循環(huán)中的控制條件依賴于前依賴是指在程序執(zhí)行過程中,存在兩個或位置,且至少有一個為寫操作。根據(jù)數(shù)據(jù)
比產(chǎn)生很大的負面影響。因此,在對循環(huán)進行并行化操作潛在的依賴關(guān)系,根據(jù)依賴關(guān)系的成因及特點進行消除,部分,提高程序可并行化占比。賴關(guān)系消除并行化過程中,一般要先保證程序的正確性,其次才是提高化分析的過程即依賴關(guān)系的消除過程,由于不同形式的依消除方法,正確匹配消除方法與消除形式是循環(huán)并行化的關(guān)串行程序的并行化時,首先要考慮程序中語句上下文之間的語句是否存在控制依賴的情況,并對這種依賴關(guān)系進行消碼中,語句 S2 中的 a[i-1]依賴于前一次循環(huán)迭代中的語句 S義,語句 S2 控制依賴于語句 S1。針對循環(huán)控依賴,本文采。在示例中,分別定義了兩個臨時寄存器變量 temp 和 next,入的 a[i]值,如圖 3-2 右側(cè)示例代碼所示,if 循環(huán)中的控制除了循環(huán)迭代的控制依賴。
【參考文獻】
相關(guān)期刊論文 前4條
1 張楊;張冬雯;仇晶;;面向Java鎖機制的字節(jié)碼自動重構(gòu)框架[J];計算機科學(xué);2015年11期
2 錢巨;張磊;徐寶文;;一種基于差異分散化的錯誤定位方法[J];計算機學(xué)報;2015年09期
3 閔洪波;徐寶文;錢巨;;基于程序依賴圖的Aspect挖掘技術(shù)[J];東南大學(xué)學(xué)報(自然科學(xué)版);2008年02期
4 潘雙夏,徐有忠,馮培恩,姜少飛,段福斌;面向并行設(shè)計的特征識別與模型重構(gòu)方法[J];計算機輔助設(shè)計與圖形學(xué)學(xué)報;2003年08期
相關(guān)碩士學(xué)位論文 前1條
1 柳晨光;面向多線程機制的軟件重構(gòu)方法研究與實現(xiàn)[D];河北科技大學(xué);2016年
本文編號:2820342
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2820342.html
最近更新
教材專著