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