yuwenjun1988 opened a new issue, #13222:
URL: https://github.com/apache/tvm/issues/13222
1、Expected behavior
No Crash
2、Actual behavior
Crash Stack
(1)test_dnnl.py:1758:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test_dnnl.py:1414: in check_result
check_vm_result()
test_dnnl.py:1397: in check_vm_result
exe = relay.vm.compile(mod, target=target, params=params)
../../../python/tvm/relay/backend/vm.py:67: in compile
compiler.lower(mod, target, target_host)
../../../python/tvm/relay/backend/vm.py:126: in lower
self._lower(mod, raw_targets)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <tvm.runtime.packed_func.PackedFunc object at 0x7f3698105080>
args = (#[version = "0.0.5"]
def @main(%in_0: Tensor[(2, 10), uint8] /* ty=Tensor[(2, 10), uint8] */) ->
Tensor[(2, 16), uint...AATUMAAIjBAAAOwwAAyEEAAPBBAABCwwAAEUMAANDBAAA/Qw=="
],
"attrs": {"tvm_version": "0.11.dev0"}
}, [llvm -keys=cpu ])
temp_args = [], values = <tvm._ffi._ctypes.packed_func.TVMValue_Array_2
object at 0x7f368e874ac0>, tcodes = <tvm._ffi._ctypes.packed_func.c_int_Array_2
object at 0x7f368e874cc0>
def __call__(self, *args):
"""Call the function with positional arguments
args : list
The positional arguments to the function call.
"""
temp_args = []
values, tcodes, num_args = _make_tvm_args(args, temp_args)
ret_val = TVMValue()
ret_tcode = ctypes.c_int()
if (
_LIB.TVMFuncCall(
self.handle,
values,
tcodes,
ctypes.c_int(num_args),
ctypes.byref(ret_val),
ctypes.byref(ret_tcode),
)
!= 0
):
> raise get_last_ffi_error()
E tvm._ffi.base.TVMError: Traceback (most recent call last):
E 22: TVMFuncCall
E 21:
tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::relay::vm::VMCompiler::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*)#1}>
>::Call(tvm::runtime::PackedFuncObj const*, tvm::runtime::TVMArgs,
tvm::runtime::TVMRetValue*)
E 20: tvm::relay::vm::VMCompiler::Lower(tvm::IRModule,
tvm::runtime::Array<tvm::Target, void> const&)
E 19: tvm::relay::vm::VMCompiler::LowerImpl(tvm::IRModule)
E 18:
tvm::relay::vm::VMCompiler::OptimizeModuleImpl(tvm::IRModule)
E 17: tvm::transform::Pass::operator()(tvm::IRModule) const
E 16: tvm::transform::Pass::operator()(tvm::IRModule,
tvm::transform::PassContext const&) const
E 15: tvm::transform::SequentialNode::operator()(tvm::IRModule,
tvm::transform::PassContext const&) const
E 14: tvm::transform::Pass::operator()(tvm::IRModule,
tvm::transform::PassContext const&) const
E 13: tvm::transform::SequentialNode::operator()(tvm::IRModule,
tvm::transform::PassContext const&) const
E 12: tvm::transform::Pass::operator()(tvm::IRModule,
tvm::transform::PassContext const&) const
E 11: tvm::transform::ModulePassNode::operator()(tvm::IRModule,
tvm::transform::PassContext const&) const
E 10:
_ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_8IRModuleES5_NS_9transform11PassContextEEE17AssignTypedLambdaIZNS_5relay3tec7LowerTEENS0_6StringENS_17CompilationConfigESt8functionIFvNS_8BaseFuncEEEEUlS5_S7_E_EEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SL_SP_
E 9: tvm::relay::tec::LowerTE(tvm::IRModule const&,
tvm::runtime::String const&, std::function<void (tvm::BaseFunc)>,
tvm::CompilationConfig)
E 8: tvm::relay::tec::TECompilerImpl::LowerExternalFunctions()
E 7:
tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::runtime::TypedPackedFunc<tvm::runtime::Module
(tvm::runtime::ObjectRef const&)>::AssignTypedLambda<tvm::runtime::Module
(*)(tvm::runtime::ObjectRef const&)>(tvm::runtime::Module
(*)(tvm::runtime::ObjectRef const&), std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs
const&, tvm::runtime::TVMRetValue*)#1}> >::Call(tvm::runtime::PackedFuncObj
const*, tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)
E 6: tvm::relay::contrib::DNNLCompiler(tvm::runtime::ObjectRef
const&)
E 5:
tvm::relay::contrib::DNNLModuleCodegen::CreateCSourceModule(tvm::runtime::ObjectRef
const&)
E 4:
tvm::relay::backend::MemoizedExprTranslator<std::vector<tvm::relay::contrib::Output,
std::allocator<tvm::relay::contrib::Output> > >::VisitExpr(tvm::RelayExpr
const&)
E 3:
tvm::relay::ExprFunctor<std::vector<tvm::relay::contrib::Output,
std::allocator<tvm::relay::contrib::Output> > (tvm::RelayExpr
const&)>::VisitExpr(tvm::RelayExpr const&)
E 2:
_ZZN3tvm5relay11ExprFunctorIFSt6vectorINS0_7contrib6OutputESaIS4_EERK
E 1:
tvm::relay::contrib::CodegenDNNL::VisitExpr_(tvm::relay::CallNode const*)
E 0:
tvm::relay::contrib::CodegenDNNL::GenerateCompositeFunctionCall(tvm::relay::FunctionNode
const*, tvm::relay::CallNode const*)
E File
"/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc", line 314
E TVMError: Unknown composite function:"dnnl.qnn.dense"
(2)test_dnnl.py:940:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test_dnnl.py:228: in run_and_verify_func
run_and_verify(
test_dnnl.py:196: in run_and_verify
func = relay.create_executor(
../../../python/tvm/relay/backend/interpreter.py:171: in evaluate
return self._make_executor()
../../../python/tvm/relay/build_module.py:519: in _make_executor
mod = build(self.mod, target=self.target)
../../../python/tvm/relay/build_module.py:364: in build
graph_json, runtime_mod, params = bld_mod.build(
../../../python/tvm/relay/build_module.py:161: in build
self._build(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <tvm.runtime.packed_func.PackedFunc object at 0x7f368e77a800>
args = (#[version = "0.0.5"]
def @main(%x: Tensor[(1, 16), float32] /* ty=Tensor[(1, 16), float32] */) ->
Tensor[(1, 32), flo... ],
"attrs": {"tvm_version": "0.11.dev0"}
}, [llvm -keys=cpu ], None, graph{"link-params": (bool)0}, cpp, None, ...)
temp_args = [], values = <tvm._ffi._ctypes.packed_func.TVMValue_Array_8
object at 0x7f368e67f5c0>, tcodes = <tvm._ffi._ctypes.packed_func.c_int_Array_8
object at 0x7f368e67f7c0>
def __call__(self, *args):
"""Call the function with positional arguments
args : list
The positional arguments to the function call.
"""
temp_args = []
values, tcodes, num_args = _make_tvm_args(args, temp_args)
ret_val = TVMValue()
ret_tcode = ctypes.c_int()
if (
_LIB.TVMFuncCall(
self.handle,
values,
tcodes,
ctypes.c_int(num_args),
ctypes.byref(ret_val),
ctypes.byref(ret_tcode),
)
!= 0
):
> raise get_last_ffi_error()
E tvm._ffi.base.TVMError: Traceback (most recent call last):
E 6: TVMFuncCall
E 5:
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
E 4: tvm::relay::backend::RelayBuildModule::Build(tvm::IRModule,
tvm::runtime::Array<tvm::Target, void> const&, tvm::Target const&,
tvm::relay::Executor const&, tvm::relay::Runtime const&,
tvm::WorkspaceMemoryPools const&, tvm::ConstantMemoryPools const&,
tvm::runtime::String)
E 3:
tvm::relay::backend::RelayBuildModule::BuildRelay(tvm::IRModule,
tvm::runtime::String const&)
E 2:
tvm::codegen::CreateMetadataModule(std::unordered_map<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, tvm::runtime::NDArray,
std::hash<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, tvm::runtime::NDArray> >
> const&, tvm::runtime::Module, tvm::runtime::Array<tvm::runtime::Module, void>
const&, tvm::Target, tvm::relay::Runtime, tvm::relay::Executor,
tvm::relay::backend::ExecutorCodegenMetadata)
E 1:
_ZN3tvm7runtime23ConstLoaderModuleCreateERKSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS0_7NDArrayESt4hashIS7_ESt8equal_toIS7_ESaISt4pairIKS7_S8_EEERKS1_IS7_St6vectorIS7_SaIS7_EESA_
E 0:
tvm::runtime::ConstLoaderModuleNode::ConstLoaderModuleNode(std::unordered_map<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, tvm::runtime::NDArray,
std::hash<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, tvm::runtime::NDArray> >
> const&, std::unordered_map<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > >,
std::hash<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char,
std::char_traits<char>, st
d::allocator<char> > >,
std::allocator<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > > > > const&)
E File "/mnt/e/code/tvm/src/runtime/const_loader_module.cc",
line 62
E TVMError:
E ---------------------------------------------------------------
E An error occurred during the execution of TVM.
E For more information, please see:
https://tvm.apache.org/docs/errors.html
E ---------------------------------------------------------------
E
E Check failed: const_var_ndarray_.count(var) > 0 (0 vs. 0) :
ConstLoaderModuleNode is missing entry for constant
'tvmgen_default_dnnl_main_0_const_0' for function 'tvmgen_default_dnnl_main_0
Environment
Ubuntu 18.04 TVM 0.11.dev0
Any environment details, such as: Operating System, TVM version, etc
2、Steps to reproduce
(1)run tvm/tests/python/contrib/test_dnnl.py
(2)
If in config.cmake set(USE_DNNL ON), it is successed.
But if in config.cmake set(USE_DNNL C_SRC), it is failed.
And if in config.cmake set(USE_DNNL C_SRC), compilation is also problematic
and DNNL.cmake also is modified.
I modified the compilation problem locally.
You can try set(USE_DNNL C_SRC),and run test_dnnl.py.
compile error message:
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc: In member
function ‘tvm::relay::contrib::GenerateBodyOutput
tvm::relay::contrib::CodegenDNNL::GenerateCompositeFunctionCall(const
tvm::relay::FunctionNode*, const tvm::relay::CallNode*)’:
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc:279:99: error:
call of overloaded ‘GetRootCall(const tvm::relay::CallNode*, int,
<brace-enclosed initializer list>)’ is ambiguous
const auto* conv_call = GetRootCall(callee->body.as<CallNode>(), 1,
{"nn.conv2d", "nn.relu"});
^
In file included from
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc:37:0:
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/../../utils.h:532:24: note:
candidate: const tvm::relay::CallNode* tvm::relay::backend::GetRootCall(const
tvm::relay::CallNode*, int, const std::vector<std::__cxx11::basic_string<char>
>&)
inline const CallNode* GetRootCall(const CallNode* current_call, int depth,
^~~~~~~~~~~
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/../../utils.h:581:24: note:
candidate: const tvm::relay::CallNode* tvm::relay::backend::GetRootCall(const
tvm::relay::CallNode*, int, const string&)
inline const CallNode* GetRootCall(const CallNode* current_call, int
max_depth,
^~~~~~~~~~~
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc: In member
function ‘virtual void
tvm::relay::contrib::DNNLConstantUpdater::VisitExpr_(const
tvm::relay::CallNode*)’:
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc:596:29: error:
‘BindToCallNodeArgs’ was not declared in this scope
auto args = root_cn ? BindToCallNodeArgs(args_loc, cn) : cn->args;
^~~~~~~~~~~~~~~~~~
/mnt/e/code/tvm/src/relay/backend/contrib/dnnl/codegen.cc:599:30: error:
unable to deduce ‘auto&&’ from ‘args’
for (const auto& arg : args) {
^~~~
CMakeFiles/tvm_objs.dir/build.make:8307: recipe for target
'CMakeFiles/tvm_objs.dir/src/relay/backend/contrib/dnnl/codegen.cc.o' failed
make[2]: ***
[CMakeFiles/tvm_objs.dir/src/relay/backend/contrib/dnnl/codegen.cc.o] Error 1
CMakeFiles/Makefile2:850: recipe for target 'CMakeFiles/tvm_objs.dir/all'
failed
make[1]: *** [CMakeFiles/tvm_objs.dir/all] Error 2
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2
--
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]