这个问题已经以不同的形式被问过。但是,由于我找到的答案都不适用于我的问题,所以我将首先概述这个问题,然后概述我尝试过的答案,以防其他人遇到同样的情况。也许它们对你有用。无论如何,我将非常感激有关这个问题的任何新信息。
版本: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-toolkit
或sudo 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 一起工作的想法,我将不胜感激。
谢谢你,祝好。
大卫
现在介绍一些尝试过但失败的解决方案:使用从以下位置安装的驱动程序运行文件:
- 尝试按照指定安装 gdm 而不是 lightdm这里作者:WindowsEscapist
- 确保 Xauthority 用户权限与用户同在。
从 ppa:graphics-drivers/ppa 安装驱动程序:
答案1
由于我最初使用的 Ubuntu 版本中提供的驱动程序 nvidia-460 无法与 nvidias 网站运行文件中的 cuda 工具包配合使用,因此我进行了硬件更新。在更新的 16.04 版本中,我无法安装 nvidia-driver-460 或 nvidia-driver-450,因此我安装了 bionic (18.04),然后安装了 nvidia-driver-450。正如 @ubfan1 指出的那样,答案的其余部分位于此链接,其中工具包是通过运行文件安装的,但是没有驱动程序。