資料介紹
作者:安平博,Xilinx高級(jí)工程師;來(lái)源:AI加速微信公眾號(hào)
TVM主要的編譯過(guò)程如下圖:

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)入
通過(guò)一個(gè)tensorflow的reception網(wǎng)絡(luò)來(lái)熟悉編譯過(guò)程,其它深度學(xué)習(xí)框架也具有類似過(guò)程。從TVM官網(wǎng)可以下載tensorflow的編譯程序
https://tvm.apache.org/docs/tutorials/frontend/from_tensorflow.html#sphx...。主要代碼如下:

模型的輸入是一個(gè)后綴為pb的文件,它是神經(jīng)網(wǎng)絡(luò)模型圖的protobuf格式存儲(chǔ)文件。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。這個(gè)函數(shù)在文件relay/frontend/tensorflow.py中。函數(shù)的調(diào)用關(guān)系為:
From_tensorflow -> GraphProto.from_tensorflow -> self._get_relay_func。
在get_relay_func中會(huì)遍歷每個(gè)tensorflow的節(jié)點(diǎn),轉(zhuǎn)換成tvm的IR表示。重點(diǎn)關(guān)注_backtrack_construct函數(shù)。

繼續(xù)深入和算子轉(zhuǎn)化有關(guān)的函數(shù)調(diào)用為:_convert_operator -> convert_map。Convert_map中對(duì)應(yīng)了可支持tensorflow算子到tvm算子的轉(zhuǎn)換關(guān)系。

完成了tensorflow到TVM算子轉(zhuǎn)化后,我們就得到了一個(gè)IRModule。我們可以利用tvm的可視化來(lái)打印出轉(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中通過(guò)字典獲得了C++中的相應(yīng)函數(shù)。

這里不明白如何通過(guò)self.mod[“build”]得到C++中函數(shù)的。_BuildModule()是C++中注冊(cè)到環(huán)境中的一個(gè)函數(shù)。在src/relay/backend/build_module.cc中,

TVM_REGISTER_GLOBAL是將C++函數(shù)注冊(cè)到一個(gè)全局map中。當(dāng)python加載編譯好的動(dòng)態(tài)庫(kù)時(shí),會(huì)自動(dòng)查詢map中靜態(tài)注冊(cè)的函數(shù),并添加到python模塊當(dāng)中。
真正build操作位于RelayBuildModule類中,在其中有一個(gè)GetFunction函數(shù),會(huì)通過(guò)名字查詢要使用的函數(shù),打包成PackedFunc返回,這個(gè)函數(shù)可能和self.mod[“build”]有關(guān)。PackedFunc是TVM中提供的python的一個(gè)接口,任何函數(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。這是編譯的主要代碼。其過(guò)程包括optimize,codgen。

Optimize就是執(zhí)行一些優(yōu)化passes,這些passes包括常數(shù)折疊,算符融合等。之后會(huì)調(diào)用graph_codegen->Codegen。Codegen中實(shí)現(xiàn)了內(nèi)存分配和硬件代碼生成。
- ARM代碼編譯與鏈接調(diào)試的工作流程梳理
- 使用TVM在android中進(jìn)行Mobilenet SSD部署
- 3568編譯環(huán)境搭建
- 基于C++編譯器的節(jié)點(diǎn)融合優(yōu)化方法 19次下載
- GCC編譯流程分析資料下載
- IAR EWARM快速入門的學(xué)習(xí)教程免費(fèi)下載 24次下載
- TVM學(xué)習(xí)(二):算符融合
- FPGA設(shè)計(jì)的全部流程詳細(xì)說(shuō)明 13次下載
- 如何學(xué)習(xí)c語(yǔ)言?C語(yǔ)言學(xué)習(xí)筆記資料免費(fèi)下載 66次下載
- 快速詳細(xì)了解MPLAB C18 C編譯器入門的學(xué)習(xí)資料
- 根據(jù)可視化編程的思想設(shè)計(jì)嵌入式學(xué)習(xí)系統(tǒng)的詳細(xì)資料概述 13次下載
- TMS320C6000最優(yōu)編譯器 4次下載
- STM32編譯開發(fā)環(huán)境及仿真調(diào)試篇-----野馬學(xué)習(xí)筆記 26次下載
- FPGA的學(xué)習(xí)流程 23次下載
- 編譯原理實(shí)驗(yàn)指導(dǎo)書
- SemiDrive X9 AI 開發(fā)環(huán)境搭建 421次閱讀
- 如何理解機(jī)器學(xué)習(xí)中的訓(xùn)練集、驗(yàn)證集和測(cè)試集 4522次閱讀
- TVM編譯器的整體架構(gòu)和基本方法 2506次閱讀
- Linux 下GCC的編譯 2679次閱讀
- 淺談hightec的編譯鏈接文件 4196次閱讀
- 如何從GCC源碼學(xué)編譯原理 3254次閱讀
- 編譯器中的圖論算法是什么 889次閱讀
- TVM學(xué)習(xí)之從relay到TOPI 1562次閱讀
- OHOS3.1版本的簡(jiǎn)明編譯流程 1644次閱讀
- 深度解析鴻蒙系統(tǒng)的編譯流程 1.1w次閱讀
- 標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)流程如何玩出新花樣 2827次閱讀
- 講述增量編譯方法,提高Vivado編譯效率 1w次閱讀
- 深度解析機(jī)器學(xué)習(xí)三類學(xué)習(xí)方法 1.4w次閱讀
- 將TVM用于移動(dòng)端常見的ARM GPU,提高移動(dòng)設(shè)備對(duì)深度學(xué)習(xí)的支持能力 1w次閱讀
- 誰(shuí)能縮短大容量FPGA的編譯時(shí)間?增量式編譯QIC! 5051次閱讀
下載排行
本周
- 1DC電源插座圖紙
- 0.67 MB | 3次下載 | 免費(fèi)
- 2AN-1267: 使用ADSP-CM408F ADC控制器的電機(jī)控制反饋采樣時(shí)序
- 1.41MB | 3次下載 | 免費(fèi)
- 3AN158 GD32VW553 Wi-Fi開發(fā)指南
- 1.51MB | 2次下載 | 免費(fèi)
- 4AN148 GD32VW553射頻硬件開發(fā)指南
- 2.07MB | 1次下載 | 免費(fèi)
- 5AN111-LTC3219用戶指南
- 84.32KB | 次下載 | 免費(fèi)
- 6AN153-用于電源系統(tǒng)管理的Linduino
- 1.38MB | 次下載 | 免費(fèi)
- 7AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下載 | 免費(fèi)
- 8SM2018E 支持可控硅調(diào)光線性恒流控制芯片
- 402.24 KB | 次下載 | 免費(fèi)
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 450次下載 | 免費(fèi)
- 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 138次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 130次下載 | 免費(fèi)
- 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 5美的電磁爐維修手冊(cè)大全
- 1.56 MB | 24次下載 | 5 積分
- 6如何正確測(cè)試電源的紋波
- 0.36 MB | 18次下載 | 免費(fèi)
- 7感應(yīng)筆電路圖
- 0.06 MB | 10次下載 | 免費(fèi)
- 8萬(wàn)用表UT58A原理圖
- 0.09 MB | 9次下載 | 5 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
電子發(fā)燒友App






創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論