本發(fā)明屬于程序編譯,尤其是一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法。
背景技術(shù):
1、現(xiàn)有的不同cpu架構(gòu)的應(yīng)用程序間一直一般有以下幾種方法:
2、1、重新編譯:
3、直接編譯:如果源代碼可用,最直接的方法是在目標架構(gòu)上重新編譯源代碼。這通常涉及到使用適合目標架構(gòu)的編譯器和可能的庫??缙脚_編譯工具:如cmake、gnuautotools等,這些工具可以幫助自動化編譯過程,使其適應(yīng)不同的架構(gòu)。
4、2、二進制翻譯:
5、使用二進制翻譯器(如qemu)在目標架構(gòu)上模擬源架構(gòu)的執(zhí)行環(huán)境。這種方法不需要源代碼,但可能會引入性能開銷。靜態(tài)二進制翻譯器可以將源架構(gòu)的二進制代碼轉(zhuǎn)換為目標架構(gòu)的代碼,但這種方法可能無法完全保留原始程序的性能特性。
6、3、源代碼轉(zhuǎn)換工具:
7、某些工具(如clang的cross-translationutility,ctu)可以分析源代碼并生成針對目標架構(gòu)的等效代碼。這種方法需要源代碼。
8、上述現(xiàn)有技術(shù)存在的不足為:在源代碼的基礎(chǔ)上進行修改代碼或者編譯選項,不同架構(gòu)處理方式不統(tǒng)一,效率低下。同時通過qemu等模擬器的方式性能低下不能用在生產(chǎn)環(huán)境。對軟件技術(shù)能力要求比較高,門檻高,普通人不會,阻礙生態(tài)發(fā)展。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提出一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,本發(fā)明訓練出來的模型小,能夠cpu上運行,節(jié)省成本。并且本發(fā)明通過人工智能直接轉(zhuǎn)換針對不同cpu的二進制文件,操作簡單,降低底層庫以及應(yīng)用多cpu適配的成本和門檻,大幅提升不同應(yīng)用的國產(chǎn)化適配的效率,促進國產(chǎn)化信創(chuàng)產(chǎn)品的生態(tài)鏈發(fā)展。
2、本發(fā)明解決其技術(shù)問題是采取以下技術(shù)方案實現(xiàn)的:
3、一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,包括以下步驟:
4、步驟1、獲取數(shù)據(jù);
5、步驟2、對步驟1獲取的數(shù)據(jù)進行裝載,并進行二進制語義解析;
6、步驟3、根據(jù)步驟2裝載的數(shù)據(jù)構(gòu)建語料庫,并利用語料庫訓練glove預(yù)訓練模型進行特征提?。?/p>
7、步驟4、使用步驟3訓練的glove預(yù)訓練模型提取特征進行特征嵌入,并構(gòu)建bincode-transformer模型;
8、步驟5、訓練bincode-transformer模型得到encoder模型和decoder模型;
9、步驟6、通過訓練的bincode-transformer模型進行嵌入向量語義還原;
10、步驟7、根據(jù)步驟6中嵌入向量語義還原結(jié)果生成文件。
11、而且,所述步驟1中獲取的數(shù)據(jù)包括:指令集規(guī)范、abi規(guī)范、elf文件和輔助信息,其中指令集規(guī)范、abi規(guī)范、elf文件為x86二進制文件,輔助信息為多樣化的arm文件,包括應(yīng)用程序、庫和操作系統(tǒng)二進制文件。
12、而且,所述步驟2的具體實現(xiàn)方法為:將步驟1中獲取的數(shù)據(jù)進行讀取到內(nèi)存中。
13、而且,所述步驟3包括以下步驟:
14、步驟3.1、對步驟2裝載的數(shù)據(jù)進行處理;
15、利用libelf庫讀取并解析elf文件,進行類似分詞的動作:分別讀入elf不同的section,提取操作碼和操作數(shù),以及其他符號表二進制文件相關(guān)信息,整理成用作訓練的單獨函數(shù)調(diào)用以及代碼段構(gòu)建語料庫;
16、步驟3.2、對步驟2裝載的數(shù)據(jù)進行編碼;
17、利用指令集規(guī)范以及abi規(guī)范建立二進制和指令集的映射,并且構(gòu)建glove的共現(xiàn)矩陣;
18、步驟3.3、對步驟3.2中編碼數(shù)據(jù)進行語義訓練;
19、對構(gòu)建glove的共現(xiàn)矩陣進行分解,學習到每個詞的詞向量,形成glove預(yù)訓練模型;glove模型保存反應(yīng)二進制文件語義的詞嵌入向量;
20、步驟3.4、根據(jù)數(shù)據(jù)特征向量生成,保存glove模型為文件。
21、而且,所述步驟4中構(gòu)建的bincode-transformer模型結(jié)構(gòu)和傳統(tǒng)的transformer結(jié)構(gòu)相同,但根據(jù)elf和pe文件格式的特點,采用稀疏transformer的結(jié)構(gòu),采用應(yīng)用稀疏注意力來減少自注意力的二次時間和空間復(fù)雜度為線性,并引入三個類型的注意力:窗口注意力、橋接注意力和全局注意力。
22、而且,所述步驟5中encoder模型用于讀入源cpu架構(gòu)的elf文件信息以及輔助信息,decoder模型用于生成目標cpu架構(gòu)的應(yīng)用程序,實現(xiàn)端到端的跨cpu架構(gòu)的基于二進制的應(yīng)用程序轉(zhuǎn)換。
23、而且,所述步驟6的具體實現(xiàn)方法為:通過線性變換和softmax函數(shù)將decode模型產(chǎn)生的詞向量還原成二進制指令集空間的語義向量。
24、而且,所述步驟7的具體實現(xiàn)方法為:將得到的二進制指令集空間的語義向量結(jié)合二進制文件格式校驗生成具體的二進制文件。
25、本發(fā)明的優(yōu)點和積極效果是:
26、本發(fā)明通過獲取數(shù)據(jù);對數(shù)據(jù)進行裝載和特征提取;同時根據(jù)提取的特征進行特征嵌入,并構(gòu)建bincode-transformer模型并進行訓練;通過訓練的bincode-transformer模型進行嵌入向量語義還原;根據(jù)嵌入向量語義還原結(jié)果生成文件。由于二進制文件elf或者pe等結(jié)構(gòu)的語義表達空間小,基本形式為操作碼和操作數(shù),以及文件結(jié)構(gòu)的關(guān)鍵字,使得本發(fā)明訓練出的模型小(和自然語言復(fù)雜度相比空間要小很多),能夠在cpu上運行,節(jié)省成本。同時本發(fā)明通過人工智能直接轉(zhuǎn)換針對不同cpu的二進制文件,操作簡單,降低底層庫以及應(yīng)用多cpu適配的成本和門檻,大幅提升不同應(yīng)用的國產(chǎn)化適配的效率,促進國產(chǎn)化信創(chuàng)產(chǎn)品的生態(tài)鏈發(fā)展。
1.一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:包括以下步驟:
2.根據(jù)權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟1中獲取的數(shù)據(jù)包括:指令集規(guī)范、abi規(guī)范、elf文件和輔助信息,其中指令集規(guī)范、abi規(guī)范、elf文件為x86二進制文件,輔助信息為多樣化的arm文件,包括應(yīng)用程序、庫和操作系統(tǒng)二進制文件。
3.根據(jù)權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟2的具體實現(xiàn)方法為:將步驟1中獲取的數(shù)據(jù)進行讀取到內(nèi)存中。
4.權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟3包括以下步驟:
5.根據(jù)權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟4中構(gòu)建的bincode-transformer模型結(jié)構(gòu)和傳統(tǒng)的transformer結(jié)構(gòu)相同,但根據(jù)elf和pe文件格式的特點,采用稀疏transformer的結(jié)構(gòu),采用應(yīng)用稀疏注意力來減少自注意力的二次時間和空間復(fù)雜度為線性,并引入三個類型的注意力:窗口注意力、橋接注意力和全局注意力。
6.根據(jù)權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟5中encoder模型用于讀入源cpu架構(gòu)的elf文件信息以及輔助信息,decoder模型用于生成目標cpu架構(gòu)的應(yīng)用程序,實現(xiàn)端到端的跨cpu架構(gòu)的基于二進制的應(yīng)用程序轉(zhuǎn)換。
7.根據(jù)權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟6的具體實現(xiàn)方法為:通過線性變換和softmax函數(shù)將decode模型產(chǎn)生的詞向量還原成二進制指令集空間的語義向量。
8.根據(jù)權(quán)利要求1所述的一種端到端跨cpu架構(gòu)的應(yīng)用程序適配方法,其特征在于:所述步驟7的具體實現(xiàn)方法為:將得到的二進制指令集空間的語義向量結(jié)合二進制文件格式校驗生成具體的二進制文件。