如果之后要安装Tensorflow,建议安装CUDA9.0,安装步骤一致。
操作系统:Ubuntu16.04.3LTS
显卡:NVIDIA GeForce GTX 960M
1、检查自己的计算机是否具备CUDA安装条件
1)检查GPU是否支持CUDA
Windows下,可以通过NVIDIA GeForce Experience查看自己的GPU型号,或者通过百度、谷歌等搜索引擎来获取与自己PC相关的GPU信息。
Linux下,可以在终端下键入
$ lspci | grep -i nvidia
显示出你的NVIDIA GPU版本信息
然后去CUDA的官网查看自己的GPU版本是否在CUDA的支持列表中
2)验证自己的Linux版本是否支持 CUDA(Ubuntu 16.04和Ubuntu17.04都支持)
$ uname -m && cat /etc/*release
$ gcc --version
$ sudo apt-get install gcc
4)验证系统是否安装了kernel header和 package development
$ uname -r
$ "hljs-built_in">sudo apt-get install linux-headers-$(uname -r)
满足要求后,便可进行下面的正式安装过程。
2、CUDA提供两种安装方式:package manager安装和runfile安装。
这里我选择runfile安装,采用runfile安装,CUDA自带的驱动可能无法定位内核信息,所以我们先安装NVIIDA驱动。
3、安装NVIDIA驱动程序(如果事先有装但失败的,先卸载)
$ sudo apt remove --purge nvidia*
1)禁用nouveau驱动
终端中运行:
$ lsmod | grep nouveau
如果有输出,则代表nouveau正在运行, 需要我们手动禁掉nouveau。
在Ubuntu16.04中,我们可以通过以下操作禁用nouveau:
a.在/etc/modprobe.d中创建文件blacklist-nouveau.conf
$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf
在文件中输入以下内容:
blacklist nouveau
options nouveau modeset=0
b.执行
$ sudo update-initramfs -u
c.查看nouveau是否已经成功禁用
$ lsmod | grep nouveau
若无内容输出,则禁用成功,若仍有内容输出,请检查上述操作,并重复。
操作无误但仍有输出,则可重启,进入用户登录界面时(不要登录进桌面),按Ctrl+Alt+F1进入字符终端界面,输入用户名和密码进行登录,登录成功后,再次查看
$ lsmod | grep nouveau
这时,我们已经成功禁用了nouveau,无输出
2)关闭图形化界面
$ sudo service lightdm stop
3)安装驱动
NVIDIA驱动安装也有多种方式,runfile文件形式的安装和apt安装
apt安装:
a.添加Graphic Drivers PPA
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
b.寻找合适的驱动版本
$ ubuntu-drivers devices
c.安装nvidia driver
$ sudo apt-get install nvidia-390
d.安装完成后,重启
$ sudo reboot
e.这时,执行下面的命令,查看驱动的安装状态
$ sudo nvidia-smi
$ sudo nvidia-settings
runfile文件安装:
runfile文件的安装先要安装gcc-multilib
$ sudo apt install gcc-multilib
接着,以NVIDIA-Linux-x86_64-390.25.run为例
$ sudo sh NVIDIA-Linux-x86_64-390.25.run
刚开始运行时,会有报错(预处理脚本错误,会问继续还是退出),不管错误继续,然后就是一路安装,重启即可。测试是否安装成功如上图所示。
4、安装CUDA 9.1
到NVIDIA官网中,找到CUDA9.1并下载
之后,重启系统,在登录界面时按Ctrl+Alt+F1进入字符终端界面,登录成功后,
关闭图形化界面
$ sudo service lightdm stop
找到下载文件的路径,键入下面的命令安装:
$ sudo sh cuda_9.1.85_387.26_linux.run
单击回车,直到提示“是否为NVIDIA安装驱动?”
选择否,因为已经安装好驱动程序,其他都是默认。
最后你会看到cuda驱动、sample、tookit已经安装成功,但是缺少一些库。
添加这些库
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
重新启动图形化界面
$ sudo service lightdm start
同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了
重启电脑,检查Device Node Verification
$ sudo reboot
$ ls /dev/nvidia*
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。
b、大多数结果可能会是这样
ls: cannot access/dev/nvidia*: No such file or directory
或是这样的,只出现
/dev/nvidia0 /dev/nvidiactl
a中的一个或两个,但没有/dev/nvidia-num,即文件显示不全。
解决方法:
首先要添加一个启动脚本
$ sudo vim /etc/rc.local
这里附上rc.local的百度云链接:
https://pan.baidu.com/s/1HU9QL6Qut3NubJw4RClmIQ,密码:r7j4
把文件的第一行的#!/bin/sh -e中的-e去掉,
在#!/bin/sh和exit 0之间,添加以下内容
保存文件并重启,再次查看,这时你应该能直接看到/dev目录下的三个nvidia的文件
输入:
$ ls /dev/nvidia*
结果显示:
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
成功!
接着,设置环境变量。
终端中输入
$ sudo vim /etc/profile
在打开的文件末尾,添加以下两行。
64位系统:
$ "hljs-keyword">export PATH=/usr/local/cuda-"hljs-number">9.0/bin:"hljs-variable">$PATH
$ "hljs-keyword">export LD_LIBRARY_PATH=/usr/local/cuda-"hljs-number">9.0/lib64:"hljs-variable">$LD_LIBRARY_PATH
32位系统:
$ "hljs-keyword">export PATH=/usr/local/cuda-"hljs-number">9.0/bin:"hljs-variable">$PATH
$ "hljs-keyword">export LD_LIBRARY_PATH=/usr/local/cuda-"hljs-number">9.0/lib:"hljs-variable">$LD_LIBRARY_PATH
保存文件,并重启。因为source /etc/profile是临时生效,重启电脑才是永久生效。
重启电脑,检查上述的环境变量是否设置成功。
a.验证驱动版本
$ cat /proc/driver/nvidia/version
$ nvcc -V
最后,我们需要尝试编译cuda提供的例子,看cuda能否正常运行
打开终端输入
$ cd /home/user_name/NVIDIA_CUDA-9.1_Samples
$ make
系统就会自动进入到编译过程,整个过程大概需要十几到二十分钟,请耐心等待。如果出现错误的话,系统会立即报错停止。
如果编译成功,最后会显示Finished building CUDA samples,如下图所示。
运行编译生成的二进制文件。
编译后的二进制文件默认存放在NVIDIA_CUDA-9.1_Samples/bin中。
接着在终端中输入 :
$ cd bin/x86_64/linux/release
$ ./deviceQuery
结果如下图所示:看到类似如下图片中的显示,则代表CUDA安装且配置成功,其中 Result = PASS代表成功,若失败 Result = FAIL
最后再检查一下系统和CUDA-Capable device的连接情况
终端输入 :
$ ./bandwidthTest
cuDNN的安装是建立在我们成功安装cuda的基础上的,cuDNN同样需要我们去NVIDIA的官网下载适合cuda版本的deb文件或tgz文件。
这里我以tgz文件的安装为例(cudnn-9.1-linux-x64-v7.tgz),
首先解压tgz文件
$ tar -xzvf cudnn-9.1-linux-x64-v7.tgz
接着复制文件到cuda安装路径下,
$ 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*
也可以下载deb文件进行安装
$ sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.1_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.1_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.0.5.15-1+cuda9.1_amd64.deb
最后,通过deb文件安装,/usr/src目录下会有cudnn_samples_v7,我们可以验证cudnn是否成功
$ cp -r /usr/src/cudnn_samples_v7 "hljs-variable">$HOME
$ "hljs-built_in">cd "hljs-variable">$HOME/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
成功安装,会提示“Test passed!”信息
如果提示库缺失错误,可参考以下命令
$ sudo cp /usr/local/cuda-9.1/lib64/libcudart.so.9.1 /usr/local/lib/libcudart.so.9.1 && sudo ldconfig
$ sudo cp /usr/local/cuda-9.1/lib64/libcublas.so.9.1 /usr/local/lib/libcublas.so.9.1 && sudo ldconfig
$ sudo cp /usr/local/cuda-9.1/lib64/libcurand.so.9.1 /usr/local/lib/libcurabd.so.9.1 && sudo ldconfig
$ sudo cp /usr/local/cuda-9.1/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 && sudo ldconfig
参考文章链接:
1)http://blog.csdn.net/abc869788668/article/details/78331047
2)http://blog.csdn.net/qlulibin/article/details/78714596
3)http://www.cnblogs.com/devilmaycry812839668/p/6867780.html