问题背景
服务器的Nvidia-Driver的版本与CUDA版本不一致,导致gpu计算无法使用。
问题查询
- 查询Nvidia-Driver版本:
nvidia-smi
正常的版本对应(别的机器):
错误的版本对应(出问题的机器):
- 查询CUDA版本:
[root@my]$ cat /usr/local/cuda/version.txt
CUDA Version 10.1.243
根据CUDA与Nvidia-Driver的对应关系(官方链接):
发现确实是我们的Driver版本过低,与CUDA不匹配造成。
方法一:降低cuda版本(不详细介绍了,因为我希望升级驱动)
方法二:升级Nvidia-Driver(本文方法)
解决方法
- 卸载原有驱动
方法一:找到显卡驱动.run文件:
$ sh NVIDIA-Linux-x86_64-418.126.02.run --uninstall
方法二:清除所有nvidia相关文件和依赖
$ yum remove nvidia-*
为了删除干净还可以(目标就是把nvidia-driver的相关组件都清理掉):
rpm -qa|grep -i nvid|sort
yum remove kmod-nvidia-*
值得注意的是,由于内核系统的不同,所采取的命令方法不同
apt-get属于ubuntu、Debian的包管理工具
yum则属于Redhat、Centos包管理工具
在选择利用什么命令删除时,应先确定自己的系统是什么。
如sudo apt-get purge nvidia-* 代替yum remove nvidia-*
在卸除驱动后一定记得重启
sudo reboot
- 下载安装新驱动
驱动版本以及下载地址:官方
wget 相应下载地址
sh NVIDIA-Linux-x86_64-418.126.02.run
然后按照提示框一步步ok就行了
最终结果
其他
- 可以使用如下代码测试gpu计算是否可以使用(pytorch):
import torch
a = torch.cuda.is_available()
print(a)
ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())
- 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
链接