I have built TVM with LLVM and DNNL enabled, although I have not enabled MKL/MKLDNN/MKL BLAS. Possibly due to this “incomplete” set of build options, I am running into a crash when trying to run the following unit test:
tests/python/relay ‹main*› % python3 ./test_external_codegen.py
./test_external_codegen.py:68: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the new recommended usage.
json, lib, _ = relay.build(mod, target=target)
./test_external_codegen.py:68: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the new recommended usage.
json, lib, _ = relay.build(mod, target=target)
./test_external_codegen.py:68: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the new recommended usage.
json, lib, _ = relay.build(mod, target=target)
./test_external_codegen.py:68: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the new recommended usage.
json, lib, _ = relay.build(mod, target=target)
./test_external_codegen.py:253: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the new recommended usage.
_, _, params = relay.build(mod, target="llvm")
One or more operators have not been tuned. Please tune your model for better performance. Use DEBUG logging level to see more details.
Traceback (most recent call last):
File "./test_external_codegen.py", line 368, in <module>
test_extern_dnnl()
File "./test_external_codegen.py", line 296, in test_extern_dnnl
mod, {"data0": i_data, "weight0": w_data}, (1, 32, 14, 14), ref_res.numpy(), tol=1e-5
File "./test_external_codegen.py", line 80, in check_result
check_vm_result()
File "./test_external_codegen.py", line 62, in check_vm_result
vm = runtime.vm.VirtualMachine(exe, device)
File "/home/szaday2/workspace/tvm/python/tvm/runtime/vm.py", line 341, in __init__
self.module = exe.mod["vm_load_executable"]()
File "/home/szaday2/workspace/tvm/python/tvm/_ffi/_ctypes/packed_func.py", line 237, in __call__
raise get_last_ffi_error()
tvm._ffi.base.TVMError: TVMError: could not construct a memory descriptor using a format tag
Do you have any suggestions on what to try to correct this failure? Do I need to enable MKL/etc. to use the DNNL target? If so, how do enable them? When I tried to build with them, I kept getting errors pertaining to USE_MKL pointing to the wrong directory, and MKLBLAS being missing.
Also, a secondary question – but assuming I get this all working, does the DNNL target support Relay QNN?