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