一、准备
1、首先参照相关文档正确安装Nvidia显卡驱动:
[ https://zhuanlan.zhihu.com/p/674803715 ]
2、检查驱动是否安装正确,以及查看对应CUDA版本:
$ nvidia-smi
如下输出表示驱动安装正确,可以看到对应CUDA版本为12.2

3、到CUDA网址:[ https://developer.nvidia.com/cuda-zone ]
点击“Download Now”按钮,进入下载,中间会弹出订阅(Subscribe)页面,叉掉。
【重要】出现Operating System 有两个选项,不必理会,直接到页面下面,点击链接Archive of Previous CUDA Releases [ https://developer.nvidia.com/cuda-toolkit-archive ]
点击下载对应CUDA 12.2的版本:CUDA Toolkit 12.2.2

二、安装
下载到的文件在~/downloads目录下,进入目录
$ sudo chmod +x cuda_12.2.2_535.104.05_linux.run
$ sudo ./cuda_12.2.2_535.104.05_linux.run
弹出一个EULA协议,在下面输入accept回车

然后下一个界面,将光标移动到Driver或下面的版本号上回车,里面的X就没有了,表示不安装驱动。因为这里的驱动535.104比已安装的版本535.129要低。然后光标移动到下面的Install上面,回车就开始安装了。

一切顺利,安装完成,看看cuda的版本号:
$ nvcc -V
三、著名问题Failed to initialize NVML
一般隔一段时间,尤其是系统自动更新过几次后,就会出现下面著名问题:
$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
NVML library version: 535.183
从报错信息来看,之前安装的Nvidia驱动是535.129,而NVML library的新版本是535.183,不匹配了。
1、简单解决方案(本例亲测有效)
重新安装之前下载的老版CUDA,就OK了。过程跟上面的“二、安装”一样,只是最后会提示已经有一个版本的CUDA已安装,选“update all”即可。
安装完毕后,再执行nvidia-smi就OK了,甚至不需要重启。
2、其他解决方案
大致思路是重装驱动,或者将nvidia module从kernel中卸载,然后系统会重新载入新的module,或者还原内核。可自行到网上搜索。
查看有哪些与内核中nvidia模块相关的服务
$ lsmod | grep nvidia
终止与内核中nvidia模块相关的服务
$ sudo rmmod nvidia_uvm
$ sudo rmmod nvidia_drm
$ sudo rmmod nvidia_modeset
$ sudo rmmod nvidia
网上很多例子是服务器的,没有图形界面,按上面执行就行了。但如果是桌面版,跟nvidia相关的服务就多了去了,可以考虑先退出图形界面,进入纯命令行
$ sudo init 3
需要重新登录
$ sudo init 5
回到图形界面,也需要重新登录。




留下评论