资料介绍
作者:安平博,Xilinx高级工程师;来源:AI加速微信公众号
TVM主要的编译过程如下图:
![](https://file.elecfans.com/web1/M00/DB/A2/o4YBAGAJzTeAf2cHAAD78tgM_cw224.png)
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...。主要代码如下:
![](https://file.elecfans.com/web1/M00/DC/21/pIYBAGAJzXaALCrpAAFWLx2Lb50986.png)
模型的输入是一个后缀为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函数。
![](https://file.elecfans.com/web1/M00/DB/A2/o4YBAGAJzbSAK8pmAAB-23TNiAc840.png)
继续深入和算子转化有关的函数调用为:_convert_operator -> convert_map。Convert_map中对应了可支持tensorflow算子到tvm算子的转换关系。
![](https://file.elecfans.com/web1/M00/DB/A2/o4YBAGAJzf2AUd9qAAFas--JyZk610.png)
完成了tensorflow到TVM算子转化后,我们就得到了一个IRModule。我们可以利用tvm的可视化来打印出转化后的图:
![](https://file.elecfans.com/web1/M00/DC/21/pIYBAGAJzjyAKM_nAADUALHuUtg377.png)
Main是主函数入口,在TVM中以函数形式反应了tensorflow的图结构。函数的调用关系反应了图的依赖关系。
编译
Python中主要代码位于relay/build_module.py文件中,调用关系为build -> BuildModule -> build。在build中通过字典获得了C++中的相应函数。
![](https://file.elecfans.com/web1/M00/DC/21/pIYBAGAJznqAYLYUAABvCn74q78151.png)
这里不明白如何通过self.mod[“build”]得到C++中函数的。_BuildModule()是C++中注册到环境中的一个函数。在src/relay/backend/build_module.cc中,
![](https://file.elecfans.com/web1/M00/DC/21/pIYBAGAJzriAKFTzAACbMqgRaW0007.png)
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。
![](https://file.elecfans.com/web1/M00/DB/A2/o4YBAGAJzvmAY7f2AAE5GDTVjbI659.png)
Optimize就是执行一些优化passes,这些passes包括常数折叠,算符融合等。之后会调用graph_codegen->Codegen。Codegen中实现了内存分配和硬件代码生成。
- ARM代码编译与链接调试的工作流程梳理
- 使用TVM在android中进行Mobilenet SSD部署
- 3568编译环境搭建
- 基于C++编译器的节点融合优化方法 19次下载
- GCC编译流程分析资料下载
- IAR EWARM快速入门的学习教程免费下载 24次下载
- TVM学习(二):算符融合
- FPGA设计的全部流程详细说明 13次下载
- 如何学习c语言?C语言学习笔记资料免费下载 66次下载
- 快速详细了解MPLAB C18 C编译器入门的学习资料
- 根据可视化编程的思想设计嵌入式学习系统的详细资料概述 13次下载
- TMS320C6000最优编译器 4次下载
- STM32编译开发环境及仿真调试篇-----野马学习笔记 26次下载
- FPGA的学习流程 23次下载
- 编译原理实验指导书
- SemiDrive X9 AI 开发环境搭建 421次阅读
- 如何理解机器学习中的训练集、验证集和测试集 4522次阅读
- TVM编译器的整体架构和基本方法 2506次阅读
- Linux 下GCC的编译 2679次阅读
- 浅谈hightec的编译链接文件 4196次阅读
- 如何从GCC源码学编译原理 3254次阅读
- 编译器中的图论算法是什么 889次阅读
- TVM学习之从relay到TOPI 1562次阅读
- OHOS3.1版本的简明编译流程 1644次阅读
- 深度解析鸿蒙系统的编译流程 1.1w次阅读
- 标准的机器学习流程如何玩出新花样 2827次阅读
- 讲述增量编译方法,提高Vivado编译效率 1w次阅读
- 深度解析机器学习三类学习方法 1.4w次阅读
- 将TVM用于移动端常见的ARM GPU,提高移动设备对深度学习的支持能力 1w次阅读
- 谁能缩短大容量FPGA的编译时间?增量式编译QIC! 5051次阅读
下载排行
本周
- 1DC电源插座图纸
- 0.67 MB | 3次下载 | 免费
- 2AN-1267: 使用ADSP-CM408F ADC控制器的电机控制反馈采样时序
- 1.41MB | 3次下载 | 免费
- 3AN158 GD32VW553 Wi-Fi开发指南
- 1.51MB | 2次下载 | 免费
- 4AN148 GD32VW553射频硬件开发指南
- 2.07MB | 1次下载 | 免费
- 5AN111-LTC3219用户指南
- 84.32KB | 次下载 | 免费
- 6AN153-用于电源系统管理的Linduino
- 1.38MB | 次下载 | 免费
- 7AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下载 | 免费
- 8SM2018E 支持可控硅调光线性恒流控制芯片
- 402.24 KB | 次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 450次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 138次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 130次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 5美的电磁炉维修手册大全
- 1.56 MB | 24次下载 | 5 积分
- 6如何正确测试电源的纹波
- 0.36 MB | 18次下载 | 免费
- 7感应笔电路图
- 0.06 MB | 10次下载 | 免费
- 8万用表UT58A原理图
- 0.09 MB | 9次下载 | 5 积分
总榜
- 1matlab软件下载入口
- 未知 | 935121次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233088次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73810次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65988次下载 | 10 积分
评论