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,请执行以下操作:
- 在/build/config.cmake中,确保设置 set(USE_RELAY_DEBUG ON)。该标志用于启用 VLOGging。
- 启动 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