基于LLVM編譯器的節(jié)點(diǎn)融合優(yōu)化方法
【文章頁(yè)數(shù)】:7 頁(yè)
【部分圖文】:
圖1LLVM結(jié)構(gòu)
LLVM是以面向?qū)ο缶幊陶Z(yǔ)言C++編寫的構(gòu)架編譯器的框架系統(tǒng),是一種支持多后端的交叉編譯器,可對(duì)程序的編譯時(shí)間、鏈接時(shí)間、運(yùn)行時(shí)間和空閑時(shí)間進(jìn)行優(yōu)化[7]。LLVM編譯器基于傳統(tǒng)的三段式設(shè)計(jì),通過(guò)翻譯成通用的中間表示語(yǔ)言作為中端優(yōu)化器的輸入,用于支持不同的前端語(yǔ)言和架構(gòu)[8],其....
圖2LLVMIR存在階段
LLVMIR屬于高級(jí)語(yǔ)言前端的輸出,將作為中間代碼優(yōu)化器的輸入。中間表示應(yīng)該具有兩個(gè)重要的性質(zhì):1)易于產(chǎn)生;2)易于翻譯成目標(biāo)平臺(tái)代碼[9]。易于產(chǎn)生可以保證不同的高級(jí)語(yǔ)言源程序易于轉(zhuǎn)換為中間表示,也可以與其他中間表示相互轉(zhuǎn)換。易于翻譯成目標(biāo)平臺(tái)代碼表明中間表示應(yīng)具有高度抽象....
圖3LLVMIR降級(jí)流程
DAG是一種重要的數(shù)據(jù)結(jié)構(gòu),指的是一個(gè)無(wú)回路的有向圖,在尋求最短路徑、數(shù)據(jù)壓縮等多種算法中均有使用。LLVM在對(duì)中間表示進(jìn)行降級(jí)的過(guò)程中,會(huì)將LLVMIR轉(zhuǎn)換成DAG的形式,然后對(duì)DAG圖進(jìn)行降級(jí)操作,其處理流程如圖3所示。從圖3中可以看到,在初始階段LLVMIR是平臺(tái)無(wú)關(guān)的....
圖4節(jié)點(diǎn)融合
節(jié)點(diǎn)融合指將多個(gè)節(jié)點(diǎn)融合為一個(gè)高效節(jié)點(diǎn),節(jié)點(diǎn)融合優(yōu)化方法在許多編譯器中均有應(yīng)用。比如,加速線性代數(shù)編譯器(AcceleratedLinearAlgebra,XLA)利用節(jié)點(diǎn)融合優(yōu)化將計(jì)算圖中的多個(gè)算子融合為一個(gè)高效算子,以提高執(zhí)行速度,改善內(nèi)存使用,減少對(duì)自定義操作的依賴。節(jié)....
本文編號(hào):3896511
本文鏈接:http://www.sikaile.net/kejilunwen/jisuanjikexuelunwen/3896511.html