PointCNN icon indicating copy to clipboard operation
PointCNN copied to clipboard

A problem about tf complie

Open MrCrazyCrab opened this issue 6 years ago • 6 comments

i succeed in compiling the file of .so, but when i run the program of train_val_seg.py, there is a warning that the tf_sampling_so.so could not be found for undefined symbol: _ZN10tensorflow12OpDefBuilder4AttrESs. i'm confused about the problem and i failed to find a way to solve it. So i wonder whether you know how to solve this problem? i use tensorflow 1.13.1 cuda10.0, anaconda 10.130 and spyder 3.3.6. Hoping for you reply, thanks!

MrCrazyCrab avatar Aug 14 '19 10:08 MrCrazyCrab

I am having the same issue. I expect this to be caused by the cuda version mismatch: this library was intended to work with cuda9 instead of cuda10. That said, I have no idea how to solve this issue, except from to downgrade the nvidia drivers, cuda, and tensorflow version (which I'd rather avoid)

TCherici avatar Aug 16 '19 08:08 TCherici

Hi all, We just tested our code on tf 1.6, cuda8, python3.5, I'm not sure tensorflow custom op can work on tf1.13.1, cuda10.0.

burui11087 avatar Sep 05 '19 02:09 burui11087

Try use the following command and adjust as necessary

#/bin/bash
PYTHON=python
CUDA_PATH=/usr/local/cuda-10.0
TF_LIB=$($PYTHON -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
TF_PATH=$TF_LIB/include
$CUDA_PATH/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC
g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -L$TF_LIB -ltensorflow_framework -I $TF_PATH/external/nsync/public/ -I $TF_PATH -I $CUDA_PATH/include -lcudart -L $CUDA_PATH/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0


ronykalfarisi avatar Sep 05 '19 14:09 ronykalfarisi

I could solve it at my end by removing -D_GLIBCXX_USE_CXX11_ABI=0 I am on CUDA 9.0 and tensorflow 1.10.1

The modified sh file look like below:

#/bin/bash PYTHON=python3 CUDA_PATH=/usr/local/cuda TF_LIB=$($PYTHON -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())') #PYTHON_VERSION=$($PYTHON -c 'import sys; print("%d.%d"%(sys.version_info[0], sys.version_info[1]))') TF_PATH=$TF_LIB/include $CUDA_PATH/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=0 -x cu -Xcompiler -fPIC g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -L$TF_LIB -ltensorflow_framework -I $TF_PATH/external/nsync/public/ -I $TF_PATH -I $CUDA_PATH/include -lcudart -L $CUDA_PATH/lib64/ -O2

sayakgis avatar Sep 19 '19 08:09 sayakgis

According to https://github.com/yulequan/PU-Net/issues/13 I solved this problem simply by remove "D_GLIBCXX_USE_CXX11_ABI=0" in the .sh file. By the way, I am using conda environment with tf1.6 and cuda10.0

xuye-z avatar Dec 12 '19 02:12 xuye-z

According to yulequan/PU-Net#13 I solved this problem simply by remove "D_GLIBCXX_USE_CXX11_ABI=0" in the .sh file. By the way, I am using conda environment with tf1.6 and cuda10.0

Hello, can you tell me your version of Python?

CVerUser avatar Mar 09 '21 12:03 CVerUser