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