目录
使用 second.pytorch做3D目标检测的可视化,需要安装spconv,然后就开始了漫长的踩坑路。。。这里记录下来,方便自己以后查阅。
spconv1.2安装步骤
补充:后面我又用pytorch1.3.1安装spconv1.2版本,原因是不想使用系统路径下的cuda而转用个人用户下的cuda(如何装可以参考我的博客)。详细步骤参考下面1.0版本
步骤一:首先需要在CMakeList.txt中添加以下cuda路径,添加在第五行,添加完如下图所示。(或者在setup.py的cmake_args中添加'-DCMAKE_CUDA_COMPILER=/home/gye/cuda100/bin/nvcc')
set(CMAKE_CUDA_COMPILER "/home/gye/cuda100/bin/nvcc")
步骤二:将下面路径文件中usr相关的依赖项全部改成自己路径下的,然后重新运行应该就可以了。如果报错error: ‘RegisterOperators’ is not a member of ‘torch’,将对应文件所在行的中的torch::RegisterOperators改为torch::jit::RegisterOperators即可。
vim ~/anaconda3/envs/PCdet/lib/python3.6/site-packages/torch/share/cmake/Caffe2/Caffe2Targets.cmake
spconv1.0安装步骤
服务器环境
操作系统版本:Ubuntu 18.04
GPU名称:TITAN V
CUDA版本:10.0.130
Pytorch:1.1
Python:3.7
gcc版本:7.5.0(g++4.8.5,c++14需要g++5.2以上。就是这个坑,我第三天才爬出来。。。)
- 如果需要用conda新创建一个虚拟环境,可以直接按照下面操作一步一步来。然鹅我一直用的虚拟环境中安装了好多包,不想再整一个新的,就直接在原来的上面操作了,就跳过了第一步。
conda create --name spconv-1.0 python=3.6 pytorch=1.1 cudatoolkit=9.2 cudatoolkit-dev=9.2 \ cmake --channel pytorch --channel=conda-forge conda activate spconv-1.0 conda install cudnn conda install boost
- 克隆代码,因为我的pytorch是1.1,翻看issues发现1.1要下载如上仓库中的代码,如issues187中提到的。
git clone https://github.com/traveller59/spconv spconv_8da6f96 --recursive
- 这一步没啥好说的,依次执行即可。此步骤结束可先尝试步骤5.1,若报错再尝试步骤4。
cd spconv_8da6f96 git checkout 8da6f967fb9a054d8870c3515b1b44eca2103634
-
步骤4可选,需根据实际情况。若步骤5.1执行后报错“The CUDA compiler "/usr/bin/nvcc" is not able to compile a simple test program.”那就尝试步骤4,首先下载patch文件到服务器(传送门下载,提取码vpba),然后进入patch文件所在文件夹,执行以下命令,再执行步骤5.2,运行之后应该正确显示如下图。
git am <PATH_TO_EXTRACTED_FILE>/0001-Allow-to-specifiy-CUDA_ROOT-directory-and-pick-corre.patch
说明:如果出现下图所示的问题,只需要依次执行下面两条命令即可,例如
git config user.email "LR@example.com" git config user.email "LR"
-
<PATH_TO_YOUR_CONDA_INSTALLATION>是服务器上安装cuda的路径,可使用命令which nvcc查看cuda路径,比如我的是/usr/local/cuda-10.0
#####5.1###### python setup.py bdist_wheel #####5.2###### CUDA_ROOT=<PATH_TO_YOUR_CONDA_INSTALLATION> python setup.py bdist_wheel
然后问题又来了,仍然报错The CUDA compiler is not able to compile a simple test program.而且log下面还有Error running link command: No such file or directory,叫人头秃。后来查看spconv_8da6f96/build/temp.linux-x86_64-3.7/CMakeFiles/目录下的CMakeError.log发现,原因一直都是
如这位博主所说,-std=c++14需要g++5.2以上,然后进行了下面的一系列操作,改用高版本的g++。
###查看服务器上的g++版本### ls /usr/bin/g++* -l
因为服务器上有高版本的g++,重新设置一下软链接就可以了。如果你的电脑上没有高版本,那就需要装一下。
cd /usr/bin ###消除现有的软链接### sudo rm /usr/bin/g++ ###设置新的软链接### sudo ln -s g++-7 g++ ###查看g++版本### g++ -v
PS:下面这部分只是单纯做一下记录,如果你成功运行了命令5.2,无需理会,直接执行步骤6。现在回来再执行5.2的命令发现一个很奇怪的问题,找不到torch包,如下
又执行一遍,问题又不一样了,变成
然后把5.2的命令中/usr/local/cuda-10.0换成/usr/local/cuda,执行,又是找不到torch包。重复执行一遍却成功了。莫名其妙的,这种感觉很不爽。暂时先往下进行
-
依次执行即可。安装完进python解释器导入spconv包import spconv进行测试。不报错,表示安装成功,但是云里雾里,这种感觉很不好。。。先暂时进行到这里,后面用second.pytorch,有问题再回来找
cd dist/ pip install *
参考
g++: 错误:unrecognized command line option ‘-std=c++14’参考这里