系统: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
$cmake –D CMAKE_BUILD_TYPE=RELEASE –D 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上的安装配置已全部完成!