999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

彈藥任務管控軟件性能優化方法與實現

2023-09-15 01:20:58鄧傳斌
彈箭與制導學報 2023年4期
關鍵詞:優化效果

李 維,王 瑞,鄧傳斌

(1 西安交通工程學院中興通信學院,陜西 西安 710300;2 西安現代控制技術研究所,陜西 西安 710065;3 中興通訊公司,陜西 西安 710119)

0 引言

隨著智能彈藥武器系統的信息化、網絡化、智能化發展,尤其是巡飛彈、蜂群導彈等高度智能化武器的出現,彈藥武器的功能呈現出向多樣化發展的趨勢。巡飛彈的偵察打擊一體,蜂群導彈的多彈協同、路徑規劃等復雜功能的實現對任務管控系統提出了更高的要求,也使得任務管控系統的軟件規模、運算量、功能復雜度等指標均快速提升。在武器系統功耗、成本和體積等因素的制約下,任務管控系統多采用嵌入式微處理器作為其主運算平臺,對程序運行的空間和時間要求更為苛刻,通常需要對嵌入式軟件進行性能優化,以滿足系統應用的性能需求。軟件性能優化按實現方式可分為算法優化和編譯優化[1]。算法優化依賴于特定的業務邏輯,需要優化人員掌握特定的業務知識,泛化能力較弱,而編譯優化是較為通用的技術,泛化能力強、可規模推廣,因此編譯優化是嵌入式軟件優化方法研究熱點,產生了循環展開、寄存器分配、函數內斂等[2]大量優化成果,例如,廣泛使用的GCC(GNU compiler collection)編譯器V9.0.1版本就具有459個優化序列[3]。為降低編譯器使用難度,默認提供了-O1、-O2、-O3 和-OS優化等級,它們包含常規的編譯優化組合[4],然而優化組合的選取往往取決于待編譯的代碼特征,相同的組合對于不同的代碼所表現出來的優化效果往往不同,默認的優化等級無法完美的發揮編譯器的優化能力。因此,近幾年基于運行環境的反饋式優化成為軟件性能優化的研究熱點。

Ashouri等[5]使用機器學習算法進行編譯優化序列的選擇,首先在線下使用一系列靜態特征或動態特征表征源程序,構造訓練集進行模型訓練,然后使用訓練出的模型進行測試環境的編譯優化,由于訓練集和測試集特征很難符合獨立同分布,導致模型泛化誤差較大,工程應用效果有限。Chen等[6]使用遺傳算法尋找組合最優解,此方法由Plotnikov等[7]在TACT(tool for automatic compiler tuning)中實現。陸平靜等[8]使用模擬退火算法尋找最優解,Cormen等[9]使用蟻群算法進行編譯優化,但在實踐過程中發現該算法很難快速收斂,并容易陷入局部最優解,因此出現了大量改良的方法,這些改良方法主要圍繞尋找全局最優搜索算法展開,最具有代表性的是OpenTuner,該開源工具組合利用差分進化算法、粒子群優化算法、banbit變異技術對GCC編譯參數進行交叉、變異組合,最終通過適用度函數度量每一次組合參數的優劣程度,每次保留最優的組合,經過N次的迭代得到最優解。OpenTuner在準確率和召回率方面的表現都是當前最優的工具,并在軟件工程中得到廣泛使用。

編譯優化的效果取決于編譯器獲取代碼上下文信息的豐富程度,為充分挖掘編譯優化序列的優化效果,文中重點分析智能彈藥庫任務管控軟件編譯優化序列生效的時機,嘗試將每項編譯優化的效果發揮到極致,提出了將整個軟件工程的多個編譯單元整合成一個編譯單元的Unity編譯方法,然后再結合OpenTuner訓練出編譯優化序列組合。具體方法為分析編譯優化技術生效時機、編譯信息對優化效果的影響,進而提出Unity編譯優化思路。

1 編譯優化過程

如圖1所示[10],編譯過程也就是將文本內容和格式按照一定的規則進行等價轉換的過程,其中圖1中右半部分展示了代碼優化過程中編譯器采用優化序列 對待編譯程序的優化過程[11]。優化過程分為過程內優化和過程間優化[10],過程內優化即為一個函數內部的優化。過程間優化處理的是整個程序,它將信息從調用者傳遞到被調用者,或者反向傳送,比如過程內斂(inline),就是把一個過程調用替換為被調用過程的過程體,該技術需要獲取被調用者的實現信息,因此,如果被調用者與調用者歸屬于不同的編譯單元或調用者無法獲取被調用者的實現,編譯器就無法實現過程內斂,內斂優化的效果就會失效。如果能夠將軟件的不同編譯單元合并成一個編譯單元那么編譯器就可以看到編譯對象的完整信息,編譯器數據流分析、別名分析等技術更加準確,進而增加編譯優化效果。接下來分析Unity編譯實現的可能性和方法。

圖1 編譯優化過程Fig.1 Compilation optimization process

2 Unity編譯

Unity編譯是將軟件中的多個編譯單元匯聚成一個編譯單元,以匯聚后的編譯單元進行編譯優化的過程,Unity編譯的形式化可表示為:

(1)

式中:xi為原軟件的第i個編譯單元;x為將n個xi編譯單元匯聚后的代碼。原編譯優化過程為:

(2)

式中passj為具體的編譯優化技術,j=1,2,…,k。

從以上表達式中可以得知原基于多編譯單元的編譯優化過程,需要在文件之間傳遞控制流和數據流等信息,這些信息可能由于編譯單元彼此之間的不可見性(往往通過架構分層降低復雜度,通過每層獨立編譯成庫,實現物理解耦,最后將庫鏈接成可執行文件),導致編譯技術無法充分發揮作用。如果能夠在不破壞代碼原有物理結構的情況下,將代碼信息全工程可見,必然會提高代碼優化技術可參考的信息量,提升代碼優化效果。基于以上設想引入Unity編譯后,編譯優化過程為:

(3)

代碼編譯的所有信息可在上下文中顯式獲取。以下為Unity編譯的實現的關鍵過程:

1) 以編譯單元為單位,進行預處理,保證信息完整;

2) 以軟件獨立功能為單位,對預處理后的編譯單元進行匯聚展開。

2.1 預處理

預處理是編譯的初始階段,主要負責將編譯單元依賴信息以文本的形式進行擴充,依賴信息包括頭文件、預處理宏。其中頭文件a.h存放宏定義和函數聲明,a.c文件存放函數的定義,sum函數使用頭文件定義的宏abs。

根據編譯器GCC的命令格式,使用gcc-E a.c-o a.i命令對編譯單元a.c進行預處理得到a.i文件,同時將sum 函數中的abs宏進行文本替換。

2.2 匯聚展開

隨著軟件復雜度的增加,模塊化、微服務化拆分的思想可降低實現域復雜度,隨之產生了正交設計、SOLID等原則[12]。這些設計方法要求軟件按照功能進行拆分,提倡小函數、小文件,因此,一個軟件工程往往包含成千上萬個編譯單元。為提升編譯器的優化效果,需要將多個編譯單元匯聚成一個編譯單元。但現代編程語言規定在同一邏輯塊中有一處而且只能有唯一一處變量和函數的定義,對于大型程序進行匯聚可能出現命名沖突的問題,如合并前 a.c和b.c 中的兩個變量populationNum和getPopulationNum為文件作用域,在a.c和b.c獨立編譯時兩個變量彼此隔離,不會產生沖突。

但是是當a.c和b.c合并成文件d.c后,合并populationNum和getPoputionNum變量在d.c中存在命名沖突,最終編譯失敗。

為保證合并后的標識符不存在重復,以預處理之后.i文件為單位,保證命名全局唯一。

通過以上的預處理和編譯單元匯聚保證編譯信息的完整性,從而可以發揮編譯優化序列的優化效果。接下來將Unity方法與OpenTuner相結合,利用OpenTuner先進的多目標優化技術對軟件進行性能優化訓練。

3 系統框架

彈藥任務管理軟件的開發和部署是通過交叉編譯器完成,即在PC機上開發和編譯,而在彈藥裝備上運行,因此,優化系統主要在PC宿主機上完成,選用目前業界最先進的反饋式程序調諧器OpenTuner完成。OpenTuner用于構建領域特定的多目標程序自動調諧程序,其內部的一個關鍵功能是同時使用各種不同的搜索技術。為了能夠自動對軟件進行性能優化,我們在OpenTuner的基礎上加入代碼匯聚功能,將注入OpenTuner系統的程序能夠自動的實現Unity擴展,在此基礎上進行組合編譯優化,系統框架圖如圖2所示。該系統由代碼匯聚、搜索、測量和數據庫系統組成,代碼匯聚系統實現代碼匯聚并解決命名沖突問題。OpenTuner支持搜索技術的定制化,用戶可通過配置管理器更改配置從而修改搜索和測量方法,默認支持模式搜索、遺傳算法等搜索技術,對應不同的搜索空間和測量要求。該管理器還包括與訓練精度直接對應的參數,實現不同訓練精度的配置。

圖2 系統框架Fig.2 System framework

改良后的OpenTuner目錄結構如圖3所示。

圖3 OpenTuner代碼結構Fig.3 OpenTuner code structure

其使用方式比較簡單,只需要將待優化的源代碼放入./examples/unity/app目錄下,運行該目錄下的gccflags.py腳本即可開始優化訓練,該腳本自動從GCC配置中獲取優化序列,優化序列分為開關、標量和向量3種類型,將3種類型按照GA、PSO、差分變異等算法進行并行訓練,然后使用AUCBandit算法實現以上訓練結果的組合,減少搜索范圍、削減搜索空間,提升問題收斂速度。優化后的可運行產物可在./opentuner目錄下獲取。

4 性能評估

4.1 實施效果

首先使用mbedtls驗證Unity編譯優化的效果。mbedtls是對TLS和SSL協議實現的加密算法庫,廣泛應用于軍工等嵌入式系統設備,是一種常用的SSL加密算法庫。由于彈藥任務管理軟件的控制對象對性能要求十分嚴格,再加上真實打靶的驗證成本過高,因此在qemu上模擬 ARM vexpress-a9裝備環境,并使用GCC9.0.1作為編譯工具鏈,選擇-O2編譯產物作為比較基準,使用OpenTuner分別與Unity編譯、非Unity編譯相組合進行優化訓練,提升mbedtls庫中AES-GCM算法的加密速率,效果對比數據如表1所示。

表1 優化性能對比Table 1 Comparison of optimization performance

從以上數據中可以看出,雖然-O3選項打開了更多的優化序列,編譯時間更長,但優化后的代碼膨脹率更高,編譯產物的運行cache命中率降低(HitM數增加),導致-O3優化產物的加密速率并不比-O2好。使用OpenTuner結合Unity和非Unity編譯進行優化,編譯產物的加密速率都比-O2優化性能好。文中提出的Unity編譯方法編譯出的軟件性能最優,比基準提升76.03%,同時由于Unity編譯可以降低編譯器的鏈接時間,因此編譯耗時最低,降低15.13%,并且沒有造成版本膨脹,對硬件沒有額外的要求,實現了僅僅通過軟件升級即可提升彈藥系統的性能,提高系統反應靈敏度,因此,可以廣泛部署到現有的裝備中。

4.2 性能對比

使用Unity、OpenTuner和TACT對不同功能的代碼模塊CBench、PolyBench和MiBench進行優化訓練,訓練迭代次數為400,以-O2編譯選項為基準,優化對比見圖4。

圖4 訓練效果對比Fig.4 Comparison of training effect

從圖4中可以看出,由于OpenTuner使用了多種優化算法的組合,OpenTuner優化性能優于TACT。符合測試預期。由于編譯器可以從編譯對象中獲取更多的優化信息,因此Unity編譯優于OpenTuner優化效果,比基準平均高出20%的加速比。

由于OpenTuner使用多種啟發式算法進行組合,加快了訓練收斂速度。使用OpenTuner與Unity編譯結合對CBench、PolyBench和MiBench進行訓練發現平均訓練次數為400迭代后即可收斂,即編譯產物的性能不再有明顯提升,如圖5所示。

圖5 Unity編譯訓練收斂速度Fig.5 Convergence speed of Unity compilation training

接下來使用OpenTuner與非Unity編譯結合對以上代碼進行訓練,訓練收斂速度見圖6,從圖中可以看出訓練收斂迭代次數為500,明顯慢于Unity編譯訓練速度。圖中箱體的上邊沿和下邊沿的跨度表示每一百次訓練結果中軟件性能的波動范圍,從圖5和圖6的箱體跨度對比中可以看,Unity編譯訓練出的每組軟件性能波動較小,符合穩定收斂系統的特征,編譯信息的利用更充分。

圖6 常規編譯訓練收斂速度Fig.6 Convergence speed of general compilation training

從軟件工程成本上來看,訓練速度提升能夠極大降低軟件成本,提升項目研制速度。僅考慮mbedtls編譯時長開銷就可以壓縮25%的時間成本,使用編譯時長向訓練時長折算數據如表2所示,其中,編譯時間等于編譯時間乘訓練迭代次數。

表2 訓練時長對比Table 2 Comparison of training duration

5 結論

文中面向智能彈藥任務管控系統的嵌入式軟件特點和運行環境開展軟件編譯性能優化方法研究,定義了Unity編譯過程和實現方法,并將該方法與OpenTuner相結合,實驗結果表明該方法相比OpenTuner優化效果更好。由于編譯器自身也有可能存在bug,過多的編譯優化序列增加了觸發編譯器bug的風險,因此需要對訓練出的編譯優化序列進行壓縮,但當前對編譯優化序列壓縮的自動化程度不高,并且在編譯優化序列壓縮方面的研究較少。因此,在不影響優化效果的前提下,對編譯序列進行自動壓縮是下一步研究的重點。

猜你喜歡
優化效果
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
按摩效果確有理論依據
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
迅速制造慢門虛化效果
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
基于低碳物流的公路運輸優化
現代企業(2015年2期)2015-02-28 18:45:09
主站蜘蛛池模板: 欧美激情福利| 免费一看一级毛片| 国产精品免费久久久久影院无码| 欧美 亚洲 日韩 国产| 99久久精品免费观看国产| 天天综合网在线| 成人一级免费视频| 综合久久五月天| 三上悠亚一区二区| 国产成年女人特黄特色毛片免| 伊人久久大香线蕉影院| 91精品视频在线播放| 国产在线无码av完整版在线观看| 国产精品浪潮Av| 国产精品亚洲а∨天堂免下载| 91午夜福利在线观看精品| 精品国产香蕉在线播出| 国产色婷婷视频在线观看| 97精品国产高清久久久久蜜芽| 亚洲国产精品成人久久综合影院| 亚洲一级毛片免费观看| 色亚洲成人| 最新国产精品第1页| 亚洲第一成年网| 欧美曰批视频免费播放免费| 男女男免费视频网站国产| 久久 午夜福利 张柏芝| 国产精品 欧美激情 在线播放| 久久久精品国产亚洲AV日韩| 丁香亚洲综合五月天婷婷| 亚洲成人网在线播放| 毛片一区二区在线看| 美女免费精品高清毛片在线视| 国产一区在线视频观看| 91国内在线观看| 亚洲国产在一区二区三区| 国产福利一区视频| 国产免费网址| 在线观看欧美国产| 国产成人精品一区二区三在线观看| 欧美日韩中文国产| 国产91精品最新在线播放| 综合亚洲网| 九九热在线视频| 亚洲男人的天堂网| 亚卅精品无码久久毛片乌克兰| 亚洲欧美天堂网| 中文字幕天无码久久精品视频免费| 精品亚洲麻豆1区2区3区| 亚洲男人的天堂在线| 国产在线专区| 亚洲欧美激情另类| 国产亚洲欧美在线中文bt天堂| 色噜噜综合网| 国产日本视频91| 欧美亚洲综合免费精品高清在线观看| 日韩精品无码免费专网站| 日韩精品一区二区三区视频免费看| 尤物亚洲最大AV无码网站| 国产中文在线亚洲精品官网| 精品视频一区二区观看| 国产精品手机视频| 老司国产精品视频91| 国产黑人在线| 亚洲国产欧美国产综合久久 | 亚洲人成在线精品| 国产剧情一区二区| 国产精品天干天干在线观看| 欧美另类图片视频无弹跳第一页| 亚洲最大福利视频网| 国产在线日本| 狠狠ⅴ日韩v欧美v天堂| 亚洲日韩精品伊甸| 国产欧美在线观看精品一区污| 亚洲bt欧美bt精品| 天天综合网在线| 福利视频99| 在线视频精品一区| 亚洲欧美精品一中文字幕| 国产Av无码精品色午夜| 国产激情无码一区二区APP| 久久午夜夜伦鲁鲁片无码免费|