环境:系统Ubuntu16.04,两张显卡。一张独立显卡nvidia Quadro RTX5000,一张集显Intel。

目标:因要装一些软件ctranslate2/torch等,显卡驱动版本太低了,cuda版本也很低,需要升级nvidia驱动(查了一些资料有的说要禁用集显,才能升级,我最后采用了ChatGPT的答案,没有管集显)。

一、升级nvidia显卡驱动

1. 准备条件

        从nvidia官网(https://www.nvidia.com/download/index.aspx?lang=en-us )下载了适合显卡的最新驱动NVIDIA-Linux-x86_64-535.146.02.run。(下载驱动时注意选择系统,显卡类型等)

2. 查看原先旧驱动的版本:nvidia-smi

3. 检查设置

        防止驱动和nouveau冲突。进入~/etc/modprobe.d目录下,在blacklist.conf文件末尾添加 blacklist nouveau。如果有nouveau相关conf文件,我这里之前有个文件是:nvidia-installer-disable-nouveau.conf,我直接在文件里添加两行:

     要是没有nouveau相关conf文件,直接把这两行加到该目录下的blacklist.conf里面去。

    --如果原先已禁用nouveau,执行lsmod | grep nouveau,显示没有任何程序执行,ok了。

    --如果原先没有禁用nouveau,(1)需要重启后,再执行lsmod | grep nouveau,显示没有任何程序执行,ok了。(2)不重启临时禁用方法:卸载模块sudo remove nouveau(这个卸载是临时的,如果重启后还会存在)后,执行sudo dracut -f(更新initramfs)。这样就可以往下安装驱动了。

4.安装驱动

(1) 增加可执行权限:chmod +x NVIDIA-Linux-x86_64-535.146.02.run

(2)安装之前确保有依赖项:apt-get install gcc gcc-c++

         *****这里补充一下Centos上安装nvidia驱动的依赖:先查看rpm -qa | grep kernel,如果没有                  kernel-devel,kernel-headers,可查看uname -r内核版本,安装和内核版本对应的驱动:

                yum install kernel-devel-$(uname -r)

                yum install kernel-headers-$(uname -r)

(3)需加上参数后运行:NVIDIA-Linux-x86_64-535.146.02.run -no-x-check -no-nouveau-check -no-opengl-files

4.1 安装时报错

        ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in
        your kernel. This may be because it is in use (for example, by an X
        server, a CUDA program, or the NVIDIA Persistence Daemon), but this
        may also happen if your kernel was configured without support for
        module unloading. Please be sure to exit any programs that may be
        using the GPU(s) before attempting to upgrade your driver. If no
        GPU-based programs are running, you know that your kernel supports
        module unloading, and you still receive this message, then an error
        may have occured that has corrupted an NVIDIA kernel module's usage
        count, for which the simplest remedy is to reboot your computer.

       查了很多资料, 一定要卸载之前旧驱动的模块,有apt remove --purge nvidia*和 rmmod nvidia 是两种不同的方式来处理 NVIDIA 显卡驱动的方法。我这里用rmmod的方法(apt remove --purge nvidia* 可以删除依赖,调整nvcc和nvidia-smi不一致问题,但我这没有执行过,只要nvidia-smi显卡cuda版本比nvcc的cuda版本高就行;好像直接先执行apt remove --purge nvidia *更方便 ,这个没有尝试)。

4.2 解决报错

        先执行lsmod | grep nvidia,

        然后挨个移除:

                rmmod nvidia_uvm

                rmmod nvidia_drm

                rmmod nvidia_modest

        最后rmmod nvidia。确保有权限执行这些命令。然后看lsmod | grep nvidia,一个模块也没有了。

4.3 重新安装驱动

        ./NVIDIA-Linux-x86_64-535.146.02.run -no-x-check -no-nouveau-check -no-opengl-files

        安装过程,会提示一些问题,我都是选的YES,OK,没有选择NO。

        安装成功后,重新nvidia-smi,安装成功。

二、NVCC和nvidia-smi中cuda版本不一致问题

        nvidia-smi的cuda版本大于等于你要安装的cuda版就没啥问题,根据自己软件需要装的cuda版本从官网下载。

1. 执行nvcc -v

        可以看到系统安装的旧版本cuda是10.0。因为我要安装ctranslate2软件,查了很多资料,匹配版本至少是cuda11.x才行。

        因我这边ubuntu系统是16.04,工作中用的没法升级系统,在cuda官网(CUDA Toolkit Archive | NVIDIA Developer)查了,cuda11.4及以后版本不支持ubuntu16.04,所以我下载了cuda11.3版本用于安装。

2.下载cuda安装

官网提供了wget方式下载:

wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run

sudo sh cuda_11.3.1_465.19.01_linux.run

下载完成后安装即可。

注意:安装过程有很多选项options,我基本上都选择默认,只是没有选择安装465.19.01驱动,因为我已经升级显卡驱动到535.146.02了,没必要再装465.19.01驱动。

再次执行nvcc -v

三、其他

        如果你是语音识别要经过复杂的处理运算,还要需要安装cudnn,下载和cuda版本对应的cudnn,我这里安装的是最新的8.9.6支持cuda11.x。具体可以参考我的另一篇博客:ubuntu16.04安装语音识别whisper及whisper-ctranslate2工具(填坑篇)。ubuntu16.04安装语音识别whisper及whisper-ctranslate2工具(填坑篇)-CSDN博客文章浏览阅读827次,点赞19次,收藏15次。系统ubuntu16.04安装whisper-ctranslate2全过程https://blog.csdn.net/yangyi139926/article/details/135110390?spm=1001.2014.3001.5501

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐