TVM VLOG打印

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

posted @ 2024-04-06 14:54  牛犁heart  阅读(94)  评论(0编辑  收藏  举报