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