2018年10月底写下这篇,自认为对小白十分的友好,尽量一个坑没有。
实验室这台8万的服务器之前系统有点问题,于是重新装了ubuntu16.04,然后就开始装CUDA了。写这篇记录一下,防止以后踩坑。
※CUDA9.0和9.2同样适用。
1.首先去这里下载符合自己要求的CUDA:CUDA Toolkit 10.0 Download,然后把这个sh文件的文件名记一下后面用。
安装方式里面,我选择的是第一个runfile
2.安装之前验证一下电脑是否已经插上了支持CUDA的GPU,用win+alt+t调出终端,然后输入:
lspci | grep -i nvidia
如果显示出你的NVIDIA GPU版本信息应该就没问题。
3.验证系统是否安装了gcc,在终端中输入:
gcc --version
如果装了结果会显示类似信息:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0
如果没有就自行安装。
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 个软件包未被升级。
则表示系统里已经有了,不用重复安装。
5.禁用 nouveau驱动
终端中运行:
lsmod | grep nouveau
如果有输出则代表nouveau正在加载。需要我们手动禁掉nouveau。
以下是Ubuntu的nouveau禁用方法:
a、我们需要在电脑根目录的/etc/modprobe.d文件夹中创建文件blacklist-nouveau.conf
先用apt-get安装vim编辑器,然后
这需要输入命令:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
此时会出现一个窗口 (我们利用vi编辑器的指令来编辑和保存文件)
按键盘上的insert键进入输入模式,然后在文件中输入以下两行内容:
blacklist nouveau
options nouveau modeset=0
然后按ESC键退出编辑模式,在键盘上摁下“ :wq ”这三个键再回车,就保存并退出了。
b、然后在终端输入执行:
sudo update-initramfs -u
之后重启电脑
c、重启后在终端执行:
lsmod | grep nouveau
或者
lspci | grep -i nouveau
若终端无内容输出了,则禁用成功,若仍有内容输出,请检查上述操作,可以百度一下寻求解决。
注:vi是Linux终端下或控制台下常用的编辑器,要用vi打开一个文件,就输入:
vi /路径/文件名 (例如:终端输入 vi /etc/fstab 就会显示/etc/fstab文件里的内容)
基本操作:
- 使用键盘上的Page Up和Page Down键可以上下翻页;
- 按下Insert键,可以见到窗口左下角有“Insert”字样,表示当前为插入编辑状态,这时从键盘输入的内容将插入到光标位置;
- 再按下Insert键,左下角将有“Replace”字样,表示当前为替换编辑状态,这时从键盘输入的内容将替换光标位置的内容。
- 编辑完内容后,按下Esc键,并输入“:wq”,然后回车就可以保存退出。
- 如果不想保存而直接退出,则按下Esc键后,输入“:q!”,然后回车即可。“wq”表示Write和Quit,即保存退出;“q!”表示忽略修改强行退出。
6.重启电脑,进入登录界面的时候,不要登录进入桌面(否则可能会失败,若不小心进入,请重启电脑),直接按Ctrl+Alt+F1进入文本模式(命令行界面),然后登录账户。
登陆后输入:
sudo service lightdm stop
以此来关闭图形化界面
然后切换到cuda安装文件的路径:例如我的cuda在下载文件夹里所以我要输入:
cd Downloads
然后输入(根据cuda版本不同自行修改):
sudo sh cuda_10.0.130_410.48_linux.run
开始安装,按提示一步步操作,按住回车看完声明。按照提示输入相应字符,例如有的需要输入accept,有的需要输入yes。
遇到提示是否安装openGL ,选择no(如果你的电脑跟我一样是双显,且主显是非NVIDIA的GPU在工作,需要选择no),其他都选择yes或者默认即可。(如果您的电脑是双显卡且在这一步选择了yes,那么你极有可能安装完CUDA之后,重启图形化界面后遇到登录界面循环问题:输入密码后又跳回密码输入界面。这是因为你的电脑是双显,而且用来显示的那块GPU不是NVIDIA,则OpenGL Libraries就不应该安装,否则你正在使用的那块GPU(非NVIDIA的GPU)的OpenGL Libraries会被覆盖,然后GUI就无法工作了。)
安装成功后,会显示installed,否则会显示failed。
7. 重新启动图形化界面,输入 :
sudo service lightdm start
如果没反应,需要同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了。
8. 重启电脑,检查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
但没有/dev/nvidia-num,即文件显示不全。
我的解决方法参考了一篇博客,找到文件夹
/usr/local/cuda/samples/1_Utilities/deviceQuery,进去以后有个deviceQuery.cpp, make一下(在文件夹启动终端,输入sudo make),然后
./deviceQuery
这样你再查看
ls -la /dev | grep nvidia
就会发现有三个啦。
8. 设置环境变量
终端中输入:
sudo gedit /etc/profile
在打开的文件末尾,复制添加以下两行:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(这是64位系统的,32位系统自行百度)
保存文件,并重启。因为source /etc/profile是临时生效,重启电脑才是永久生效。
到这里安装应该就成功了,后面是一些验证的工作,其实一般不用验证。
9.重启电脑,然后检查上述的环境变量是否设置成功
a、 验证驱动版本
敲入:
cat /proc/driver/nvidia/version
结果显示
NVRM version: NVIDIA UNIX x86_64 Kernel Module 420
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
b、 验证CUDA Toolkit
敲入:
nvcc -V
会输出CUDA的版本信息。
如果是这样的:
The program ‘nvcc’ is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
可能是环境配置没有成功,请重复上述步骤8。
10. 尝试编译cuda提供的例子
1)打开终端输入:
cd /home/xxx/NVIDIA_CUDA-10.0_Samples
其中xxx是你自己的用户名,通过命令cd进入NVIDIA_CUDA-10.0_Samples目录。
然后终端输入:
make
系统就会自动进入到编译过程,整个过程大概需要十几到二十分钟,请耐心等待。如果出现错误的话,系统会立即报错停止。
第一次运行时可能会报错,提示的错误信息可能会是系统中没有gcc,
解决办法就是通过命令重新安装gcc就行。安装完gcc后, 再make就正常了。
如果编译成功,最后会显示Finished building CUDA samples,如下图所示。
2)最后再检查一下系统和CUDA-Capable device的连接情况
终端输入:
./bandwidthTest
这篇文章所写的全部流程都是本人亲自操作过的,有问题可以留言,能解决就回复你了,解决不了就不回了哈哈。