ubuntu16.04配置caffe+cuda8.0+cudnn5.1

本文详细介绍了在Ubuntu16.04系统上配置CUDA8.0、CUDNN5.1以及安装caffe的步骤。包括禁用nouveau、安装GPU驱动、配置cuda环境变量、解决caffe找不到cuda库的问题,以及cuDNN的安装和 caffe的编译过程。过程中提到了可能出现的问题及其解决方法。
摘要由CSDN通过智能技术生成

系统:ubuntu16.04
cuda版本:8.0
cudnn版本:5.1

Step 1:安装GPU驱动

1.1 首先使用下面这条命令检查你的电脑上有那些显卡,

$ lspci -k | grep -A 2 -i "VGA"

比如我的显示是这样的,

01:00.0 VGA compatible controller: NVIDIA Corporation Device 1b80 (rev a1)
    Subsystem: Gigabyte Technology Co., Ltd Device 3702
    Kernel driver in use: nouveau

1.2 然后查看哪一个驱动是系统推荐安装的,

$ sudo ubuntu-drivers devices

比如我的是这样的,

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001B80sv00001458sd00003702bc03sc00i00
vendor   : NVIDIA Corporation
driver   : xserver-xorg-video-nouveau - distro free builtin
driver   : nvidia-375 - distro non-free recommended

== cpu-microcode.py ==
driver   : intel-microcode - distro non-free

从中可以看出,推荐安装的是nvidia-375版本的显卡驱动

1.3 禁用nouveau

$ sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

在最后加入两行,

blacklist nouveau 
options nouveau modeset=0 

命令行执行,

$ sudo update-initramfs -u

修改后需要重启系统。

1.4 确认nouveau是否已经被干掉,使用命令,

$ lsmod | grep nouveau

如果没有显示内容,则说明禁用成功。

1.5 安装GPU驱动
按ctrl+alt+F1进入tty1,关闭桌面服务

$ sudo service lightdm stop

添加graphics driver ppa

$ sudo add-apt-repository ppa:graphics-drivers/ppa

第一次运行,可能会出现警告,回车后继续执行下列命令

$ sudo apt-get update
$ sudo apt-get install nvidia-384

重启桌面服务,按ctrl+alt+F7
查看GPU相关信息

$ nvidia-smi

Step 2:安装cuda8.0版本

cuda是nvidia的编程语言平台,所以想使用GPU必须要安装cuda。
2.1 cuda官网下载相应版本的安装程序,https://developer.nvidia.com/cuda-downloads
这里,我选择的是run文件类型

这里写图片描述

下载完成后,进入到cuda的下载目录,执行如下语句,运行runfile文件,

$sudo sh cuda_8.0.61_375.26_linux.run

安装过程中,首先会有个阅读声明,一直按空格直至100%,最后accept即可。尤其注意的是接下来会提示是否安装GPU驱动(install nvidia accelerated Graphics Driver),这里一定要选择否,因为前面我们已经单独装过了。其余的选择yes即可。

2.2 配置环境变量,我们直接放在系统配置文件profile里面,首先打开profile文件

$ sudo gedit /etc/profile

在最后面加入两行代码,这里一定要注意你的cuda版本

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}}

2.3测试cuda是否安装成功
(a) 查看dev文件下是否生成了四个左右以nvidia开头的文件夹,

$ ls /dev/nvidia*

(b) 检查cuda toolkit是否安装成功

$ nvcc -V

会输出cuda的版本信息。如果cuda安装不成功,需要卸载重装,卸载命令如下,

$ sudo /usr/local/cuda-7.5/bin/uninstall_cuda_7.5.pl
$ sudo /usr/bin/nvidia-uninstall

(c) 测试cuda的samples程序
进入到Samples安装目录,然后在该目录下终端输入make命令,执行完成后,可以在Samples里面找到bin/x86_64/linux/release/目录,并切换到该目录下,运行deviceQuery程序,

$ sudo ./deviceQuery

查看输出结果,重点关注最后一行,pass表示测试通过。运行bandwidthTest程序

$ sudo ./bandwidthTest

查看输出结果,显示结果为pass表示通过测试

若完成以上步骤,说明安装成功!

2.4遇到的问题
问题一:按照上面的步骤测试cuda已经成功安装cuda,并测试成功,但在后期caffe安装过程中会提示找不到cuda相关的运行库,所以将cuda的库目录添加到链接文件中。

执行以下命令创建链接文件,

$ sudo gedit /etc/ld.so.conf.d/cuda.conf

在新打开的文件中添加cuda库目录,

/usr/local/cuda-8.0/lib64

Step 3:安装cuDNN

cuDNN是GPU加速计算深层神经网络的库。首先去cuDNN官网下载cuDNN https://developer.nvidia.com/rdp/cudnn-download
我下载的是cuDNN5.1 for CUDA8.0版本的,

这里写图片描述

进入cuDNN5.1下载目录后解压,并进入cuDNN解压后的include目录下,执行命令

$ cd cuda/include
$ sudo cp cudnn.h /usr/local/cuda/include  #复制头文件

再进入lib64目录下的动态文件进行复制和链接,

cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接

建立软链接,尤其注意生成的libcdnn的版本,要根据自己的自行调整

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5  #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

至此,cudann配置完成!

Step4:安装caffe

1.1 下载caffe

$ sudo git clone https://github.com/BVLC/caffe.git

1.2 安装第三方库

$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libprotobuf-dev
$ sudo apt-get install libleveldb-dev
$ sudo apt-get install libsnappy-dev
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install libhdf5-serial-dev
$ sudo apt-get install libgflags-dev
$ sudo apt-get install libgoogle-glog-dev
$ sudo apt-get install liblmdb-dev
$ sudo apt-get install protobuf-compiler

1.3 安装opencv
首先从opencv官网下载opencv的源码:https://opencv.org/releases.html 然后根据自己的需求选择合适的版本下载,尤其注意的是opencv第二代和第三代的版本稍有区别,主要是有些函数搬动至库imgcodecs中,在caffe的配置中也稍有区别,后文会提到。本文以opencv2.4.13版本为例,

这里写图片描述
安装opencv依赖项

sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev 

依次执行以下命令,安装opencv,

$cd [opencv_root_dir]
$mkdir release
$cd release
$cmakeD CMAKE_BUILD_TYPE=RELEASED CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON  ..
$make –j4
$sudo make install
$sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
$sudo ldconfig

这里使用BUILD_TIFF选项是因为后来执行的时候会提示一个关于tiff的错误,所以这里编译opencv的时候选择编译TIFF。

这里再列一下如何卸载opencv,

$cd [opencv_root_dir]/release
$sudo make uninstall
$cd ..
$sudo rm -r release
$sudo rm -r 
/usr/local/include/opencv2 /usr/local/include/opencv 
/usr/include/opencv /usr/include/opencv2
/usr/local/share/opencv /usr/local/share/OpenCV 
/usr/share/opencv /usr/share/OpenCV 
/usr/local/bin/opencv* /usr/local/lib/libopencv*

最后一条删除命令里面罗列的路径可能不是都存在,根据各自情况进行删除。

1.4 编译caffe

cd ~/caffe
sudo cp Makefile.config.example Makefile.config

打开并修改Makefile.config文件

$ sudo gedit Makefile.config

修改1:将 #USE_CUDNN:=1 前面的注释去掉,改成 USE_CUDNN:=1
修改2:如果只是使用CPU,则将CPU_ONLY=1前面的注释打开,GPU模式则不要打开
修改2:修改INCLUDE_DIRS中hdf5.h和hdf5_hl.h文件路径

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include 
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/lib

打开并修改Makefile文件
修改1:将

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

修改为

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

修改2: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

编译caffe,

$ make all

++++++++++++++++++ Problem one ++++++++++++++++++
在编译caffe的时候,可能会出现各种找不到文件的情况。这种情况的一种解决方式是改变Makefile.config中的路径。
比如,在编译caffe的时候提醒找不到hdf5.h或者hdf5_hl.h , 错误提示为:
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory

这时使用命令sudo find / -name hdf5.h 和sudo find / -name hdf5_hl.h , 找到相应的路径之后,把路径加到Makefile.config中。

比如,我的hdf5.h的路径为:
/usr/include/hdf5/serial/hdf5.h ,
则修改Makefile.config中的项“INCLUDE_DIRS”为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial \
/usr/local/include

++++++++++++++++++ Problem Two ++++++++++++++++++
“libcudnn.so.5 cannot open shared object file: No such file or directory”
解决办法是将一些文件复制到/usr/local/lib文件夹下,尤其注意cuda的版本号

$ sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

测试caffe是否编译成功,出现如下界面,说明caffe安装成功!

$ make runtest

这里写图片描述

至此,caffe在ubuntu上的安装配置已全部完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值