You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2021/12/30 00:53:15 UTC

[GitHub] [tvm] ganler opened a new issue #9813: [Bug] Layout Error when Putting `argmin` after `conv2d`

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: commits-unsubscribe@tvm.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [tvm] ganler commented on issue #9813: [Bug] Layout Error when Putting `argmin` after `conv2d`

Posted by GitBox <gi...@apache.org>.
ganler commented on issue #9813:
URL: https://github.com/apache/tvm/issues/9813#issuecomment-1002829150


   Seems it is because `ReduceInferCorrectLayout` did not correctly implement the layouts as it says
   
   > Check failed: (exist_axis[axis - 'a' + 'A']) is false: Invalid layout NHW1c: missing axis 67


-- 
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: commits-unsubscribe@tvm.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [tvm] comaniac closed issue #9813: [Bug] Layout Error when Putting `argmin` after `conv2d`

Posted by GitBox <gi...@apache.org>.
comaniac closed issue #9813:
URL: https://github.com/apache/tvm/issues/9813


   


-- 
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: commits-unsubscribe@tvm.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org