USMP and unpacked-api

Hi everyone,

I’m having trouble using USMP in combination with the unpacked-api option. The used NN is RESNET50 https://github.com/onnx/models/raw/main/vision/classification/resnet/model/resnet50-v2-7.onnx

Can anyone give a hint on where to start?

   TARGET = "c"
    RUNTIME = tvm.relay.backend.Runtime("crt")
    EXECUTOR = tvm.relay.backend.Executor(
        "aot",
        {
            "workspace-byte-alignment": 8,
            "unpacked-api": True
        },
    )

    with tvm.transform.PassContext(
        opt_level=3,
        config={"tir.disable_vectorize": True,
                "tir.disable_storage_rewrite": True,
                "tir.usmp.enable": True,
                "tir.usmp.algorithm": "greedy_by_conflicts"
                },
        disabled_pass=["AlterOpLayout"]
    ):
        module = relay.build(mod, target=TARGET, runtime=RUNTIME, executor=EXECUTOR, params=params)

Resulting error message:

  File "/tvm/python/tvm/relay/backend/contrib/uma/_template/run.py", line 88, in <module>
    main()
  File "/tvm/python/tvm/relay/backend/contrib/uma/_template/run.py", line 73, in main
    module = relay.build(mod, target=TARGET, runtime=RUNTIME, executor=EXECUTOR, params=params)
  File "/tvm/python/tvm/relay/build_module.py", line 438, in build
    graph_json, runtime_mod, params = bld_mod.build(
  File "/tvm/python/tvm/relay/build_module.py", line 161, in build
    self._build(
  File "/tvm/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):
  [bt] (8) /tvm/build/libtvm.so(tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>::VisitExpr(tvm::PrimExpr const&)+0xaf) [0x7f1cf7f23095]
  [bt] (7) /tvm/build/libtvm.so(tvm::NodeFunctor<void (tvm::runtime::ObjectRef const&, tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>*)>::operator()(tvm::runtime::ObjectRef const&, tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>*) const+0x140) [0x7f1cf7f25b40]
  [bt] (6) /tvm/build/libtvm.so(tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&, tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>*)#7}::_FUN(tvm::runtime::ObjectRef const&, tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>*)+0x29) [0x7f1cf7f24568]
  [bt] (5) /tvm/build/libtvm.so(tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>::InitVTable()::{lambda(tvm::runtime::ObjectRef const&, tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>*)#7}::operator()(tvm::runtime::ObjectRef const&, tvm::tir::ExprFunctor<void (tvm::PrimExpr const&)>*) const+0x42) [0x7f1cf7f24538]
  [bt] (4) /tvm/build/libtvm.so(tvm::tir::usmp::BufferInfoExtractor::VisitExpr_(tvm::tir::CallNode const*)+0x20a) [0x7f1cf8f23198]
  [bt] (3) /tvm/build/libtvm.so(tvm::tir::usmp::BufferInfoExtractor::UpdateAliases(tvm::runtime::Array<tvm::PrimExpr, void> const&, tvm::tir::PrimFunc const&)+0xf8) [0x7f1cf8f22a00]
  [bt] (2) /tvm/build/libtvm.so(tvm::runtime::detail::LogFatal::~LogFatal()+0x36) [0x7f1cf7f10172]
  [bt] (1) /tvm/build/libtvm.so(tvm::runtime::detail::LogFatal::Entry::Finalize()+0x4a) [0x7f1cf7f102e6]
  [bt] (0) /tvm/build/libtvm.so(tvm::runtime::Backtrace[abi:cxx11]()+0x35) [0x7f1cf9e669e3]
  File "/tvm/src/tir/usmp/analysis/extract_buffer_info.cc", line 444
TVMError: 
---------------------------------------------------------------
An error occurred during the execution of TVM.
For more information, please see: https://tvm.apache.org/docs/errors.html
---------------------------------------------------------------
  Check failed: (args.size() == param_buffers.size() || args.size() - 1 == param_buffers.size()) is false:````


CC: @manupa-arm  @cgerum @paulpb @sezgin1947 @aca88 @areusch @SebastianBoblestETAS @UlrikHjort @Khoi

Hmmm it seems like there is a PrimFunc created in compiling that model that does not have a buffer_map entry for one or more arguments of the PrimFunc (apart from the resource handle) which is unusual for a “c” target.

Looking at the IRModule before USMP passes are applied might help to figure out the issue.