Ubuntu16.04上安装CUDA9.0详细教程
前⾔:
本篇⽂章是基于安装CUDA 9.0的经验写,CUDA9.0⽬前⽀持Ubuntu16.04和Ubuntu17.04两个版本,如下图所⽰(最下⾯的安装⽅式我们选择第⼀个,即runfile⽅式):
⼤家可以先将CUDA⽂件下来,但是最好不要急于安装,⼀定要先将NVIDIA给出仔细看⼀下,然后再⼏篇好的博客看⼀下,⼤致了解⼀下CUDA的安装过程,对安装过程中可能出现的问题要⼤致有⼀个了解,不到万不得已不要重装系统。
安装建议:
1)去官⽹下载CUDA的同时,⼀定要份相应官⽅的安装⽂档仔细阅读,尽可能按照它的步骤⼀步步⾛,不可偷懒。同时再⼏篇好的博客作为参考,安装之前做到胸有成⽵。
2)在安装之前⼀定要详细检查⾃⼰的电脑配置(单显卡还是双显卡)、显卡的种类是否符合CUDA的安装要求、系统是否满⾜安装要求。
3)安装过程中每进⾏⼀项操作,都尽量去检查⼀下该项操作是否操作成功。
安装过程:
⼀、安装、熟悉ubuntu16.04系统
安装软件之前最好对ubuntu的命令⾏有⼀些基本的了解,像sudo、cd、ls、nona、cat、chmod等等,这样能够在安装过程中省去很多不必要的⿇烦。(推荐⼤家去百度搜⼀下莫凡Python,他有关于ubuntu命令的视频,每⼀集都很精炼,讲的很好)
⼆、检查⾃⼰的电脑环境是否具备安装CUDA的条件
1) 验证⾃⼰的电脑是否有⼀个可以⽀持CUDA的GPU
ubuntu安装教程
你可以电脑的配置信息中到显卡的具体型号,如果你是双系统,在Windows下的设备管理器中也可以查到显卡的详细信息;
你也可以在ubuntu的终端中输⼊命令: $ lspci | grep -i nvidia ,会显⽰出你的NVIDIA GPU版本信息,不过不是很详细。
我的显⽰为(GeForce GT630M):
01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (rev a1)
然后去CUDA的查看⾃⼰的GPU版本是否在CUDA的⽀持列表中。
2) 验证⾃⼰的Linux版本是否⽀持 CUDA(Ubuntu 16.04没问题)
输⼊命令:
$ uname -m && cat /etc/*release
结果显⽰:
x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
......
3) 验证系统是否安装了gcc
在终端中输⼊: $  gcc –version
结果显⽰:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
......
若未安装请使⽤下列命令进⾏安装:
sudo apt-get  install  build-essential
4) 验证系统是否安装了kernel header和 package development
a、查看正在运⾏的系统内核版本:
在终端中输⼊: $  uname –r
结果显⽰:
4.10.0-40-generic
b、在终端中输⼊:$  sudo apt-get install linux-headers-$(uname -r)
可以安装对应kernel版本的kernel header和package development
结果显⽰:
......
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 4 个软件包未被升级。
表⽰系统⾥已经有了,不⽤重复安装。
若以上各项验证检查均满⾜要求,便可进⾏下⾯的正式安装过程。如果没有满⾜要求的话,可以参考cuda的官⽅⽂档,⾥⾯有详细的针对每个问题的解决⽅案。
三、选择安装⽅式
CUDA提供两种安装⽅式:package manager安装和runfile安装, package manager 安装⽅式相对简单⼀些,但是我在阅读别⼈博客的过程中发现选择这种⽅式在安装过程中问题可能多⼀点,失败的概率较⼤。为了减少不必要的⿇烦我选择runfile安装⽅式。
下载cuda安装包:cuda官⽹下载,根据系统信息选择对应的版本,runfile安装的话最后⼀项要选择 runfile⽂件。
下载完后,⽤MD5 检验,如果序号不和,得重新下载(由于当时没有保存,这⾥我采⽤了别⼈的截图,注意这⾥的cuda版本号,⼈家采⽤的cuda_8.0)
输⼊命令:$  md5sum cuda_9.0.176_linux.run
四、runfile安装cuda
1) 禁⽤ nouveau驱动
终端中运⾏:$  lsmod | grep nouveau,如果有输出则代表nouveau正在加载。需要我们⼿动禁掉nouveau。
Ubuntu的nouveau禁⽤⽅法:
a、在/etc/modprobe.d中创建⽂件f
输⼊命令:$  sudo vi /etc/modprobe.f                      (利⽤vi编辑器编辑和保存⽂件)
在⽂件中输⼊⼀下内容:
blacklist nouveau
options nouveau modeset=0
b、执⾏:
$ sudo update-initramfs –u
c、再执⾏:
$  lsmod | grep nouveau
若⽆内容输出,则禁⽤成功,若仍有内容输出,请检查操作,并重复上述操作。
注:vi是Linux终端下或控制台下常⽤的编辑器,基本的操作⽅式为:vi /路径/⽂件名
例如:vi /etc/fstab表⽰显⽰/etc/fstab⽂件的内容。使⽤键盘上的Page Up和Page Down键可以上下翻页;按下Insert键,可以见到窗⼝左下⾓
有“Insert”字样,表⽰当前为插⼊编辑状态,这时从键盘输⼊的内容将插⼊到光标位置;再按下Insert键,左下⾓将有“Replace”字样,表⽰当前为替换编辑状态,这时从键盘输⼊的内容将替换光标位置的内容。编辑完内容后,按下Esc键,并输⼊“:wq”,然后回车就可以保存退出。
如果不想保存⽽直接退出,则按下Esc键后,输⼊“:q!”,然后回车即可。“wq”表⽰Write和Quit,即保存退出;“q!”表⽰忽略修改强⾏退出。
以下操作建议⼿机拍照,建议把下载的cuda_9.0.176_384.81_linux.run⽂件重命名为cuda.run并移动到Home⽂件夹下(为了安装⽅便)
2) 重启电脑,进⼊登录界⾯的时候,不要登录进⼊桌⾯(否则可能会失败,若不⼩⼼进⼊,请重启电脑),直接按
Ctrl+Alt+F1进⼊⽂本模式(命令⾏界⾯),登录账户。
3) 输⼊ $ sudo service lightdm stop 关闭图形化界⾯
4) 切换到cuda安装⽂件的路径:$  cd Home/
运⾏$ sudo sh cuda_7.5.18_linux.run
按照提⽰⼀步步操作
注:a、⼀定要按照提⽰)输⼊相应字符,例如有的需要输⼊accept,有的需要输⼊yes;
b、遇到提⽰是否安装openGL ,选择no(如果你的电脑跟我⼀样是双显,且主显是⾮NVIDIA的GPU在⼯作需要选择no,否则可以yes),其他都选择yes或者默认即可。(如果您的电脑是双显卡且在这⼀步选择了yes,那么你极有可能安装完CUDA之后,重启图形化界⾯后遇到登录界⾯循环问题:输⼊密码后⼜跳回密码输⼊界⾯。
这是因为你的电脑是双显,⽽且⽤来显⽰的那块GPU不是NVIDIA,则OpenGL Libraries就不应该安装,否则你正在使⽤的那块GPU(⾮NVIDIA的GPU)的OpenGL Libraries会被覆盖,然后GUI就⽆法⼯作了。)
安装成功后,会显⽰installed,否则会显⽰failed。
5) 输⼊ $ sudo service lightdm start 重新启动图形化界⾯。
同时按住Alt + ctrl +F7,返回到图形化登录界⾯,输⼊密码登录。
如果能够成功登录,则表⽰不会遇到循环登录的问题,基本说明CUDA的安装成功了。
如果你遇到了重复登陆情况,不⽤急着重装系统,官⽅教程上有提及,原因上⼀步的注中有提及,在安装openGL时你可能不注意选择了yes,请卸载cuda,然后重装。
卸载:由于登陆进⼊不到图形⽤户界⾯(GUI),但我们可以进⼊到⽂本⽤户界⾯(TUI)
在登陆界⾯状态下,按Ctrl + Alt + f1,进⼊TUI
执⾏
$ sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
$ sudo /usr/bin/nvidia-uninstall
然后重启
$ sudo reboot
重新安装.run  再次安装时请⼀定留意,在提⽰是否安装OpenGL时,你的是双显卡应该选则n。
6) 重启电脑,检查Device Node Verification。
执⾏
$ ls /dev/nvidia*
可能出现a、b两种结果,请对号⼊座。
a、若结果显⽰
/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,即⽂件显⽰不全。
不⽤着急也不⽤急着重装系统(我在安装时就是这种情况),官⽅指导中有详细的解决⽅案,但是我的⽅法和官⽅稍微有些出⼊。
⾸先要添加⼀个启动脚本(添加启动脚本的⽅法⼤致有两种,我采⽤最直接的⽅法,另⼀种可以先创建⼀个⽂件然后通过mv的⽅式移动到启动⽂件夹下,可⾃⾏百度)
执⾏
$ sudo vi /etc/rc.local
如果你是第⼀次打开这个⽂件,它应该是空的(除了⼀⾏⼜⼀⾏的#注释项外)。这⽂件的第⼀⾏是
#!/bin/sh -e
把-e去掉(这步很重要,否则它不会加载这⽂本的内容)
然后把下列内容除了#!/bin/bash外复制到其中,(before exit 0 )保存退出。
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
下次重启时,你应该能直接看到/dev⽬录下的三个nvidia的⽂件
输⼊:$ ls /dev/nvidia*
结果显⽰:/dev/nvidia0      /dev/nvidiactl      /dev/nvidia-uvm
成功!
7) 设置环境变量。
终端中输⼊ $ sudo gedit /etc/profile
在打开的⽂件末尾,添加以下两⾏。
64位系统:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 32位系统:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}保存⽂件,并重启。因为source /etc/profile是临时⽣效,重启电脑才是永久⽣效。