在安装caffe GPU之前你需要先安装nvidia driver、然后安装cuda+cudnn、最后安装opencv
第一步 安装相关依赖库
sudo apt-get --assume-yes install build-essential
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
# Python libs
sudo -H pip install --upgrade numpy protobuf
第二步 下载caffe
下载caffe
- 使用Git直接下载Caffe
git clone https://github.com/BVLC/caffe.git
- 或者去github download下载。
unzip caffe-master.zip
,用unzip命令解压,
mv caffe-master caffe
, 然后重命名为caffe
切换到caffe所在的目录cd caffe
第三步 修改Makefile.config
首先将Makefile.config.example的内容复制到Makefile.config
sudo cpMakefile.config.example Makefile.config
因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子修改配置文件Makefile.config:
sudo vi Makefile.config
#打开Makefile.config文件 根据个人情况修改文件
应用 cudnn
将#USE_CUDNN := 1
修改成USE_CUDNN := 1
应用 opencv 版本 如果opencv的版本是3。那么将#OPENCV_VERSION := 3
修改为:OPENCV_VERSION := 3
,但是我们opencv的版本是2,故应不修改。
使用 python 接口
将#WITH_PYTHON_LAYER := 1
修改为WITH_PYTHON_LAYER := 1
重要的一项修改,将INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/hdf5/serial
这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。
修改Makefile文件
sudo vi Makefile
#打开Makefile文件,做如下修改
将NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS)
替换为NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉,将#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
改为:
//#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
第四步 编译
1. sudo make all
2. sudo make test
第五步 测试
如果上面两步无报错,则测试
sudo make runtest
结果发现竟然报错了
这个错误的原因其实是因为,我们在前面的博客中安装cuda时有一步,cuda环境配置
上图中将cuda环境配置在用户目录下,但是我们sudo runtest
是用的root用户,故报错 libcudart.so.8.0 cannot open shared object file, 因此我们应该用下面命令测试
make runtest
结果如图
环境
- GTX970M,nvidia版本nvidia-384
- ubuntu 16.04
- cuda8.0 + cudnn5.1
- opencv 2.4