TVM 提供了详细日志记录功能,允许提交跟踪级别的调试消息,而不会影响生产中 TVM 的二进制大小或运行时。你可以在你的代码中使用 VLOG 如下:

void Foo(const std::string& bar) {
VLOG(2) << "Running Foo(" << bar << ")";
// ...
}

在本例中,传递给 VLOG() 的整数 2 表示 verbosity 级别。级别越高,打印的日志越多。通常,TVM 级别从 0 到 2 不等,3 只用于极低级的核心运行时属性。VLOG 系统在启动时被配置为打印 0 到整数 N 之间的 VLOG 语句。 N 可以每个文件设置或全局设置。

VLOG 默认不打印或影响二进制大小或运行时间(当编译时使用适当的优化)。要启用 VLOGging,请执行以下操作:

  1. 在/build/config.cmake中,确保设置 set(USE_RELAY_DEBUG ON)。该标志用于启用 VLOGging。
  2. 启动 Python 传递** TVM_LOG_DEBUG=**,其中 > 是逗号分隔的级别赋值列表,格式为 <file_name>=;特别地:
  • 特殊的文件名 DEFAULT 设置所有文件的 VLOG 级别设置。
  • > 可以设置为 -1 来禁用 VLOG。
  • <file_name> 是相对于 TVM repo 中的 src/ 目录的 C++ 源文件的名称(例如 .cc,而不是 .h)。在指定文件路径时,您不需要提供 src/,但是如果您这样做了,VLOG 仍然会正确地解释该路径。

示例:

# enable VLOG(0), VLOG(1), VLOG(2) in all files.
$ TVM_LOG_DEBUG=DEFAULT=2 python3 -c 'import tvm' # enable VLOG(0), VLOG(1), VLOG(2) in all files, except not VLOG(2) in src/bar/baz.cc.
$ TVM_LOG_DEBUG=DEFAULT=2,bar/baz.cc=1 python3 -c 'import tvm' # enable VLOG(0), VLOG(1), VLOG(2) in all files, except not in src/foo/bar.cc.
$ TVM_LOG_DEBUG=DEFAULT=2,src/foo/bar.cc=-1 python3 -c 'import tvm'

另:可参考调试TVM:在Python与C++混合编程中启动调试博客,搭建TVM调试环境,亲试有效,对学习TVM很有帮助,给博主点赞

参考:https://daobook.github.io/tvm/docs/dev/how_to/debugging_tvm.html

TVM VLOG打印的更多相关文章

  1. tensorflow serving 打印调试log

    启动时添加环境变量 export TF_CPP_MIN_VLOG_LEVEL=1 ,这样可以打印VLOG(1)的log

  2. TVM部署预定义模型

    TVM部署预定义模型 本文通过深度学习框架量化的模型加载到TVM中.预量化的模型导入是在TVM中提供的量化支持之一. 本文演示如何加载和运行由PyTorch,MXNet和TFLite量化的模型.加载后 ...

  3. TVM Pass IR如何使用

    TVM Pass IR如何使用 随着Relay / tir中优化遍数的增加,执行并手动维护其依赖关系变得很棘手.引入了一个基础结构来管理优化过程,并应用于TVM堆栈中IR的不同层. Relay / t ...

  4. 如何使用TVM Pass红外线

    如何使用TVM Pass红外线 随着Relay / tir中优化遍数的增加,执行并手动维护其依赖关系变得很棘手.引入了一个基础结构来管理优化过程,将其应用于TVM堆栈中IR的不同层. Relay / ...

  5. TVM Reduction降低算力

    TVM Reduction降低算力 这是有关如何降低算力TVM的介绍材料.像sum / max / min这样的关联约简运算符是线性代数运算的典型构造块. 本文将演示如何降低TVM算力. from _ ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  7. C#中5步完成word文档打印的方法

    在日常工作中,我们可能常常需要打印各种文件资料,比如word文档.对于编程员,应用程序中文档的打印是一项非常重要的功能,也一直是一个非常复杂的工作.特别是提到Web打印,这的确会很棘手.一般如果要想选 ...

  8. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  9. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  10. Jqprint实现页面打印

    好些项目需要实现页面打印,特别是一些后台管理类系统,下面介绍一款轻量级的打印插件: 1.实现页面打印要引入jQuery和Jqprint.点击下载Jqprint插件 <script languag ...

随机推荐

  1. Javascript 显示当前滚动条滚动的百分比

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Oracle - [03] 存储过程

    一.什么是存储过程 存储过程是一种数据库对象,是一种存储在数据库中的可执行程序,是一些经过编写.编译而存在数据库中的SQL语句集. 二.创建存储过程的语法 create or replace proc ...

  3. mysql导出指定数据或部份数据的方法

    https://www.jb51.net/article/47525.htm 1.新建一个表,比如new-table,包含所要导出的字段的名称,比如a,b,c2.使用insert into new-t ...

  4. Qt Qss 设置QPushButton图标和背景

    文章目录 Qt QSS 设置 QPushButton的图标叠加背景 前言 解决方法 background-repeat.background-position 最终样式 Qt QSS 设置 QPush ...

  5. MySQL查询建表规范

    因为之前一直再查找一些比较好的数据库规范,以方便在开发时连接 MySQL 进行查询/建表的时候,能根据规范来执行,达到提高 查询速度 / 执行 SQL 的性能 和提升 MySQL 的整体性能, 这里主 ...

  6. Go语言遍历字符串——获取每一个字符串元素

    遍历字符串有下面两种写法. 遍历每一个ASCII字符 遍历 ASCII 字符使用 for 的数值循环进行遍历,直接取每个字符串的下标获取 ASCII 字符,如下面的例子所示. theme := &qu ...

  7. NumPy学习5

    今天学习了11, NumPy数组元素增删改查NumPy 数组元素的增删改查操作,主要有以下方法:数组元素操作方法函数名称 描述说明resize 返回指定形状的新数组.append 将元素值添加到数组的 ...

  8. ATT&CK实战系列(三)红日靶场3

    本次打靶练习是一个黑盒测试.没有密码,我们的目标是拿到域控制器的权限,并找到其中的重要文件. 网络拓扑 网卡设置 centos为出网机,第一次运行,需重新获取桥接模式网卡ip. 需重启网络服务serv ...

  9. 【JDBC第2章】获取数据库连接

    第2章:获取数据库连接 2.1 要素一:Driver接口实现类 2.1.1 Driver接口介绍 java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口.这个接口是提供给数据库厂 ...

  10. 【Linux】5.6 Shell打印输出指令

    Shell打印输出命令 1. echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出.命令格式:echo string 您可以使用echo实现更复杂的输出 ...