本文主要介绍在Ubuntu16.04环境下,使用GTX1070显卡安装CUDA8.0和Caffe。GTX1070目前只支持CUDA8.0,现在发行的CUDA8.0可以用于Ubuntu16.04和14.04两个版本,所以在选择安装时,本文采用Ubuntu16.04+CUDA8.0的搭配。在安装CUDA8.0时,本文采用.run的方法,采用.deb的方法会出现很多问题,所以建议在安装CUDA时采用.run的方法。使用Ubuntu16.04会牵扯到gcc/g++版本的问题,在16.04下用低版本编译caffe会出现很多问题,所以在安装各个平台时,不对gcc/g++进行降级处理,注释掉各个平台相应报错部分。
本文在此次安装中用到的所有平台有:Ubuntu16.04、CUDA8.0、cudnn v5.0、Intel Parallel StudioXE Cluster 2017、OpenCV 3.0.0。本文没有使用matlab,因为牵扯到Ubuntu16.04的gcc/g++版本过高,matlab要求与之相配的gcc/g++版本,并且现在多使用python,所以没有安装matlab,如果读者想要安装matlab,可以对gcc/g++进行降级处理,再来安装。
机器配置:CPU:i53750 3.4GHz,内存8G,GPU GTX1070,硬盘500G
感谢欧新宇老师博客指导以及网上的各种教程
一、Ubuntu安装
Ubuntu16.04下载地址为:https://www.ubuntu.com/download/desktop。读者可以安装双系统,也可以单独安装Ubuntu16.04。双系统的安装方法请参考欧新宇老师博客http://blog.csdn.net/shiorioxy/article/details/52652831。本文在此次安装中单独使用Ubuntu16.04(硬盘太小)。
二、NVIDIA驱动安装
1) 驱动下载
NVIDIA-Linux-x86_64-367.44.run可以到http://www.geforce.com/drivers,搜索GTX1070驱动,下载保存。
2) 驱动安装
Ctrl+alt+F1进入字符界面,关闭图形界面输入用户名和密码
sudo servicelightdm stop //这一步非常重要,不然后面无法安装
sudo chmod755 NVIDIA-Linux-x86_64-367.44.run //获取权限
sudo./NVIDIA-Linux-x86_64-367.44.run //安装驱动
安装完成后输入
sudo servicelightdm strat //恢复到图形界面
三、CUDA8.0的安装
1) cuda_8.0.27_linux.run的下载
cuda_8.0.27_linux.run下载地址为:https://developer.nvidia.com/cuda-downloads,下载runfile文件,并保存。
2) cuda_8.0.27_linux.run安装
cuda8.0不支持gcc/g++5.3以上版本,所以在安装时,对gcc/g++进行降级处理或者是采用下面方法。
sudo shcuda_8.0.27_linux.run --override //使用override来安装
会出现一些协议之类的东西,按q退出或是按space一直到100%。然后accept
在安装的过程中或出现一些选项:
Install NVIDIA AcceleratedGraphics Driver for Linux-x86_64 361.62?
(y)es/(n)o/(q)uit: n //这里一定选n,要不前面的驱动都白装了
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.0]: //这里直接按enter,会出现下面的选项
Do you want to install a symboliclink at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /home/DL]: //这里也直接enter,DL是我存放CUDA的文件夹
Installingthe CUDA Toolkit in /usr/local/cuda-8.0 …
开始安装
四、安装cudnnv5.0
1) cudnn-8.0-linux-x64-v5.0.tgz的下载
cudnn-8.0-linux-x64-v5.0.tgz,下载地址为https://developer.nvidia.com/cudnn。
2) cudnn-8.0-linux-x64-v5.0.tgz的安装
cudnn-8.0-linux-x64-v5.0.tgz的安装非常简单,在cudnn-8.0-linux-x64-v5.0.tgz的文件下打开终端,输入:
tar zxvfcudnn-8.0-linux-x64-v5.0.tgz
cd cuda
cdcuda/include/
sudo cpcudnn.h /usr/local/cuda/include/ 复制头文件
cd ../lib64 打开lib64目录
sudo cp lib*/usr/local/cuda/lib64/ 复制库文件
sudo chmoda+r /usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*给所有用户增加这些文件的读权限安装
建立软连接
cd /usr/local/cuda/lib64/
sudo rm -rflibcudnn.so libcudnn.so.5
sudo ln -slibcudnn.so.5.1.5 libcudnn.so.5
sudo ln -slibcudnn.so.5 libcudnn.so
3) 设置变量环境
终端输入:
PATH=/usr/local/cuda/bin:$PATH
export PATH
sudo gedit/etc/profile
按i插入,将上面export两句加到末尾,esc退出编辑,然后按:,wq保存
sudo vim/etc/ld.so.conf.d/cuda.conf
插入下面语句
/usr/local/cuda/lib64
退出
sudoldconfig //环境变量立即生效
nvidia-smi //查看驱动版本
nvcc –v
输出:
NVIDIA (R)Cuda compiler driver Copyright (c) 2005-2016
NVIDIACorporation Built on Sun_Oct__4_15:23:36_CDT_2016 Cuda
compilationtools, release 8.0, V8.0.26
4) 测试CUDA
cd/home/deeplearning/NVIDIA_CUDA-8.0_Samples //deeplearning是我的用户名
sudo make all-j4 //使用cpu4核编译
出现“unsupported GNU version! gccversions later than 5.3 are not supported!”的错误,这是由于GCC版本过高,在终端输入
cd /usr/local/cuda-8.0/include
sudo cphost_config.h host_config.h.bak
sudo gedithost_config.h
ctrl+f寻找有“5.3”的地方,只有一处,如下
# if __GNUC__> 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)
#error --unsupported GNU version! gcc versions later than 5.3 are not supported! 将两个5改成6,即
#if __GNUC__> 6 || (__GNUC__ == 6 && __GNUC_MINOR__ > 3)
也可以将其//注释掉
保存退出,继续在终端输入
cd/home/pawn/NVIDIA_CUDA-8.0_Samples (pawn是我的用户名)
sudo make all-j4 (4核)
完成后继续向终端输入
cdbin/x86_64/linux/release
./deviceQuery
最后出现PASS说明安装成功
五、Intel Parallel Studio XE Cluster2017
1) IntelParallel Studio XE Cluster 2017的
这里本文采用mkl数学内核库,Intel Parallel Studio XE Cluster 2017的下载地址为https://software.intel.com/en-us/qualify-for-free-software/student,这里申请要使用edu邮箱申请学生版。
2) IntelParallel Studio XE Cluster 2017
tar zxvfparallel_studio_xe_2016.tar.gz
chmod a+xparallel_studio_xe_2016 -R //获得权限
shinstall_GUI.sh //图形界面安装
建议使用root权限安装,中间一项
建立连接
sudo gedit/etc/ld.so.conf.d/intel_mkl.conf
添加
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
/lib
sudo ldconfig -v
六、OpenCV3.0.0安装
1) OpenCV3.0.0的下载可以到官方网站http://opencv.org/下载,如果使用shell文件下载可能会比较慢,所以直接在win下下载好OpenCV3.0.0.zip文件。
2) http://pan.baidu.com/s/1qX1uFHa,从欧新宇老师百度云中下载Install-opencv-master文件。
sudo shUbuntu/dependencies.sh //下载必要的依赖
这里可能由于网速的原因有的无法下载,输入
sudo apt-get--fix-missing //获取无法下载连接
在此输入
sudo shUbuntu/dependencies.sh
直到所有的依赖下载完毕并安装好
打开opencv3_0_0.sh文件
按照里面的命令下载依赖(里面的网址就是下载opencv3.0.0的,所以不用执行),然后
按opencv3_0_0.sh里面的命令建立build文件,编译,在这里会遇到ippicv_linux_20141027.tgz文件下载的问题(还是看网速),如果无法下载成功,就到网上搜素该文件,下载然后将其拷贝到相应文件夹下,输入
Cp ippicv_linux_20141027.tgz/home/zhou/opencv3.0/OpenCV/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b
然后解决opencv与cuda8.0兼容问题
cd /home/zhou/opencv3.0/OpenCV/opencv-3.0.0/modules/cudalegacy/src
sudo vi graphcuts.cpp
打开文件后会看到
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
将其改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)|| (CUDART_VERSION >= 8000)
然后在按照opencv3_0_0.sh文件命令编译安装
七、Caffe的安装
1) 首先安装必要的依赖
sudo apt-get update
sudo apt-get install -y build-essential cmake gitpkg-config
sudo apt-get install -y libprotobuf-devlibleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y--no-install-recommendslibboost-all-dev
sudo apt-get install -y libgflags-devlibgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-pip
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
同样确保所有依赖文件都安装完毕
2) 到caffe的github下载caffe文件https://github.com/BVLC/caffe。
3) 在caffe-master文件夹下打开终端输入
cp Makefile.config.example Makefile.config
配置Makefile.config文件
去掉#USE_CUDNN := 1的#
去掉# OPENCV_VERSION=3的#
BLAS := mkl //我们用的是mkl数学库
PYTHON_LIB := /usr/local/lib //这里只是用python。Matlab按照安装相应路径进行修改
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_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的位置,所以需要更改这一路径
保存退出
cd /usr/local/cuda/include/host_config.h
sudo vi host_config.h
找到#error-- unsupportedGNU version! gcc versions later than 5.3 are not supported!注释掉,改为
//#error-- unsupported GNU version! gcc versionslater than 5.3 are not supported!
至此所有的安装结束,接下来进行caffe的编译
make all –j8
make test –j8
make runtest –j8
make pycaffe –j8 //多少核根据cpu来订
运行mnist进行测试
sh data/mnist/get_mnist.sh
sh examples/mnist/create_mnist.sh
sh examples/mnist/train_lenet.sh
参考文献:
http://www.2cto.com/os/201607/528798.html
http://blog.csdn.net/shiorioxy/article/details/52652831
http://blog.csdn.net/wopawn/article/details/52302164
http://blog.csdn.net/xuzhongxiong/article/details/52717285
http://blog.csdn.net/autocyz/article/details/52299889
http://blog.csdn.net/hjimce/article/details/51999566