資料介紹
作者:安平博,Xilinx高級工程師;來源:AI加速微信公眾號
TVM主要的編譯過程如下圖:
Import:將tensorflow,onnx,pytorch等構(gòu)建的深度學(xué)習(xí)模型導(dǎo)入,轉(zhuǎn)化成TVM的中間層表示IR。
Lower:將高層IR表示轉(zhuǎn)化成低階TIR表示。
Codegen:內(nèi)存分配和硬件可執(zhí)行程序生成。
圖導(dǎo)入
通過一個tensorflow的reception網(wǎng)絡(luò)來熟悉編譯過程,其它深度學(xué)習(xí)框架也具有類似過程。從TVM官網(wǎng)可以下載tensorflow的編譯程序
https://tvm.apache.org/docs/tutorials/frontend/from_tensorflow.html#sphx...。主要代碼如下:
模型的輸入是一個后綴為pb的文件,它是神經(jīng)網(wǎng)絡(luò)模型圖的protobuf格式存儲文件。Pb是二進(jìn)制形式,pbtxt是文本形式。Import_graph_def函數(shù)是導(dǎo)入pb,graph是tensorflow的圖結(jié)構(gòu)。
From_tensorflow是將tensorflow的圖結(jié)構(gòu)轉(zhuǎn)化成TVM的IR。這個函數(shù)在文件relay/frontend/tensorflow.py中。函數(shù)的調(diào)用關(guān)系為:
From_tensorflow -> GraphProto.from_tensorflow -> self._get_relay_func。
在get_relay_func中會遍歷每個tensorflow的節(jié)點,轉(zhuǎn)換成tvm的IR表示。重點關(guān)注_backtrack_construct函數(shù)。
繼續(xù)深入和算子轉(zhuǎn)化有關(guān)的函數(shù)調(diào)用為:_convert_operator -> convert_map。Convert_map中對應(yīng)了可支持tensorflow算子到tvm算子的轉(zhuǎn)換關(guān)系。
完成了tensorflow到TVM算子轉(zhuǎn)化后,我們就得到了一個IRModule。我們可以利用tvm的可視化來打印出轉(zhuǎn)化后的圖:
Main是主函數(shù)入口,在TVM中以函數(shù)形式反應(yīng)了tensorflow的圖結(jié)構(gòu)。函數(shù)的調(diào)用關(guān)系反應(yīng)了圖的依賴關(guān)系。
編譯
Python中主要代碼位于relay/build_module.py文件中,調(diào)用關(guān)系為build -> BuildModule -> build。在build中通過字典獲得了C++中的相應(yīng)函數(shù)。
這里不明白如何通過self.mod[“build”]得到C++中函數(shù)的。_BuildModule()是C++中注冊到環(huán)境中的一個函數(shù)。在src/relay/backend/build_module.cc中,
TVM_REGISTER_GLOBAL是將C++函數(shù)注冊到一個全局map中。當(dāng)python加載編譯好的動態(tài)庫時,會自動查詢map中靜態(tài)注冊的函數(shù),并添加到python模塊當(dāng)中。
真正build操作位于RelayBuildModule類中,在其中有一個GetFunction函數(shù),會通過名字查詢要使用的函數(shù),打包成PackedFunc返回,這個函數(shù)可能和self.mod[“build”]有關(guān)。PackedFunc是TVM中提供的python的一個接口,任何函數(shù)都可以封裝成PackedFunc,并給python調(diào)用。更詳細(xì)介紹可看:https://hjchen2.github.io/2020/01/10/TVM-PackedFunc%E5%AE%9E%E7%8E%B0%E6...
繼續(xù)深入代碼,Build -> BuildRelay。這是編譯的主要代碼。其過程包括optimize,codgen。
Optimize就是執(zhí)行一些優(yōu)化passes,這些passes包括常數(shù)折疊,算符融合等。之后會調(diào)用graph_codegen->Codegen。Codegen中實現(xiàn)了內(nèi)存分配和硬件代碼生成。
- ARM代碼編譯與鏈接調(diào)試的工作流程梳理
- 使用TVM在android中進(jìn)行Mobilenet SSD部署
- 3568編譯環(huán)境搭建
- 基于C++編譯器的節(jié)點融合優(yōu)化方法 19次下載
- GCC編譯流程分析資料下載
- IAR EWARM快速入門的學(xué)習(xí)教程免費下載 21次下載
- TVM學(xué)習(xí)(二):算符融合
- FPGA設(shè)計的全部流程詳細(xì)說明 13次下載
- 如何學(xué)習(xí)c語言?C語言學(xué)習(xí)筆記資料免費下載 65次下載
- 快速詳細(xì)了解MPLAB C18 C編譯器入門的學(xué)習(xí)資料
- 根據(jù)可視化編程的思想設(shè)計嵌入式學(xué)習(xí)系統(tǒng)的詳細(xì)資料概述 13次下載
- TMS320C6000最優(yōu)編譯器 4次下載
- STM32編譯開發(fā)環(huán)境及仿真調(diào)試篇-----野馬學(xué)習(xí)筆記 26次下載
- FPGA的學(xué)習(xí)流程 23次下載
- 編譯原理實驗指導(dǎo)書
- SemiDrive X9 AI 開發(fā)環(huán)境搭建 175次閱讀
- 如何理解機(jī)器學(xué)習(xí)中的訓(xùn)練集、驗證集和測試集 1415次閱讀
- TVM編譯器的整體架構(gòu)和基本方法 1825次閱讀
- Linux 下GCC的編譯 2031次閱讀
- 淺談hightec的編譯鏈接文件 3532次閱讀
- 如何從GCC源碼學(xué)編譯原理 2487次閱讀
- 編譯器中的圖論算法是什么 727次閱讀
- TVM學(xué)習(xí)之從relay到TOPI 1368次閱讀
- OHOS3.1版本的簡明編譯流程 1441次閱讀
- 深度解析鴻蒙系統(tǒng)的編譯流程 1w次閱讀
- 標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)流程如何玩出新花樣 2706次閱讀
- 講述增量編譯方法,提高Vivado編譯效率 9825次閱讀
- 深度解析機(jī)器學(xué)習(xí)三類學(xué)習(xí)方法 1.4w次閱讀
- 將TVM用于移動端常見的ARM GPU,提高移動設(shè)備對深度學(xué)習(xí)的支持能力 1w次閱讀
- 誰能縮短大容量FPGA的編譯時間?增量式編譯QIC! 4802次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1491次下載 | 免費
- 2單片機(jī)典型實例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計
- 0.23 MB | 4次下載 | 免費
- 8基于AT89C2051/4051單片機(jī)編程器的實驗
- 0.11 MB | 4次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關(guān)電源設(shè)計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多