电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>可编程逻辑>TVM学习(三)编译流程

TVM学习(三)编译流程

2021-01-26 | pdf | 443.57KB | 次下载 | 3积分

资料介绍

作者:安平博,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中实现了内存分配和硬件代码生成。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1DC电源插座图纸
  2. 0.67 MB   |  3次下载  |  免费
  3. 2AN-1267: 使用ADSP-CM408F ADC控制器的电机控制反馈采样时序
  4. 1.41MB   |  3次下载  |  免费
  5. 3AN158 GD32VW553 Wi-Fi开发指南
  6. 1.51MB   |  2次下载  |  免费
  7. 4AN148 GD32VW553射频硬件开发指南
  8. 2.07MB   |  1次下载  |  免费
  9. 5AN111-LTC3219用户指南
  10. 84.32KB   |  次下载  |  免费
  11. 6AN153-用于电源系统管理的Linduino
  12. 1.38MB   |  次下载  |  免费
  13. 7AN-283: Σ-Δ型ADC和DAC[中文版]
  14. 677.86KB   |  次下载  |  免费
  15. 8SM2018E 支持可控硅调光线性恒流控制芯片
  16. 402.24 KB  |  次下载  |  免费

本月

  1. 1ADI高性能电源管理解决方案
  2. 2.43 MB   |  450次下载  |  免费
  3. 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
  4. 5.67 MB   |  138次下载  |  1 积分
  5. 3基于STM32单片机智能手环心率计步器体温显示设计
  6. 0.10 MB   |  130次下载  |  免费
  7. 4使用单片机实现七人表决器的程序和仿真资料免费下载
  8. 2.96 MB   |  44次下载  |  免费
  9. 5美的电磁炉维修手册大全
  10. 1.56 MB   |  24次下载  |  5 积分
  11. 6如何正确测试电源的纹波
  12. 0.36 MB   |  18次下载  |  免费
  13. 7感应笔电路图
  14. 0.06 MB   |  10次下载  |  免费
  15. 8万用表UT58A原理图
  16. 0.09 MB   |  9次下载  |  5 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935121次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420062次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233088次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183335次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73810次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65988次下载  |  10 积分