relay.build调用关系
在用TVM优化过程中,常见demo如下图:

relay.build背后的调用机制梳理如下:
python中的build函数实现如下,此方法实际调用了BuildModule类的build方法,

BuildModule获取的C++函数build方法,此处涉及混合编程:

_build_module._BuildModule() 来自于这句注册:
tvm._ffi._init_api(“relay.build_module”, name)
self.mod[“build”]调用RelayBuildModule的GetFunction方法,其中name为“build”:

RelayBuildModule类的build方法如下,主要包含两部分功能,Optimize和codegen:

Optimize函数有很多优化策略,

在此处执行,实际执行的是SequentialNode的operator方法:

Sequential::Sequential构造函数如下,其中name为声明带默认参数:

Sequential的operator->()方法调用的是SequentialNode的operator()方法:

codegen 代码逻辑如下:

GetPackedFun函数调用的是提前注册的函数CreateGraphCodegenMod(),
返回GraphRuntimeCodegenModule类型的对象

graph_codegen_ 指针指向的是GraphRuntimeCodegenModule类的对象,Init方法,
Codegen方法,GetIRModule都来自于注册的GraphRuntimeCodegenModule 实例,

Codegen 调用GraphRuntimeCodegenModule的codegen_,是GraphRuntimeCodegen
的实例指针,调用的codegen代码如下

参考链接:
https://www.pianshen.com/article/24811852648/

relay.build调用关系相关推荐

  1. go-callvis:Go调用关系图(call graph)

    go-callvis:Go调用关系图(call graph) 一.简介 用过SourceInsight.understand等软件的同学一定知道call graph的功能,转go开发后我用的是vsco ...

  2. 蓝牙之十-avrcp代码调用关系

    原址:http://blog.csdn.net/shichaog/article/details/52182987 由于需要实现avrcp的controller的get attr功能,所以看了下and ...

  3. 【Vue】Vue项目开发目录结构和引用调用关系

    main.js ->找到index.html中的挂载位置->找到app.vue中的挂载内容 原文:https://www.cnblogs.com/chenleideblog/p/10432 ...

  4. 自动分析源代码,创建函数地图展示调用关系

    极客讨论器现在可以自动分析 C/C++/Java/C#/Python/Objective-C 语言源代码并生成表示调用关系的函数地图,并使用"旅游"模式,在函数地图中浏览代码.如图 ...

  5. 框架、文档、视图类之间的调用关系

    在多文档MFC应用程序执行过程中,创建了多于一个的文档类.视图类.子框架类对象和一个主框架类.应用类对象.这些对象之间是通过一定的方式联系在一起的,在应用程序设计中,时常需要通过这些对象之间的关系来实 ...

  6. IDEA的查询引用、调用关系图的功能

    Eclipse的"Call Hierarchy"可以查看一个Java方法或类成员变量的调用树(caller和callee两个方向),非常方便.  在IDEA中类似功能被划分到了三个 ...

  7. c语言的那些小秘密pdf下载,C语言的那些小秘密之函数的调用关系.pdf

    C语言的那些小秘密之函数的调用关系.pdf C 语言的那些小秘密之函数的调用关系语言的那些小秘密之函数的调用关系 显示函数的调用关系是调试器的必备功能 如果我们在程序的运行中出现了崩溃的情 况 通过函 ...

  8. c语言课设报告函数的比较,c语言课程设计设计报告函数的调用关系图及主要算法.doc...

    程序一:简单数学问题 一.程序功能简介: 实现多个简单数学问题的求解. 二.题目分析 完成与菜单项对应的功能设计 void FindNum( ); /*用穷举法找到被咬掉的数字*/ void Find ...

  9. LevelDB PUT/GET操作调用关系

    LevelDB的Put操作,是一个顺序写log,然后插入memtable(数据结构是skiplist)的过程,调用关系如下图所示: LevelDB的Get操作,会优先查找memtable,如果memt ...

最新文章

  1. 计算机书籍-Apress机器学习和预测分析
  2. 字典推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...
  3. python新手项目-推荐 13 个 Python 新手练级项目
  4. 安装VMWare时 the system administrator has set policies to prevent this installation
  5. 【Paper】2016_Cooperative UAV-UGV modeled by Petri Net Plans specification
  6. OpenCV中BriefDescriptorExtractor
  7. JavaScript 表单编程
  8. 只导表前10条数据_【205期】面试官:数据量很大的情况下,对于分页查询你有什么优化方案吗?...
  9. transferto的流这么关闭_Java 9中InputStream的transferTo()方法的重要性?
  10. 台大李宏毅Machine Learning 2017Fall学习笔记 (12)Why Deep?
  11. 跨线程调用UpdateData函数导致Asset
  12. iOS底层探索之多线程(九)—GCD源码分析(栅栏函数)
  13. OC基础(一)——从C开始初步了解OC
  14. atitit.标准时间格式 互相转换 秒数 最佳实践
  15. 阿里云弹性云桌面、传统PC和虚拟桌面VDI区别对比
  16. 计算机桌面背景设成白色,电脑桌面背景变白色的了怎么处理啊?
  17. PIC16F877A第一个程序
  18. win10音频服务器未修复,win10十月更新音频输出设备未安装错误修复教程
  19. 【强化学习】悬崖寻路:Sarsa和Q-Learning
  20. Mac微信多开与微信防撤回分享

热门文章

  1. RPC 笔记(08)— socket 通信(多进程多线程服务器)
  2. Go 学习笔记(72)— Go 第三方库之 pkg/errors 带堆栈的错误处理
  3. Redis 笔记(02)— keys 键相关命令(查询数据库key数量、判断key是否存在、指定key过期时间、查看key类型、查看key剩余秒数、选择数据库、删除key、删除数据库)
  4. 【VB】学生信息管理系统4——数据库的发展
  5. 条件随机场(CRF) - 1 - 简介
  6. Java中类、常量、变量、方法名等命名规则
  7. LeetCode简单题之两数之和
  8. TensorFlow神经网络集成方案
  9. 大数据调度平台Airflow(一):什么是Airflow
  10. 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)