最近在学习OpenPCDet,需要安装spconv库,这里总结一下安装过程。

github链接:GitHub - traveller59/spconv: Spatial Sparse Convolution in PyTorch

spconv1.0安装步骤

服务器环境

操作系统版本:Ubuntu 18.04
GPU:RTX3070
CUDA版本:11.1
CUDNN版本:8.0.5
Pytorch:1.8
Python:3.6
gcc版本:7.5.0(g++4.8.5,c++14需要g++5.2以上)
cmake版本:3.13.2及以上

在开始安装之前,需要确定自己的系统是否已经安装好cuda,和cudnn等。确认cuda版本的方法,ctrl+alt+t打开你的terminal,输入:

nvcc -V

​注意cudnn一定要与cuda版本对应,否则安装时会报错
cudnn下载链接:cuDNN Archive | NVIDIA DeveloperNVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.https://developer.nvidia.com/rdp/cudnn-archive

1.克隆代码(链接给的是spconv1.2最新版,翻看issues可寻找之前版本代码

git clone https://github.com/traveller59/spconv spconv_8da6f96 --recursive

2.检查third_party/pybind11包中是否为空,如果是空的,则需要单独下载其中的文件并放入pybind11中。pybind11链接:

https://github.com/pybind/pybind11/tree/3b1dbebabc801c9cf6f0953a4c20b904d444f879

3.安装依赖

sudo apt-get install libboost-all-dev

4.等待安装完成后,若无报错,则

cd ./dist

5.安装spconv(先ls看一下自己的文件名,然后pip install XX

#ls之后会显示你的whl文件的名称,复制下来用pip install安装
#换成自己的whl文件名字
pip install spconv-1.2.1-cp36-cp36m-linux_x86_64.whl

安装过程中可能出现的错误:

①No CMAKE_CUDA_COMPILER could be found.

可能会出现如下错误:
/home/sdb1/zyan/lulu/lib/python3.7/site-packages/setuptools/distutils_patch.py:26: UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may exhibit undesirable behaviors or errors. Please use Setuptools' objects directly or at least import Setuptools first.
  "Distutils was imported before Setuptools. This usage is discouraged "
running bdist_wheel
running build
running build_py
running build_ext
Release
|||||CMAKE ARGS||||| ['-DCMAKE_PREFIX_PATH=/home/sdb1/zyan/lulu/lib/python3.7/site-packages/torch', '-DPYBIND11_PYTHON_VERSION=3.7', '-DSPCONV_BuildTests=OFF', '-DPYTORCH_VERSION=10600', '-DCMAKE_CUDA_FLAGS="--expt-relaxed-constexpr" -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/sdb1/zyan/lulu/spconv-1.2/build/lib.linux-x86_64-3.7/spconv', '-DCMAKE_BUILD_TYPE=Release']
-- The CUDA compiler identification is unknown
CMake Error at CMakeLists.txt:6 (project):
  No CMAKE_CUDA_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CUDACXX" or the CMake cache entry CMAKE_CUDA_COMPILER to the full
  path to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!
See also "/home/sdb1/zyan/lulu/spconv-1.2/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log".
See also "/home/sdb1/zyan/lulu/spconv-1.2/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeError.log".
Traceback (most recent call last):

解决方法:问题还是cuda和cudnn版本不对应,从上文链接中下载cudnn对应版本(建议选择cuDNN Library for Linux (x86_64)类型)

解压下载文件:

cd 下载(下载cudnn所在的文件夹)
tar -xvf cudnn-10.0-linux-x64-v7.3.1.20.tgz(换成你的文件名字)

执行以下命令(路径是自己安装cuda的路径,根据自己的更改就好):

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

再pip安装即可。

②Found cuDNN: v?

#可能出现以下错误
running build
running build_py
running build_ext
Release
|||||CMAKE ARGS||||| ['-DCMAKE_PREFIX_PATH=/home/zjy/anaconda3/envs/pcdet/lib/python3.6/site-packages/torch', '-DPYBIND11_PYTHON_VERSION=3.6', '-DSPCONV_BuildTests=OFF', '-DPYTORCH_VERSION=10800', '-DCMAKE_CUDA_FLAGS="--expt-relaxed-constexpr" -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/zjy/openpcdet/spconv-master/build/lib.linux-x86_64-3.6/spconv', '-DCMAKE_BUILD_TYPE=Release']
-- Caffe2: CUDA detected: 11.1
-- Caffe2: CUDA nvcc is: /usr/local/cuda-11.1/bin/nvcc
-- Caffe2: CUDA toolkit directory: /usr/local/cuda-11.1
-- Caffe2: Header version is: 11.1
-- Found CUDNN: /usr/local/cuda-11.1/lib64/libcudnn.so  
-- Found cuDNN: v?  (include: /usr/local/cuda-11.1/include, library: /usr/local/cuda-11.1/lib64/libcudnn.so)
CMake Error at /home/zjy/anaconda3/envs/pcdet/lib/python3.6/site-packages/torch/share/cmake/Caffe2/public/cuda.cmake:174 (message):

解决方法:有些cudnn的版本文件不在cudnn.h里,而在cudnn_version.h里,需要将cudnn_version.h文件复制过去

sudo cp cuda/include/cudnn_version.h /usr/local/cuda/include/

然后再pip安装即可

6.检查是否安装成功

python
import spconv

可以导入则安装成功。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐