NVIDIA 驱动程序和 Xserver 无法协同工作

NVIDIA 驱动程序和 Xserver 无法协同工作

这个问题已经以不同的形式被问过。但是,由于我找到的答案都不适用于我的问题,所以我将首先概述这个问题,然后概述我尝试过的答案,以防其他人遇到同样的情况。也许它们对你有用。无论如何,我将非常感激有关这个问题的任何新信息。

版本:16.04

内核:4.15.0-133-generic

因为我想使用 CUDA 11,所以我卸载了之前的 NVIDIA 驱动程序

sudo apt --purge remove "*nvidia*"

并尝试通过以下方式删除以前 CUDA 版本中的所有内容

sudo apt --purge remove "*cuda*" "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"

sudo apt-get autoremove

然后,我按照 nvidia 页面, 也这里。要成功安装,需要在终端中使用Ctrl+ Alt+执行此步骤F1。此外,需要通过停止 XServer sudo service lightdm stop(至少我认为它就是这样做的)。在安装驱动程序和 CUDA 工具包并重新启动系统后,我成功运行了 deviceQuery 程序以及我为 CUDA 编写的模拟。然而,在图形界面中,我陷入了登录循环(参考下面的类似帖子)。

由于下面列出的补救措施均不起作用,我尝试通过 从 graphics-drivers ppa 安装 CUDA 和 NVIDIA 驱动程序sudo add-apt-repository ppa:graphics-drivers/ppa。通过 安装适当的驱动程序sudo apt-get install nvidia-460并重新启动后,我可以再次访问图形界面。nvidia-smi显示正在运行的 nvidia 驱动程序:

    $ nvidia-smi
    Tue Feb 23 14:50:14 2021       
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: N/A      |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Quadro P3000        Off  | 00000000:01:00.0  On |                  N/A |
    | N/A   50C    P0    23W /  N/A |    405MiB /  6078MiB |      2%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
                                                                                   
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A      1322      G   /usr/lib/xorg/Xorg                260MiB |
    |    0   N/A  N/A      2502      G   compiz                             49MiB |
    |    0   N/A  N/A     32082      G   ...gAAAAAAAAA --shared-files       91MiB |
    +-----------------------------------------------------------------------------+

另一方面,任何安装 CUDA 的方法(无论是通过运行文件,但不安装新驱动程序,还是通过sudo apt install nvidia-cuda-toolkitsudo apt install cuda-toolkit-11-2)都无法成功安装 CUDA。程序通过 nvcc 编译没有问题,但是./deviceQuery返回

$ ./deviceQuery 
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL

一旦达到 CUDA 部分,其他程序就会终止。请注意,失败的原因(驱动程序版本不足)是不正确的,因为安装的驱动程序是 460.32.03,根据nvidia 手册。另一方面,nvidia-smi 似乎也没有注意到 CUDA 已安装。目前,驱动程序从 ppa 安装,CUDA 从运行文件安装,我已经

$ lspci -k | grep -EA3 'VGA|3D|Display'
00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
    Subsystem: Lenovo Device 224c
    Kernel driver in use: i915
    Kernel modules: i915
--
01:00.0 3D controller: NVIDIA Corporation GP104GLM [Quadro P3000 Mobile] (rev a1)
    Subsystem: Lenovo Device 224c
    Kernel driver in use: nvidia
    Kernel modules: nvidiafb, nouveau, nvidia_460_drm, nvidia_460

如果您能提供任何关于如何使通过运行文件安装的驱动程序与 Xserver 一起工作或使来自 ppa 的驱动程序与 CUDA 一起工作的想法,我将不胜感激。

谢谢你,祝好。

大卫

现在介绍一些尝试过但失败的解决方案:使用从以下位置安装的驱动程序运行文件

  1. 尝试按照指定安装 gdm 而不是 lightdm这里作者:WindowsEscapist
  2. 确保 Xauthority 用户权限与用户同在。

从 ppa:graphics-drivers/ppa 安装驱动程序:

  1. 尝试按照sudo optirun ./deviceQuery指定的方式运行此链接
  2. 尝试在 NVIDIA X 服务器设置中将 Prime 配置文件设置为 NVIDIA(已设置)
  3. 尝试sudo prime-select nvidia按照建议使用这里

答案1

由于我最初使用的 Ubuntu 版本中提供的驱动程序 nvidia-460 无法与 nvidias 网站运行文件中的 cuda 工具包配合使用,因此我进行了硬件更新。在更新的 16.04 版本中,我无法安装 nvidia-driver-460 或 nvidia-driver-450,因此我安装了 bionic (18.04),然后安装了 nvidia-driver-450。正如 @ubfan1 指出的那样,答案的其余部分位于此链接,其中工具包是通过运行文件安装的,但是没有驱动程序。

相关内容