pmh47 / dirt

DIRT: a fast differentiable renderer for TensorFlow
MIT License
313 stars 63 forks source link

undefined symbol when running tests #50

Closed Taye310 closed 5 years ago

Taye310 commented 5 years ago

`(octopus) zhangtianyi@likun-ThinkStation:~/github/dirt$ python tests/lighting_tests.py Traceback (most recent call last): File "tests/lighting_tests.py", line 6, in import dirt.rasterise_ops File "/home/zhangtianyi/anaconda3/envs/octopus/lib/python2.7/site-packages/dirt/init.py", line 2, in from .rasterise_ops import rasterise, rasterise_batch, rasterise_deferred, rasterise_batch_deferred File "/home/zhangtianyi/anaconda3/envs/octopus/lib/python2.7/site-packages/dirt/rasterise_ops.py", line 6, in _rasterise_module = tf.load_op_library(_lib_path + '/librasterise.so') File "/home/zhangtianyi/anaconda3/envs/octopus/lib/python2.7/site-packages/tensorflow/python/framework/load_library.py", line 61, in load_op_library lib_handle = py_tf.TF_LoadLibrary(library_filename) tensorflow.python.framework.errors_impl.NotFoundError: /home/zhangtianyi/anaconda3/envs/octopus/lib/python2.7/site-packages/dirt/librasterise.so: undefined symbol: _Z24launch_background_uploadRP9cudaArrayRKN10tensorflow6TensorEiiRKN5Eigen9GpuDeviceE

` Using ubuntu 16.04 cuda10.1 py2.7 tf1.14

BTW, when I do pip install . There is an error ` Complete output (50 lines): running bdist_wheel running build -- The CXX compiler identification is GNU 4.9.3 -- The CUDA compiler identification is unknown -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at CMakeLists.txt:7 (project): The CMAKE_CUDA_COMPILER:

  /user/local/cuda/bin/nvcc

is not a full path to an existing compiler tool.

After edit /etc/environment and SET CMAKE_CUDA_COMPILER in the cmakelists.txt. I still got the error. So I changeproject(dirt LANGUAGES CXX CUDA)toproject(dirt)` and successfully installed dirt. Would this cause the UNDEFINED SYMBOL above?

pmh47 commented 5 years ago

Changing the project line to not include CUDA might cause that error. The original problem of CMAKE_CUDA_COMPILER not being found should be easy to fix though. Assuming you have nvcc installed and working, just run which nvcc to confirm its location, and set CUDACXX environment variable equal to that, e.g. export CUDACXX=/usr/local/cuda/bin/nvcc before pip install .. Note in your post, you use /user/local... instead of /usr/local... which would be unusual.

Taye310 commented 5 years ago

Problem solved by making my nvcc work properly. Thanks!