前言
记录自己配置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