Hi all,
I wanted to discuss the idea of adding a new CI container: ci_cpu_asserts
. This container would behave just like ci_cpu
, except that both TVM and various libraries within the container would be compiled with additional runtime checks enabled. For example:
- TVM could be configured with
-DUSE_RELAY_DEBUG
- LLVM could be configured with
-DUSE_LLVM_ASSERTIONS
- we could consider other runtime checkers such as AddressSanitizer
In CI, we would build TVM and run tests/python/task_python_unittest.sh
against it. There are a couple of scenarios this would benefit:
-
PR 9842 proposes to add a concurrent-update check to tvm’s custom
Map
impl, but due to a limitation in LLVM, we cannot compile withNDEBUG
defined. Therefore, we would like to compile withUSE_RELAY_DEBUG
, but that could slow down integration tests in the CI. - Our LLVM backends are not really tested as well as they should be–LLVM assertions performs proper verification of the emitted IR. All 2 major changes I’ve made (link-params, AOT LLVM backend) have had problems only found with
-DLLVM_ENABLE_ASSERTIONS
(in some cases, these were minor; in others, they would cause functional correctness problems). - There is no home for this checking now, meaning that it’s controversial to add it since it slows down CI.
Perhaps we can discuss this at the TVM Community Meeting on Wednesday.
cc @kparzysz @dmitriy-arm @driazati
Andrew