由于最近安装了Ubuntu 16.04,苦于之前配置Caffe的教程都在版本14.04左右,无奈只能自己摸索,最终配置成功。本文教程的特点是不需要降级gcc的版本,毕竟cuda7.5不支持gcc5以上(默认不支持,实际支持),避免出现一系列乱七八糟的问题,反正之前我是碰到了。
本文是在参考caffe官网教程以及结合自己总结经验而来,对此表示感谢。
Ubuntu 14.04安装Nvidia CUDA7.5并搭建Python Theano深度学习开发环境
Ubuntu下CUDA(含GPU卡驱动)安装过程
Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
Ubuntu 12.04配置NVIDIA CUDA5.5实录
关于Ubuntu 12.04 下 CUDA5.5 的安装请参看如下链接 Ubuntu 12.04 安装 CUDA-5.5
1. 所需文件下载
1.1 Ubuntu16.04在官网下载,然后在windows下用UltraISO制作,相关文章搜索有一大片,此处不再赘述。
1.2 cuda7.5下载,下载的版本是ubuntu15.04的run文件,个人感觉比较方便。
1.3 cudnn4.0下载,进去之后如果有注册过nvidia的账户直接点击download,否则需要注册一个账户,注册完之后有一个调查,随便选几个钩就可以,然后下一步是接受条款开始就可以下载了。
1.4 caffe下载就在官方的github下载就可以了
2. 显卡驱动安装
2.1 第一种方法是直接在ubuntu系统设置,软件和更新里面,选择中国的服务器源刷新之后,点击附加驱动选项,在Nvidia Corporation选择361.42(强迫症必须安装最新的),然后点击应用更改,下载安装完之后重启。
2.2 第二种方法是去官方下载好驱动的run文件,选择对应显卡型号下载。然后关机把显示器插到集成显卡接口上,或者终端下
sudo gedit /etc/modprobe.d/blacklist.conf
输入密码后在最后一行编辑上
blacklist nouveau
Ctrl +C保存后终端输入
sudo update-initramfs -u
重启之后在界面按Ctrl+Alt+F2,输入root以及密码,然后
service lightdm stop
sh 你自己的驱动文件的完整路径,默认选项就可以安装了,安装后重启
3. Cuda7.5安装
3.1 以文件名为cuda.run为例,终端下输入
sh cuda.run --override 启动安装程序,此处有大量的条款,一路空格到最后 输入accept,依次输入y回车,然后n(不安装显卡驱动),然后一路y回车,有一个地方需要输入密码,还有两个地方确认安装路径,直接回车即可,完成安装,默认安装路径是/usr/local
将下载下来的cudnn-7.0-linux-x64-v4.0-prod.tgz 解压之后,解压后的cuda文件夹先打开里面的include文件夹,空白右键在终端打开输入:
sudo cp cudnn.h /usr/local/cuda/include/
cd ~/cuda/lib64
sudo cp lib* /usr/local/cuda/lib64/
继续更新文件链接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.4
sudo ln -s libcudnn.so.4.0.7 libcudnn.so.4
sudo ln -s libcudnn.so.4 libcudnn.so
然后设置环境变量
sudo gedit /etc/profile
在末尾加入
PATH=/usr/local/cuda/bin:$PATH
export PATH
保存之后创建链接文件
sudo vim /etc/ld.so.conf.d/cuda.conf
键盘按i进入编辑状态,添加文字
/usr/local/cuda/lib64
然后按esc,输入:wq保存退出。
终端下接着输入
sudo ldconfig 使链接生效
4. 生成Cuda Sample测试
首先在此之前先把需要的依赖包都安装好,为接下来make 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 libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
然后开始make samples ,终端下
cd /home/gomee/NVIDIA_CUDA-7.5_Samples
sudo make all -j4
我是4核电脑所以用了j4,正常情况下肯定会报错“unsupported GNU version! gcc versions later than 4.9 are not supported!”,原因就是这个cuda不支持gcc5.0以上,终端运行
cd /usr/local/cuda-7.5/include
cp host_config.h host_config.h.bak
sudo gedit host_config.h
Ctrl+F寻找有”4.9”的地方,应该是只有一处,在其上方的
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)将两个4改成5,保存退出,继续
cd /home/gomee/NVIDIA_CUDA-7.5_Samples
sudo make all -j4
这就应该开始make了,此处大约有5、6分钟。完成之后
cd /home/gomee/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux
./deviceQuery
会出现类似以下的信息
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 750 Ti"
CUDA Driver Version / Runtime Version 8.0 / 7.5
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 2047 MBytes (2146762752 bytes)
( 5) Multiprocessors, (128) CUDA Cores/MP: 640 CUDA Cores
GPU Max Clock rate: 1228 MHz (1.23 GHz)
Memory Clock rate: 3004 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 750 Ti
Result = PASS
这就说明成功了。