tvm icon indicating copy to clipboard operation
tvm copied to clipboard

[Bug] Building tvm with USE_DNNL=ON throws error

Open IssacXid opened this issue 1 year ago • 2 comments
trafficstars

Expected behavior

I have built oneDNN following this link https://oneapi-src.github.io/oneDNN/dev_guide_build.html. And I modify the config.cmake set(USE_DNNL ON). It should be able to build TVM with DNNL json BYOC feature and running the file /test/python/relay/test_external_codegen.py should result in all the unit test including DNNL to pass.

Actual behavior

While building, it throws this error:

error: ‘const struct dnnl::memory::desc’ has no member named ‘data’; did you mean ‘std::shared_ptr<dnnl_memory_desc> dnnl::handle<dnnl_memory_desc*>::data_’? (not accessible from this context)
   91 |   if (!(md->data.format_kind == blocked)) {

In file included from /usr/local/include/oneapi/dnnl/dnnl.hpp:35,
                 from /usr/local/include/dnnl.hpp:20,
                 from /home/dut3kor/tvm/src/relay/backend/contrib/dnnl/../../../../runtime/contrib/dnnl/dnnl_utils.h:35,
                 from /home/dut3kor/tvm/src/relay/backend/contrib/dnnl/query_layout.cc:37:
/usr/local/include/oneapi/dnnl/dnnl_common.hpp:130:60: note: declared private here

Some other errors are:

In function ‘std::string tvm::relay::contrib::get_optimal_layout_for_conv(std::string, std::string, std::string, std::string, std::string, std::string, std::string, std::string, std::string)’:
error: ‘desc’ is not a member of ‘dnnl::convolution_forward’
  257 |   auto conv_desc = dnnl::convolution_forward::desc(

Environment

OS: WSL in Windows Installed OneDNN from WSL terminal only

Steps to reproduce

Set USE_DNNL=ON, LLVM=ON in /build/config.cmake Build OneDNN using the instruction in https://oneapi-src.github.io/oneDNN/dev_guide_build.html mentioned for Linux. build TVM in WSL

Triage

  • byoc:dnnl

IssacXid avatar Feb 12 '24 06:02 IssacXid

The last commit for the DNNL backend was a year ago. I'm guessing the TVM relay backend isn't updated for the latest oneDNN. The oneDNN v3.0 has memory descriptor breaking changes which might cause the compilation error. Using an older oneDNN (such as 2.7? I don't know) may solve the problem.

mshr-h avatar Mar 04 '24 12:03 mshr-h

Thanks, @mshr-h.

This is a duplicate for #13672.

vpirogov avatar Mar 07 '24 18:03 vpirogov