From 82363f1b9bfad385cce8254ec9fad23799223e7e Mon Sep 17 00:00:00 2001 From: Zhaiyu Date: Mon, 4 May 2020 23:09:44 +0200 Subject: [PATCH] Fix undefined symbol when compiling tf_ops https://github.com/charlesq34/pointnet2/issues/48#issuecomment-404482115 --- .gitignore | 144 ++++++++++++++++++ .../tf_interpolate_compile.sh | 13 +- tf_ops/3d_interpolation/tf_interpolate_so.so | Bin 46004 -> 48288 bytes tf_ops/grouping/tf_grouping_compile.sh | 12 +- tf_ops/sampling/tf_sampling_compile.sh | 12 +- 5 files changed, 166 insertions(+), 15 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..72793e67 --- /dev/null +++ b/.gitignore @@ -0,0 +1,144 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# data +data/ + +# logs +log/ diff --git a/tf_ops/3d_interpolation/tf_interpolate_compile.sh b/tf_ops/3d_interpolation/tf_interpolate_compile.sh index 34c9fdac..28a61af5 100644 --- a/tf_ops/3d_interpolation/tf_interpolate_compile.sh +++ b/tf_ops/3d_interpolation/tf_interpolate_compile.sh @@ -1,5 +1,16 @@ # TF1.2 -g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0 +#g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0 # TF1.4 #g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -I /usr/local/lib/python2.7/dist-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-8.0/lib64/ -L/usr/local/lib/python2.7/dist-packages/tensorflow -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=0 + +# TF1.8 +#g++ -I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I /home/zhaiyu/.conda/envs/pointnet2_tf/lib/python3.5/site-packages/tensorflow/include -I /usr/local/cuda/include -lcudart -L /usr/local/cuda/lib64/ -O2 + + +#/bin/bash +CUDA_ROOT=/usr/local/cuda-10.1 +TF_ROOT=/home/zhaiyu/.conda/envs/pointnet2_tf/lib/python3.5/site-packages/tensorflow +#/usr/local/cuda-10.1/bin/nvcc -std=c++11 -c -o tf_grouping_g.cu.o tf_grouping_g.cu -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC +#TF 1.8 +g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I ${TF_ROOT}/include -I ${CUDA_ROOT}/include -I ${TF_ROOT}/include/external/nsync/public -lcudart -L ${CUDA_ROOT}/lib64/ -L ${TF_ROOT} -ltensorflow_framework -O2 #-D_GLIBCXX_USE_CXX11_ABI=0 \ No newline at end of file diff --git a/tf_ops/3d_interpolation/tf_interpolate_so.so b/tf_ops/3d_interpolation/tf_interpolate_so.so index 52eb1710feb7d20c1ae56195334294bd01b66575..1861c4e15c836aabe63e2fe4412421ff65e786f0 100755 GIT binary patch literal 48288 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