Traceback (most recent call last):
File "test.py", line 20, in <module>
ex = relax.build(mod, target='llvm')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/software/tvm/python/tvm/relax/vm_build.py", line 340, in build
mod = _vmcodegen(builder, mod, exec_mode)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/software/tvm/python/tvm/relax/vm_build.py", line 176, in _vmcodegen
return _ffi_api.VMCodeGen(builder, mod) # type:ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/software/tvm/python/tvm/_ffi/_ctypes/packed_func.py", line 239, in __call__
raise_last_ffi_error()
File "/software/tvm/python/tvm/_ffi/base.py", line 481, in raise_last_ffi_error
raise py_err
tvm._ffi.base.TVMError: Traceback (most recent call last):
10: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_1
9: tvm::runtime::TypedPackedFunc<tvm::IRModule (tvm::relax::ExecBuilder, tvm::IRModule)>::AssignTypedLambda<tvm::IRModule (*)(tvm::relax::ExecBuilder, tvm::IRModule)>(tvm::IRModule (*)(tvm::relax::ExecBuilder, tvm::IRModule), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*) const
8: tvm::relax::relax_vm::VMCodeGen(tvm::relax::ExecBuilder, tvm::IRModule)
7: tvm::relax::relax_vm::CodeGenVM::Run(tvm::relax::ExecBuilder, tvm::IRModule)
6: tvm::relax::relax_vm::CodeGenVM::Codegen(tvm::relax::Function const&)
5: tvm::relax::ExprFunctor<tvm::runtime::relax_vm::Instruction::Arg (tvm::RelayExpr const&)>::VisitExpr(tvm::RelayExpr const&)
4: _ZZN3tvm5relax11ExprFunctorIFNS_7runtime8rel
3: tvm::relax::relax_vm::CodeGenVM::VisitExpr_(tvm::relax::SeqExprNode const*)
2: tvm::relax::ExprFunctor<tvm::runtime::relax_vm::Instruction::Arg (tvm::RelayExpr const&)>::VisitExpr(tvm::RelayExpr const&)
1: _ZZN3tvm5relax11ExprFunctorIFNS_7runtime8rel
0: tvm::relax::relax_vm::CodeGenVM::VisitExpr_(tvm::relax::CallNode const*)
File "/software/tvm/src/relax/backend/vm/codegen_vm.cc", line 177
TVMError: CodeGenVM cannot handle this intrinsic now:
Op(relax.tensor_to_shape)
import tvm
from tvm import relax
from tvm.script import ir as I
from tvm.script import relax as R
@I.ir_module
class Module:
@R.function
def main(x: R.Tensor((3,), dtype="int64")) -> R.Tensor((3,), dtype="int64"):
lv: R.Shape([3]) = R.tensor_to_shape(x)
lv: R.Shape([3]) = R.call_pure_packed("vm.builtin.tensor_to_shape", x, sinfo_args=(R.Shape([3]),))
return lv
mod = Module
mod = tvm.relax.transform.LegalizeOps()(mod)
mod.show()
ex = relax.build(mod, target='llvm')
vm = relax.VirtualMachine(ex, tvm.cpu())
Actual behavior
Environment
TVM: 0.17.dev0
OS: Ubuntu20.04
Steps to reproduce
Triage
cc @junrushao