环境:Ubuntu18.04, cuda11.1, cudnn 8.0.4
有两个大坑:
- caffe不支持cudnn 7.5版本以上
- 编译caffe需要用到高版本cmake
1. 首先从GitHub上克隆caffe的项目:
git clone https://github.com/BVLC/caffe.git
2. 编辑编译caffe的配置文件
cd caffe
cp Makefile.config.example Makefile.config
vim Makefile.config
有几个要修改的地方:
提示:使用Vim时可以用/keyword 来查找字段,按回车确认
当不用GPU版本时, # CPU_ONLY:= 1 改为 CPU_ONLY:= 1 (取消注释)
- # WITH_PYTHON_LAYER := 1 改为 WITH_PYTHON_LAYER:=1 (取消注释)
- # USE_CUDNN := 1 改为 USE_CUDNN := 1(取消注释)
- # USE_OPENCV := 0 改为 USE_OPENCV :=1 (取消注释并修改值为1)
- # USE_LEVELDB := 0 改为 USE_LEVELDB:=1,(取消注释并修改值为1)
- # USE_LMDB := 0 改为 USE_LMDB :=1 (取消注释并修改值为1)
PYTHON_INCLUDE 改为python环境的路径及其下include文件夹路径,
仔细看可以看到有anaconda的选项,修改ANACONDA_HOME的值为自己的虚拟环境的文件夹或anaconda文件夹,那么PYTHON_INCLUDE的路径就为ANACONDA_HOME下的include和numpy下的include
PYTHON_LIB 改为python环境路径下的lib文件夹路径
INCLUDE_DIRS 和LIBRARY_DIRS 保持与PYTHON_INCLUDE和PYTHON_LIB一致
- CUDA_DIR := 改为自己的cuda路径,一般为/usr/local/cuda-X.X
这个配置文件可以到这个网址进行下载
github
3. 修改cudnn版本
3.1 因为caffe不支持7.5版本以上的cudnn,因此需要下载7.5.0版本的cudnn
可以到英伟达的cudnn官网下载,下载时需要注册英伟达账户
https://developer.nvidia.com/cudnn
3.2 卸载先前的cudnn
sudo rm /usr/local/cuda-11.1/include/cudnn*
sudo rm /usr/local/cuda-11.1/lib64/libcudnn*
3.3 安装cudnn
sudo cp -r cuda/include/* /usr/local/cuda-11.1/include/
sudo cp -r cuda/lib64/* /usr/local/cuda-11.1/lib64/
3.4 检查cudnn版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果是7.5.0则安装成功
4. 安装新版cmake
如果出现NOTFOUND CUDA_cublas_device_LIBRARY 的错误,解决方法是更新cmake版本,截止至2021年,使用apt安装的cmake是3.10版本,会出现此错误。
4.1 卸载旧版本cmake
sudo apt remove cmake
4.2 下载新版本cmake,可以到cmake官网下载
4.3 编译cmake
./bootstrap
如遇到错误提示,根据提示在configure里添加命令,如提示
CMAKE_USE_OPENSSL
相关错误,则可以在configure文件插入一行,DCMAKE_USE_OPENSSL OFF
4.4 安装cmake
make -j16
make install
5. 编译caffe
cd caffe
mkdir build
cd build
cmake ..
再出现错误就具体情况具体分析
6. 安装caffe
make all -j 16
make test -j 16
make runtest -j 16
make pycaffe -j 16
cd ../ (distribute在caffe的根目录下)
make distribute -j 16
16是线程数,可以根据自己的电脑配置决定
7. 把caffe加入环境变量(~/.bashrc),以便在python中使用
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
具体填写自己的caffe路径
至此可以在python中import caffe了
如果在pycharm中使用远程debug是要注意在python interpreter中添加第7步中/path/to/caffe/python的环境变量,因为默认环境中没有包含caffe,除非你的caffe本身就下载在python的包的文件下中