sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda
使用vim编辑器在~/.bashrc的最后添加环境变量
~/.bashrc
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc
查看是否安装成功
nvcc -V
按照官网安装
选择cuDNNv x.x.x Library for Linux下载
使用tra -xzvf cundnn-xxxxxx.tgz解压
之后按照官网教程执行以下命令
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 /usr/local/cuda/lib64/libcudnn*
git clone https://github.com/BVLC/caffe.git
1.创建正式的配置文件
cp Makefile.config.example Makefile.config
2.修改配置文件(根据自己的需要使用的去掉注释)
应用cudnn
将 #USE_CUDNN := 1 修改成: USE_CUDNN := 1
应用opencv3
#USE_OPENCV := 1 修改成: USE_OPENCV := 1
将 #OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
(根据Opencv版本改,作者使用的是Opencv3.x版本所以写3)
如果CUDA10.0以上
改为
CUDA_ARCH := -gencode arch=compute_30,code=sm_30
-gencode arch=compute_35,code=sm_35
-gencode arch=compute_50,code=sm_50
-gencode arch=compute_52,code=sm_52
-gencode arch=compute_60,code=sm_60
-gencode arch=compute_61,code=sm_61
-gencode arch=compute_61,code=compute_61
使用 Python 接口
将 #WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER := 1
添加路径
在INCLUDE_DIRS 一项后添加 /usr/include/hdf5/serial
在LIBRARY_DIRS一项后添加
/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
使用多GPU(如果不使用多 gpu也可以不安装)
将 #USE_NCCL := 1 修改为 USE_NCCL := 1
安装 NVCCL
git clone https://github.com/NVIDIA/nccl.git
cd nccl
sudo make install -j8
sudo ldconfig
按完后 根据自己的路径
vim /etc/profile
export LD_LIBRARY_PATH=/home/jxw/jxw/nccl/build/lib/${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
如果上面过程都执行的正确就可以愉快的执行下面的命令
sudo make all -j16
sudo make test -j16
sudo make runtest -j16
sudo make pycaffe -j8
如果安装过程没有报错就可以执行最后一步添加环境变量,注意需要根据自己的caffe路径修改(作者是安装在/home 文件夹下的所以执行以下命令)
vim /etc/profile
export PYTHONPATH=/home/caffe/python:$PYTHONPATH
可以通过以下命令检查是否安装成功
python2.7
然后执行
import caffe
如果没有报错则说明安装成功
修改Makefile.config文件,与安装caffe相似可参照上面内容
vim Makefile.config
make all -j16
make test -j16
make runtest -j16
make pycaffe -j8
全部成功则可以跳过下面内容
Make runtest 应该会碰到错误
作者碰到了两个错误一个 runtest2:的错误和一个runtest3: 的错误
解决方法见下
添加环境变量
vim /etc/profile
export LC_ALL="en_US.UTF-8"
export CUDA_VISIBLE_DEVICES=0 #
然后从新 make all 注意在这之前需要先执行
make clean
作者在使用caffe-ssd训练时碰到了以下问题:
(1) 报错 function 250:
碰到
math_functions.cpp:250 Check failed: a (=b (0 vs -1.19209e-007)
这个错误
修改caffe-ssd/src/caffe/utils/math_functions.cpp
注释掉第250行
将
CHECK_LE(a, b);
改为
// CHECK_LE(a, b);
(2) 训练时卡在
blocking_queue.cpp:50] Data layer prefetch queue empty
不动
注释掉第一个错误的第250行后发现训练卡在上面的语句不动
修改caffe-ssd/src/caffe/utils/sampler.cpp
在第 107 行左右的位置
在原代码
float w_off, h_off;
caffe_rng_uniform(1, 0.f, 1 - bbox_width, &w_off);
caffe_rng_uniform(1, 0.f, 1 - bbox_height, &h_off);
的上面增加
if (bbox_width>=1.0){
bbox_width=1.0;
}
if (bbox_height>=1.0){
bbox_height=1.0;
}
并将
caffe_rng_uniform(1, 0.f, 1 - bbox_width, &w_off);
caffe_rng_uniform(1, 0.f, 1 - bbox_height, &h_off);
修改为
caffe_rng_uniform(1, 0.f, 1.0f - bbox_width, &w_off);
caffe_rng_uniform(1, 0.f, 1.0f- bbox_height, &h_off);
这两个解决方法也是作者在
https://github.com/weiliu89/caffe/issues
中搜索找到的
碰到其他问题也可以在里面搜索错误号寻找解决办法
碰到Undefined reference to ‘__cudaPopCallConfiguration’问题
可以在caffe 文件夹下/usr/local/cuda/lib64
ldd build/lib/libcaffe.so | grep cudart
查看cuda 对应so版本
如果不对
需要修改
/usr/lib/x86_64-linux-gnu
中所有 cudaart
替换为
/usr/local/cuda/lib64
中所有cudaart