Ubuntu16.04下安装Caffe记录(GPU)

时间:2023-01-07 06:27:00

前言

之前都是在使用CPU版本的Caffe,但是在进行模型训练和测试的时候就显得有点力不从心了。因而这次在另外一台电脑上安装Caffe(软硬环境为:Ubuntu 16.04 64bit,I7 7700K,GTX1080,32G)。
期间也参考了很多网友的博客,这里经过自己实践之后,将我本次安装成功的经过记录下来。

0. 安装Caffe附属依赖库

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

1. 安装显卡驱动

安装CUDA驱动这里没有采取有些网友提供的比较复杂的安装方式,这里采用的是窗口界面操作。首先

sudo apt-get update

之后进入如下的菜单:系统设置→软件更新→附加驱动→选择nvidia最新驱动→应用更改。进行如下的选择,之后点击Apply,安装完成之后重启
Ubuntu16.04下安装Caffe记录(GPU)
再重启之后在命令行输入:

nvidia-settings

就会出现如下界面
Ubuntu16.04下安装Caffe记录(GPU)
要是还需进一步检验安装的正确性,可以输入如下命令,查看显卡信息,结果类似下面这张图,这不是我使用的显卡信息

sudo nvidia-smi

Ubuntu16.04下安装Caffe记录(GPU)

2. 安装CUDA 8.0

这里选用的CUDA是8.0 G2的版本,现在最新的是CUDA 9.0了。首先是下载(地址:https://developer.nvidia.com/cuda-downloads),这个页面默认是最新的版本,其他的版本可以在发布历史中去找到。
下载完成之后,进入到安装包所在的目录里面去,执行安装命令:

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

PS: 有些人可能会遇到CUDA 8.0不支持gcc>=5.0.0的问题(我安装时没遇到),这时需要进行降级

sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sud oupdate-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++

安装完成之后,就开始进行环境配置
打开~/.bashrc文件:

sudo vim ~/.bashrc

将以下内容写入到~/.bashrc尾部:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

在/etc/profile文件中添加CUDA环境变量:

sudo vim /etc/profile

打开文档都在文档结尾加上下面两句:

export PATH=/usr/local/cuda/bin:$PATH  

保存后, 执行下列命令, 使环境变量立即生效:

source /etc/profile

同时添加lib库路径,在 /etc/ld.so.conf.d/新建文件 cuda.conf

sudo vim /etc/ld.so.conf.d/cuda.conf

在文中加入下面内容:

/usr/local/cuda/lib64

执行下列命令使之立刻生效:

sudo ldconfig

测试CUDA Sample
输入如下命令:

cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

最后运行结果passed那就没问题了。

3. 安装CuDNN 6.0

cuDNN是GPU加速计算深层神经网络的库,下载地址是( https://developer.nvidia.com/rdp/cudnn-download),这里选择的版本是6.0的版本,下载好的文件时一个*.tgz的文件。安装命令如下

tar -xvf cudnn-8.0-linux-x64-v6.0.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*

环境变量配置

sudo vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda/bin:$PATH

source ~/.bashrc

4. 安装Opencv 3.0

Opencv这里采用的是3.0的版本,下载好之后,进入到下载目录执行安装命令

unzip opencv-3.1.0.zip
cd opencv-3.0.0/
mkdir build && cd build
cmake ..
ccmake ..

之后在选择页面设置:CMAKE_BUILD_TYPE=Release、CMAKE_INSTALL_PREFIX=/usr/local,之后先按C键,再按G键生成Makefile文件。
PS: 这里使用的是CUDA 8.0,在编译Opencv的时候会报错(这里使用这位网友的图,错误都是一样的):
Ubuntu16.04下安装Caffe记录(GPU)
这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:
Ubuntu16.04下安装Caffe记录(GPU)
将原有的行修改为:

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)

接下来继续安装Opencv

make -j10
sudo make install

5. 配置并编译Cafffe

去Github上下载Caffe,之后编辑Makefile.config文件,修改的项为:

#USE_CUDNN := 1修改成:USE_CUDNN := 1
#OPENCV_VERSION := 3修改为:OPENCV_VERSION := 3
c使用python来编写layer,#WITH_PYTHON_LAYER := 1修改为WITH_PYTHON_LAYER := 1

重要的一项
将# Whatever else you find you need goes here. 下面的

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

这里修改Makefile文件
修改为:

LIBRARIES+= glog gflags protobuf leveldb snappy lmdbboost_system hdf5_hl hdf5 opencv_coreopencv_highgui opencv_imgproc opencv_imgcodecs

执行安装:

make all –j8
make test –j8
make runtest –j8

PS: 这里在执行runtest的之后报错,说找不到Opencv的相关动态链接库,具体的问题没有截图。解决办法就是找到Opencv的安装目录一般在/usr/local下,将Opencv的lib目录添加在~.bashrc中,再source ~.bashrc解决该问题。

6. 编译PyCaffe

操作的话跟本人的这篇博文类似:Ubuntu14.04下编译pycaffe并绘制网络结构图
若当中遇到下载特别慢的情况,可以采用本人这篇博客进行解决:Ubuntu设置Python镜像源
最后安装好之后,配置环境变量,以便python调用:

sudo vim ~/.bashrc

将export PYTHONPATH=/home/caffe/python:$PYTHONPATH添加到文件中

source ~/.bashrc

7. 参考

  1. ubuntu 16.04 安装Tensorflow(CPU和GPU)
  2. Ubuntu16.04 14.04安装配置Caffe(GPU版)