ganler opened a new issue #9813:
URL: https://github.com/apache/tvm/issues/9813


   A simple graph (conv2d -> argmin) cannot pass compilation:
   
   ```
   def @main(%data: Tensor[(1, 3, 48, 48), float32], %weight: Tensor[(1, 3, 1, 
1), float32]) -> Tensor[(1, 2, 2), int32] {
     %0 = nn.conv2d(%data, %weight, strides=[47, 47], padding=[0, 0, 0, 0], 
channels=1, kernel_size=[1, 1]) /* ty=Tensor[(1, 1, 2, 2), float32] */;
     argmin(%0, axis=[1]) /* ty=Tensor[(1, 2, 2), int32] */
   }
   ```
   
   ### Expected behaviour
   
   Pass compilation as it can produce results in ONNXRuntime and PyTorch.
   
   ### Actual behaviour
   
   
   
   <details><summary><b>Compilation failure: </b> <i>[click to 
expand]</i></summary>
   <div>
   
   ```python
   """
   Traceback (most recent call last):
     File "xxx/backend_executor.py", line 269, in <module>
       run_backend_same_proc(args.model, args.input, bknd,
     File "xxx/backend_executor.py", line 84, in run_backend_same_proc
       outputs = backend.predict(model_path, inputs)
     File "/home/ganler/Documents/xxx/xxx/backends/tvm_graph.py", line 75, in 
predict
       self.load_model(model)
     File "/home/ganler/Documents/xxx/xxx/backends/tvm_graph.py", line 69, in 
load_model
       executor = relay.build_module.create_executor(
     File 
"/home/ganler/Documents/tvm-debug/python/tvm/relay/backend/interpreter.py", 
line 171, in evaluate
       return self._make_executor()
     File "/home/ganler/Documents/tvm-debug/python/tvm/relay/build_module.py", 
line 591, in _make_executor
       mod = build(self.mod, target=self.target)
     File "/home/ganler/Documents/tvm-debug/python/tvm/relay/build_module.py", 
line 449, in build
       graph_json, runtime_mod, params = bld_mod.build(
     File "/home/ganler/Documents/tvm-debug/python/tvm/relay/build_module.py", 
line 189, in build
       self._build(mod, target, target_host, executor, runtime, mod_name)
     File 
"/home/ganler/Documents/tvm-debug/python/tvm/_ffi/_ctypes/packed_func.py", line 
237, in __call__
       raise get_last_ffi_error()
   tvm._ffi.base.TVMError: Traceback (most recent call last):
     88: TVMFuncCall
           at /home/ganler/Documents/tvm-debug/src/runtime/c_runtime_api.cc:475
     87: tvm::runtime::PackedFunc::CallPacked(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1151
     86: std::function<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:560
     85: std::_Function_handler<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*), 
tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)#3}>::_M_invoke(std::_Any_data const&, 
tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:291
     84: std::enable_if<__and_<std::is_void<void>, 
std::__is_invocable<tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#3}&, 
tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*> >::value, void>::type 
std::__invoke_r<void, 
tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#3}&, 
tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#3}&, tvm::ru
 ntime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:154
     83: void std::__invoke_impl<void, 
tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#3}&, 
tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*>(std::__invoke_other, 
tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)#3}&, 
tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:61
     82: 
tvm::relay::backend::RelayBuildModule::GetFunction(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
tvm::runtime::ObjectPtr<tvm::runtime::Object> 
const&)::{lambda(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)#3}::operator()(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const
           at 
/home/ganler/Documents/tvm-debug/src/relay/backend/build_module.cc:190
     81: tvm::relay::backend::RelayBuildModule::Build(tvm::IRModule, 
tvm::runtime::Map<tvm::Integer, tvm::Target, void, void> const&, tvm::Target 
const&, tvm::relay::Executor const&, tvm::relay::Runtime const&, 
tvm::runtime::String)
           at 
/home/ganler/Documents/tvm-debug/src/relay/backend/build_module.cc:303
     80: tvm::relay::backend::RelayBuildModule::BuildRelay(tvm::IRModule, 
tvm::runtime::String const&)
           at 
/home/ganler/Documents/tvm-debug/src/relay/backend/build_module.cc:403
     79: tvm::relay::backend::RelayBuildModule::OptimizeImpl(tvm::IRModule)
           at 
/home/ganler/Documents/tvm-debug/src/relay/backend/build_module.cc:357
     78: tvm::transform::Pass::operator()(tvm::IRModule) const
           at /home/ganler/Documents/tvm-debug/src/ir/transform.cc:255
     77: tvm::transform::Pass::operator()(tvm::IRModule, 
tvm::transform::PassContext const&) const
           at /home/ganler/Documents/tvm-debug/src/ir/transform.cc:267
     76: tvm::transform::SequentialNode::operator()(tvm::IRModule, 
tvm::transform::PassContext const&) const
           at /home/ganler/Documents/tvm-debug/src/ir/transform.cc:487
     75: tvm::transform::Pass::operator()(tvm::IRModule, 
tvm::transform::PassContext const&) const
           at /home/ganler/Documents/tvm-debug/src/ir/transform.cc:267
     74: tvm::relay::transform::FunctionPassNode::operator()(tvm::IRModule, 
tvm::transform::PassContext const&) const
           at /home/ganler/Documents/tvm-debug/src/relay/ir/transform.cc:133
     73: tvm::runtime::TypedPackedFunc<tvm::relay::Function 
(tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext)>::operator()(tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1498
     72: tvm::relay::Function 
tvm::runtime::detail::typed_packed_call_dispatcher<tvm::relay::Function>::run<tvm::relay::Function,
 tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, 
tvm::relay::Function&&, tvm::IRModule&&, tvm::transform::PassContext&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1444
     71: tvm::runtime::TVMRetValue 
tvm::runtime::PackedFunc::operator()<tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext>(tvm::relay::Function&&, tvm::IRModule&&, 
tvm::transform::PassContext&&) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1369
     70: std::function<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:560
     69: std::_Function_handler<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*), tvm::runtime::TypedPackedFunc<tvm::relay::Function 
(tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1>(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs
 const&, tvm::runtime::TVMRetValue*)#1}>::_M_invoke(std::_Any_data const&, 
tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:291
     68: std::enable_if<__and_<std::is_void<void>, 
std::__is_invocable<tvm::runtime::TypedPackedFunc<tvm::relay::Function 
(tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1>(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs
 const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*> >::value, void>::type std::__invoke_r<void, 
tvm::runtime::TypedPackedFunc<tvm::relay::Function (tvm::relay::Function, 
tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1>(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs
 const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(tvm::runtime::TypedPackedFunc<tvm::relay::Function 
(tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1
 >(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs 
 >const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs&&, 
 >tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:154
     67: void std::__invoke_impl<void, 
tvm::runtime::TypedPackedFunc<tvm::relay::Function (tvm::relay::Function, 
tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1>(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs
 const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(std::__invoke_other, 
tvm::runtime::TypedPackedFunc<tvm::relay::Function (tvm::relay::Function, 
tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1>(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs
 const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs&&, 
tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:61
     66: tvm::runtime::TypedPackedFunc<tvm::relay::Function 
(tvm::relay::Function, tvm::IRModule, 
tvm::transform::PassContext)>::AssignTypedLambda<tvm::relay::transform::AlterOpLayout()::$_1>(tvm::relay::transform::AlterOpLayout()::$_1)::{lambda(tvm::runtime::TVMArgs
 const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1492
     65: void tvm::runtime::detail::unpack_call<tvm::relay::Function, 3, 
tvm::relay::transform::AlterOpLayout()::$_1>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::transform::AlterOpLayout()::$_1 const&, tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1421
     64: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::Function, 3, 0, 
tvm::relay::transform::AlterOpLayout()::$_1>::run<>(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::transform::AlterOpLayout()::$_1 const&, tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     63: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::Function, 2, 1, 
tvm::relay::transform::AlterOpLayout()::$_1>::run<tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::transform::AlterOpLayout()::$_1 const&, tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     62: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::Function, 1, 2, 
tvm::relay::transform::AlterOpLayout()::$_1>::run<tvm::runtime::TVMMovableArgValueWithContext_,
 tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::transform::AlterOpLayout()::$_1 const&, tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*, 
tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     61: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::Function, 0, 3, 
tvm::relay::transform::AlterOpLayout()::$_1>::run<tvm::runtime::TVMMovableArgValueWithContext_,
 tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::transform::AlterOpLayout()::$_1 const&, tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*, 
tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1397
     60: 
tvm::relay::transform::AlterOpLayout()::$_1::operator()(tvm::relay::Function, 
tvm::IRModule, tvm::transform::PassContext) const
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/alter_op_layout.cc:134
     59: tvm::relay::alter_op_layout::AlterOpLayout(tvm::RelayExpr const&)
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/alter_op_layout.cc:124
     58: tvm::relay::ForwardRewrite(tvm::RelayExpr const&, 
tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)> const&, std::function<tvm::runtime::ObjectRef (tvm::relay::Call 
const&)>, std::function<tvm::RelayExpr (tvm::RelayExpr const&)>)
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/forward_rewrite.cc:182
     57: tvm::relay::ForwardRewriter::Rewrite(tvm::RelayExpr const&)
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/forward_rewrite.cc:72
     56: tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:102
     55: void 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_3)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:492
     54: void 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3, 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3)::{lambda(tvm::RelayExpr const&)#1}>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_3, 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const
 &)::$_3)::{lambda(tvm::RelayExpr const&)#1})
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:462
     53: tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3::operator()(tvm::RelayExpr const&) const
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:98
     52: tvm::relay::MixedModeMutator::VisitLeaf(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:81
     51: tvm::relay::MixedModeMutator::DispatchVisitExpr(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:94
     50: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:158
     49: tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>::VisitExpr(tvm::RelayExpr const&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:95
     48: tvm::NodeFunctor<tvm::RelayExpr (tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>*)>::operator()(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr const&)>*) const
           at /home/ganler/Documents/tvm-debug/include/tvm/node/functor.h:97
     47: tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>*)#5}::__invoke(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr const&)>*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:127
     46: tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>*)#5}::operator()(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr const&)>*) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:127
     45: tvm::relay::ExprMutator::VisitExpr_(tvm::relay::FunctionNode const*)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:204
     44: tvm::relay::ExprMutator::Mutate(tvm::RelayExpr const&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:190
     43: tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:102
     42: void 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_3)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:492
     41: void 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3, 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3)::{lambda(tvm::RelayExpr const&)#1}>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_3, 
tvm::relay::ExpandDataflow<tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr
 const&)::$_2, tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3>(tvm::RelayExpr, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const&)::$_2, 
tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr const
 &)::$_3)::{lambda(tvm::RelayExpr const&)#1})
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:462
     40: tvm::relay::MixedModeMutator::VisitExpr(tvm::RelayExpr 
const&)::$_3::operator()(tvm::RelayExpr const&) const
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:98
     39: tvm::relay::MixedModeMutator::VisitLeaf(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:81
     38: tvm::relay::MixedModeMutator::DispatchVisitExpr(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:94
     37: tvm::relay::ExprMutator::VisitExpr(tvm::RelayExpr const&)
           at /home/ganler/Documents/tvm-debug/src/relay/ir/expr_functor.cc:158
     36: tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>::VisitExpr(tvm::RelayExpr const&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:95
     35: tvm::NodeFunctor<tvm::RelayExpr (tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>*)>::operator()(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr const&)>*) const
           at /home/ganler/Documents/tvm-debug/include/tvm/node/functor.h:97
     34: tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>*)#6}::__invoke(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr const&)>*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:128
     33: tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr 
const&)>*)#6}::operator()(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<tvm::RelayExpr (tvm::RelayExpr const&)>*) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:128
     32: tvm::relay::MixedModeMutator::VisitExpr_(tvm::relay::CallNode const*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:285
     31: tvm::RelayExpr 
tvm::relay::MixedModeMutator::Rewrite<tvm::relay::CallNode>(tvm::relay::CallNode
 const*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/relay/expr_functor.h:307
     30: tvm::relay::ForwardRewriter::Rewrite_(tvm::relay::CallNode const*, 
tvm::RelayExpr const&)
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/forward_rewrite.cc:154
     29: tvm::runtime::TVMRetValue 
tvm::runtime::PackedFunc::operator()<tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void>&, 
tvm::runtime::ObjectRef>(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void>&, tvm::runtime::ObjectRef&&) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1369
     28: std::function<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:560
     27: std::_Function_handler<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*), tvm::runtime::TypedPackedFunc<tvm::RelayExpr 
(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)>::AssignTypedLambda<tvm::RelayExpr 
(*)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)>(tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}>::_M_invoke(std::_Any_data const&, 
tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:291
     26: std::enable_if<__and_<std::is_void<void>, 
std::__is_invocable<tvm::runtime::TypedPackedFunc<tvm::RelayExpr 
(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)>::AssignTypedLambda<tvm::RelayExpr 
(*)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)>(tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*> >::value, void>::type std::__invoke_r<void, 
tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::AssignTypedLambda<tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>(tvm::RelayExpr (*)(tvm::relay::Ca
 ll const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(tvm::runtime::TypedPackedFunc<tvm::RelayExpr 
(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)>::AssignTypedLambda<tvm::RelayExpr 
(*)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)>(tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs&&, 
tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:154
     25: void std::__invoke_impl<void, 
tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::AssignTypedLambda<tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>(tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(std::__invoke_other, 
tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::AssignTypedLambda<tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>(tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> co
 nst&, tvm::runtime::ObjectRef const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs&&, 
tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:61
     24: tvm::runtime::TypedPackedFunc<tvm::RelayExpr (tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::AssignTypedLambda<tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>(tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&))::{lambda(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1492
     23: void tvm::runtime::detail::unpack_call<tvm::RelayExpr, 3, 
tvm::RelayExpr (*)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, 
void> const&, tvm::runtime::ObjectRef const&)>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, tvm::RelayExpr (* 
const&)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> 
const&, tvm::runtime::ObjectRef const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1421
     22: void tvm::runtime::detail::unpack_call_dispatcher<tvm::RelayExpr, 3, 
0, tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::run<>(std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const*, tvm::RelayExpr (* const&)(tvm::relay::Call 
const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     21: void tvm::runtime::detail::unpack_call_dispatcher<tvm::RelayExpr, 2, 
1, tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const*, tvm::RelayExpr (* 
const&)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> 
const&, tvm::runtime::ObjectRef const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     20: void tvm::runtime::detail::unpack_call_dispatcher<tvm::RelayExpr, 1, 
2, tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, tvm::RelayExpr (* 
const&)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> 
const&, tvm::runtime::ObjectRef const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     19: void tvm::runtime::detail::unpack_call_dispatcher<tvm::RelayExpr, 0, 
3, tvm::RelayExpr (*)(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::RelayExpr, void> const&, tvm::runtime::ObjectRef 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, tvm::RelayExpr (* 
const&)(tvm::relay::Call const&, tvm::runtime::Array<tvm::RelayExpr, void> 
const&, tvm::runtime::ObjectRef const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1397
     18: tvm::RelayExpr 
tvm::relay::LayoutRewriter<tvm::relay::alter_op_layout::AlterTransformMemorizer>(tvm::relay::Call
 const&, tvm::runtime::Array<tvm::RelayExpr, void> const&, 
tvm::runtime::ObjectRef const&)
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/transform_layout.h:359
     17: tvm::relay::InferCorrectLayouts(tvm::relay::Call const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&)
           at 
/home/ganler/Documents/tvm-debug/src/relay/transforms/transform_layout.h:232
     16: tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput 
(tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&)>::operator()(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1498
     15: tvm::relay::InferCorrectLayoutOutput 
tvm::runtime::detail::typed_packed_call_dispatcher<tvm::relay::InferCorrectLayoutOutput>::run<tvm::Attrs
 const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&>(tvm::runtime::PackedFunc const&, 
tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1444
     14: tvm::runtime::TVMRetValue 
tvm::runtime::PackedFunc::operator()<tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&>(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1369
     13: std::function<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*) const
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:560
     12: std::_Function_handler<void (tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*), 
tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput (tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}>::_M_invoke(std::_Any_data const&, 
tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/std_function.h:291
     11: std::enable_if<__and_<std::is_void<void>, 
std::__is_invocable<tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput
 (tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*> >::value, void>::type std::__invoke_r<void, 
tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput (tvm::Attrs 
const
 &, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput
 (tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLa
 youtOutput (*)(tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs&&, 
tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:154
     10: void std::__invoke_impl<void, 
tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput (tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs, 
tvm::runtime::TVMRetValue*>(std::__invoke_other, 
tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput (tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
 tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}&, tvm::runtime::TVMArgs&&, 
tvm::runtime::TVMRetValue*&&)
           at 
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/bits/invoke.h:61
     9: tvm::runtime::TypedPackedFunc<tvm::relay::InferCorrectLayoutOutput 
(tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::AssignTypedLambda<tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>(tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&))::{lambda(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs 
const&, tvm::runtime::TVMRetValue*) const
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1492
     8: void 
tvm::runtime::detail::unpack_call<tvm::relay::InferCorrectLayoutOutput, 4, 
tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&)>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::InferCorrectLayoutOutput (* const&)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1421
     7: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::InferCorrectLayoutOutput,
 4, 0, tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::run<>(std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const*, tvm::relay::InferCorrectLayoutOutput (* 
const&)(tvm::Attrs const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     6: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::InferCorrectLayoutOutput,
 3, 1, tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::InferCorrectLayoutOutput (* const&)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     5: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::InferCorrectLayoutOutput,
 2, 2, tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::InferCorrectLayoutOutput (* const&)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     4: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::InferCorrectLayoutOutput,
 1, 3, tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::InferCorrectLayoutOutput (* const&)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1382
     3: void 
tvm::runtime::detail::unpack_call_dispatcher<tvm::relay::InferCorrectLayoutOutput,
 0, 4, tvm::relay::InferCorrectLayoutOutput (*)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> 
const&)>::run<tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_, 
tvm::runtime::TVMMovableArgValueWithContext_>(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const*, 
tvm::relay::InferCorrectLayoutOutput (* const&)(tvm::Attrs const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&), tvm::runtime::TVMArgs const&, 
tvm::runtime::TVMRetValue*, tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithContext_&&, 
tvm::runtime::TVMMovableArgValueWithCo
 ntext_&&, tvm::runtime::TVMMovableArgValueWithContext_&&)
           at 
/home/ganler/Documents/tvm-debug/include/tvm/runtime/packed_func.h:1397
     2: tvm::relay::InferCorrectLayoutOutput 
tvm::relay::ReduceInferCorrectLayout<tvm::relay::ArgReduceAttrs>(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&)
           at /home/ganler/Documents/tvm-debug/src/relay/op/tensor/reduce.cc:210
     1: 
tvm::relay::ReduceInferCorrectLayout<tvm::relay::ArgReduceAttrs>(tvm::Attrs 
const&, tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::tir::Layout, void> const&, 
tvm::runtime::Array<tvm::Type, void> const&)::{lambda(tvm::tir::Layout 
const&)#1}::operator()(tvm::tir::Layout const&) const
           at /home/ganler/Documents/tvm-debug/src/relay/op/tensor/reduce.cc:191
     0: tvm::tir::Layout::Layout(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)
           at /home/ganler/Documents/tvm-debug/src/tir/ir/data_layout.cc:140
     File "/home/ganler/Documents/tvm-debug/src/tir/ir/data_layout.cc", line 140
   TVMError: 
   ---------------------------------------------------------------
   An error occurred during the execution of TVM.
   For more information, please see: https://tvm.apache.org/docs/errors.html
   ---------------------------------------------------------------
     Check failed: (exist_axis[axis - 'a' + 'A']) is false: Invalid layout 
NHW1c: missing axis 67
   """
   ```
   
   </div>
   </details>
   
   ### Environment
   
   Linux 5.10 (Manjaro Latest Stable). Compiled using clang 13 w/ LLVM support.
   
   ### Steps to reproduce
   
   ```python
   import tvm
   from tvm import relay
   from tvm.relay import testing
   
   x = relay.var("data", shape=(1, 3, 48, 48))
   y = relay.nn.conv2d(data=x,
                       weight=relay.var("weight"),
                       kernel_size=(1, 1),
                       channels=1,
                       dilation=1,
                       strides=(47, 47))
   
   z = relay.argmin(y, axis=1)
   
   mod, params = testing.create_workload(z)
   
   with tvm.transform.PassContext(opt_level=4):
       executor = relay.build_module.create_executor(
           'graph', mod, tvm.cpu(), 'llvm', params
       ).evaluate()
   ```
   
   @masahi 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to