Skip to content
This repository has been archived by the owner on Apr 1, 2021. It is now read-only.

import torch_tvm error #149

Open
mowayao opened this issue Jan 6, 2020 · 5 comments
Open

import torch_tvm error #149

mowayao opened this issue Jan 6, 2020 · 5 comments

Comments

@mowayao
Copy link

mowayao commented Jan 6, 2020

python setup.py test

output:

========================================================================================================= test session starts =========================================================================================================
platform linux -- Python 3.7.4, pytest-5.3.2, py-1.8.1, pluggy-0.13.1
rootdir: /tvm, inifile: setup.cfg, testpaths: test
collected 0 items / 3 errors

=============================================================================================================== ERRORS ================================================================================================================
_________________________________________________________________________________________________ ERROR collecting test/test_core.py __________________________________________________________________________________________________
ImportError while importing test module '/tvm/test/test_core.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_core.py:2: in
from test.util import TVMTest
test/util.py:12: in
import torch_tvm
torch_tvm/init.py:9: in
from ._torch_tvm import *
E ImportError: /tvm/torch_tvm/_torch_tvm.cpython-37m-x86_64-linux-gnu.so: undefined symbol: ZN5torch3jit16SubgraphRewriter22RegisterRewritePatternERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9
________________________________________________________________________________________________ ERROR collecting test/test_models.py _________________________________________________________________________________________________
ImportError while importing test module '/tvm/test/test_models.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_models.py:6: in
import torch_tvm
torch_tvm/init.py:9: in
from ._torch_tvm import *
E ImportError: /tvm/torch_tvm/_torch_tvm.cpython-37m-x86_64-linux-gnu.so: undefined symbol: ZN5torch3jit16SubgraphRewriter22RegisterRewritePatternERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9
_______________________________________________________________________________________________ ERROR collecting test/test_operators.py _______________________________________________________________________________________________
ImportError while importing test module '/tvm/test/test_operators.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_operators.py:2: in
from test.util import TVMTest
test/util.py:12: in
import torch_tvm
torch_tvm/init.py:9: in
from ._torch_tvm import *
E ImportError: /tvm/torch_tvm/_torch_tvm.cpython-37m-x86_64-linux-gnu.so: undefined symbol: ZN5torch3jit16SubgraphRewriter22RegisterRewritePatternERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================================================================================== 3 errors in 0.76s ==========================================================================================================

@bwasti
Copy link
Contributor

bwasti commented Jan 6, 2020

Have you built PyTorch from source?

@mowayao
Copy link
Author

mowayao commented Jan 7, 2020

Have you built PyTorch from source?

I used pip to install pytorch. Is it necessary to build pytorch from souce?

@vatai
Copy link

vatai commented Jan 19, 2020

Hi, I have a similar (or maybe same) error:

This is the end of python setup.py test

copying build/lib.linux-x86_64-3.6/torch_tvm/_torch_tvm.cpython-36m-x86_64-linux-gnu.so -> torch_tvm
============================= test session starts ==============================
platform linux -- Python 3.6.9, pytest-5.3.3, py-1.8.1, pluggy-0.13.1
rootdir: /tvm, inifile: setup.cfg, testpaths: test
collected 0 items / 3 errors                                                   

==================================== ERRORS ====================================
______________________ ERROR collecting test/test_core.py ______________________
ImportError while importing test module '/tvm/test/test_core.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_core.py:2: in <module>
    from test.util import TVMTest
test/util.py:12: in <module>
    import torch_tvm
torch_tvm/__init__.py:9: in <module>
    from ._torch_tvm import *
E   ImportError: /tvm/torch_tvm/_torch_tvm.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZTIN3c1021AutogradMetaInterfaceE
_____________________ ERROR collecting test/test_models.py _____________________
ImportError while importing test module '/tvm/test/test_models.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_models.py:6: in <module>
    import torch_tvm
torch_tvm/__init__.py:9: in <module>
    from ._torch_tvm import *
E   ImportError: /tvm/torch_tvm/_torch_tvm.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZTIN3c1021AutogradMetaInterfaceE
___________________ ERROR collecting test/test_operators.py ____________________
ImportError while importing test module '/tvm/test/test_operators.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/test_operators.py:2: in <module>
    from test.util import TVMTest
test/util.py:12: in <module>
    import torch_tvm
torch_tvm/__init__.py:9: in <module>
    from ._torch_tvm import *
E   ImportError: /tvm/torch_tvm/_torch_tvm.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZTIN3c1021AutogradMetaInterfaceE
!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!
============================== 3 errors in 0.66s ===============================
(env) root@25711c3c1895:/tvm# 

and is in a docker container with this Dockerfile:

FROM ubuntu

RUN apt-get update && apt-get install -y git python3 python3-venv git cmake ninja-build g++ python3-dev llvm

RUN git clone --recurse-submodules https://github.com/pytorch/tvm.git && cd tvm && python3 -m venv env

RUN git clone https://github.com/pytorch/pytorch.git --recursive

RUN . tvm/env/bin/activate && cd pytorch && pip3 install -r requirements.txt
RUN . tvm/env/bin/activate && cd pytorch && BUILD_BINARY=OFF BUILD_TEST=0 BUILD_CAFFE2_OPS=0 python setup.py install

# RUN . tvm/env/bin/activate && cd tvm && git checkout 9d3ca57
# RUN . tvm/env/bin/activate && cd tvm && python setup.py install --cmake
# RUN . tvm/env/bin/activate && cd tvm && OMP_NUM_THREADS=2 python setup.py test

@bwasti
Copy link
Contributor

bwasti commented Jan 22, 2020

Have you built PyTorch from source?

I used pip to install pytorch. Is it necessary to build pytorch from souce?

It shouldn't be necessary to build from source, but there are unfortunately C++ ABI compatibility issues that typically arise from not building from source. The C++ ABI shipped with the pip install of PyTorch usually isn't compatible with system installed LLVMs. You can try downloading lib torch directly (and ensuring it uses the same C++ 11 ABI as your LLVM), but I'd recommend building PT from source.

Note: There are some work items on my end that will make this a bit smoother, as we are currently C++ABI unaware in the pytorch/tvm CMakeLists.txt. Filed an issue here: #154

@jjohnson-arm
Copy link

jjohnson-arm commented Feb 3, 2020

E   ImportError: /tvm/torch_tvm/_torch_tvm.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZTIN3c1021AutogradMetaInterfaceE

I found this error aswell, and it looks like it is due to pytorch/pytorch#30315 (which affects PyTorch 1.4) so the CMakeLists.txt needs to change to something like:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a6108e6..3903a78 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,7 +32,7 @@ add_subdirectory(${TVM_DIR})
 
 pybind11_add_module(_torch_tvm SHARED ${TORCH_TVM_SRCS})
 target_link_libraries(_torch_tvm PUBLIC
-  torch pybind11 tvm tvm_topi)
+  torch c10 torch_cpu torch_python pybind11 tvm tvm_topi)

Also shows up in CircleCI build 697

@MaxBareiss MaxBareiss mentioned this issue Feb 3, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants