小言_互联网的博客

Linux Ubuntu18.04环境下cuda 10.0+NVIDIA驱动配置

372人阅读  评论(0)

前言

记录自己配置cuda的过程中遇到的坑,备忘。基本参照cuda官方文档

1、准备工作(检查显卡型号,安装gcc)

lspci  | grep -i vga

我的电脑结果如下:

ltong@ltong-ThinkPad-T460:~$ lspci  | grep -i nvidia
06:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)

型号为GF 940MX。可以到官网查看该型号的显卡是否支持CUDA,但一般NVIDIA的独显都会支持cuda。
需要安装gcc。

sudo apt install gcc

官网教程让我们更新内核

sudo apt-get install linux-headers-$(uname -r)

但是后面还是遇到了内核问题,通过安装dkm解决。

2、安装驱动

CUDA tookit中含有NVIDIA驱动,但是对于某些版本的显卡来说(比如我的显卡),该驱动是不能用的。在你输入NVIDIA-smi的时候,会提示你检查是否正确安装了NVIDIA Driver。需要手动安装驱动。

根据你的显卡型号到NVIDIA官网去寻找正确的驱动(驱动下载链接)进行安装(这个过程比较容易出问题 )。

1、禁用nouveau。
nouveau是Linux自带的显卡驱动,没有卵用并且会造成冲突,必须关闭 。
官网关闭nouveau教程如下:
建立文件 /etc/modprobe.d/blacklist-nouveau.conf,其内容如下
blacklist nouveau
options nouveau modeset=0
然后执行命令

$ sudo update-initramfs -u

该操作成功的标志为:

$ lsmod | grep nouveau

不产生任何输出。

2、关闭图形界面
NVIDIA驱动安装需要关闭图形界面,Ubuntu18.04操作如下

$ sudo systemctl set-default multi-user.target   #关闭图形界面
$ sudo reboot #重启生效
$ systemctl set-default graphical.target    #打开图形界面
$ sudo reboot #重启生效

应该可以通过改变runlevel(3为命令行model,5为图形model)实现,这样就不需要重启,但是我没有试过。
Ubuntu 16之前的命令不同,无需重启。

sudo /etc/init.d/lightdm stop #关闭图形界面
sudo /etc/init.d/lightdm start #开启图形界面

3、卸载原先的NVIDIA驱动
如果原来安装过NVIDIA驱动,需要先卸载。
以下命令可以删除残余。

sudo apt-get --pruge remove nvidia*

4、安装驱动

sudo chmod a+x NVIDIA-Linux-x86_64-xxx.xx.run #赋予运行权限
sudo sh ./NVIDIA-Linux-x86_64-xxx.xx.run --no-opengl-files

安装,–no-opengl-files不加,则需要在安装的时候在出现关于opengl的选项时阅读选择(一般为否),否则会出现循环登录问题。

5、打开图形界面,重新启动
成功标志为

$ nvidia-smi

无报错且正常输出,结果类似如下。

Mon Oct 14 19:38:07 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce 940MX       Off  | 00000000:06:00.0 Off |                  N/A |
| N/A   43C    P8    N/A /  N/A |     59MiB /  2004MiB |      5%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1343      G   /usr/lib/xorg/Xorg                            59MiB |
+-----------------------------------------------------------------------------+

安装CUDA

我使用的是runfile(.run)格式的安装包。
1、下载校验。
在下载之后需要用MD5校验,不成功需要重新下载。

$ md5sum <file>

如果结果为一串MD5码+文件名,则校验成功。
2、关闭图形界面
3、安装cuda

$ sudo sh cuda_<version>_linux.run --no-opengl-files

当出现进度条1%的时候,按q进入选择。
由于已经装好了驱动,在询问是否装驱动的时候,选否
CUDA自带的驱动有可能不适合显卡的版本。关闭图形界面,–no-opengl-files参数的添加都是为了安装驱动,所以在此估计都可以省略。但由于我是先装的CUDA,发现驱动版本不合适,然后去装的驱动,所以具体此处是否能省略关闭图形界面,–no-opengl-files参数的添加,也没有真正确认。
当出现内核问题 unable to locate kernel source的时候,先

sudo apt-get install dkms

然后再次sudo sh安装

4、配置环境变量

$ export PATH=$PATH:/usr/local/cuda/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64

然后使其生效

source ~/.bashrc

这是临时生效,需要永久生效直接写入文件~/.bashrc,在文件末尾写入前面的两句export(完全不变),然后使其生效。
我们可以找到我们下载的cuda样例编译进行测试

nsight使用

一般来说,如果环境变量设置正确,直接在命令行中输入nsight即可使用nsight编程。

附录-双系统配置

在windows 10 与Ubuntu 18.04上配置cuda10.0。
双系统配置如下(最好提前备份资料):
1、去Ubuntu官网下载Ubuntu 18.04 LTS镜像。
2、下载软碟通,将镜像刻录进U盘(会进行格式化)。
3、我的电脑右键-管理-磁盘管理-删除空闲卷(分给LInux的空间)。
4、BIOS启动(ThinkPad T460为启动时点Enter),关闭安全启动,从U盘启动。
5、进入系统安装
6、中间选择“其他选项”,自主分配空间。
swap 逻辑分区,计算机的内存,我的是4G,分区格式swap
/          主分区,类似C盘,30G,分区格式ext4
/boot 引导分区,逻辑分区,200M,分区格式ext4
/home 逻辑分区,剩下全部,分区格式ext4


转载:https://blog.csdn.net/SIXtong/article/details/102555975
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场