杂项(1)-Ubuntu组件安装记录(0)-Ubuntu Nvidia闭源驱动和CUDA的安装


本文主要针对使用UEFI的设备,不保证不使用UEFI的PC也能成功。

问题描述

笔者很久之前就被Nvidia CUDA的安装所困扰;按官网下载的.run文件安装驱动后,有很大概率会出现问题。其中一种比较典型的情况是DKMS构建内核模块失败(查阅日志发现是编译器版本不匹配,而且我至今没有成功让它忽略过这个检查。这是我自行编译过GNU编译套装导致的),即便不使用DKMS仍然会有莫名其妙的问题。即便成功安装驱动,用官网CUDA安装包也可能引发驱动问题,其中一种我遇到的情形就是X服务无法正确运行。最坑的是,就算安上了CUDA也不代表一切OK。
询问学长后得知Ubuntu 18.04 LTS似乎可以做到安装CUDA,遂升级后再次尝试。(笔者已经因为CUDA在Ubuntu 16.04 LTS上重装好几次了。)终于,在Ubuntu 18.04 LTS下尝试成功了,于是分享整个安装过程避免再有萌新被坑。

系统环境

Ubuntu 18.04 LTS,使用

sudo apt-get update
sudo apt-get upgrade

后得到的5.3.0-28-generic内核。使用

cat /proc/version
uname -r

两条指令之一可以查看自己的内核版本。
硬件上必须有Nvidia显卡设备(不然你为啥要装CUDA?)。
**特别注意:**不同设备需要的驱动版本、OpenGL版本、CUDA版本可能有差异,请自行在官网查询。

安装过程

安装驱动

这里说是主要坑点其实有我自己的问题,要是仔细阅读那一堆英文提示的话很早就能解决了。
此外,很多说法说安装闭源驱动需要先禁用nouveau开源驱动,然而实践表明其实并不一定。安装闭源驱动后开源驱动相当于自动被屏蔽了。
使用指令

sudo apt-get install nvidia-<驱动版本号>

其中,笔者个人选择的驱动版本号是可选的版本号中最大的,我这里是435。后来证明GeForce GTX1050可以使用435版闭源驱动。
在安装时有一个过程需要手动处理,就是Secure Boot密码。按笔者的理解,应该是和UEFI启动安全相关的一个东西,这个密码大概类似于数字签名之类的,没有这个签名是无法启动对应程序的(多数程序不需要这一步是因为不需要访问底层设施,但该驱动可能需要)。
输入Secure Boot密码并完成安装后需要reboot重启,这里是一个主要的坑点,很多人第一次看到时可能像我一样直接继续启动了,其实需要在这里再次输入Secure Boot密码才行(不然相当于是你给了某人一个名字却没给他上户口,在MOK看来和没给名字没有区别。说实话笔者也不太清楚这个MOK具体是什么东西)。
下面是MOK Management下的操作过程:
选择Enroll MOK(执行MOK操作)->一路继续/是->输入Secure Boot密码->确定完成。这个过程中,输入密码时密码不会显示出来,这是很正常的。
如果上面这步有错,Nvidia驱动将会安装失败。只要从头再来一遍就可以了。通常而言,这一步不会造成太大的破坏。

确认驱动情况

使用

nvidia-smi

即可查看当前情况。如果驱动安装不成功,将会显示无法与显卡沟通(甚至干脆显示没有这个指令)。安装正确的话将会显示显卡驱动基本信息。

安装CUDA

很多教程使用官网下载的文件来安装CUDA,很容易产生包冲突(并导致驱动挂掉),其实根本没必要。使用

sudo apt-get install nvidia-cuda-*

即可安装完整的CUDA,笔者这里是9.1版本,足够新了。

确认CUDA工具链安装

nvcc -v

如果正确输出工具链版本信息就表示工具链安装成功。

例程试验

#include <stdio.h>
#include <cuda_runtime.h>
#include <errno.h>
__global__ void helloFromGPU(void){
	printf("GPU kernel\n");
}
int main(){
	cudaError_t status;
	int num;
	status = cudaGetDeviceCount(&num);
	if (status == cudaErrorNoDevice) {
		perror("No device found\n");
		return 1;
	}
	printf("Found %d device(s)\n", num);
	helloFromGPU<<<1,10>>>();
	cudaDeviceReset();
	return 0;
}

如果正确输出GPU kernel字样,且输出找到了设备的信息(Found 1 device(s),也可能更多),就表示Nvidia驱动和CUDA完全配置妥当了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值