NVIDIA-SMI 失败,因为它无法与 NVIDIA 驱动程序通信。确保安装并运行了最新的 NVIDIA 驱动程序

Rod*_*lfo 49 nvidia cuda nvidia-optimus bumblebee drivers

我刚刚在这样的笔记本中安装了 CUDA:

sudo apt-get install cuda
Run Code Online (Sandbox Code Playgroud)

就像这里说的。

编译工作很好,但是当我尝试运行时,我遇到了以下问题:file.cu:128 code=35(cudaErrorInsufficientDriver)“cudaStreamCreate(&(stream[i]))”的CUDA错误

我的 nvcc 版本:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61
Run Code Online (Sandbox Code Playgroud)

显卡信息:

lspci | egrep 'VGA|3D'
00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 06)
02:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)
Run Code Online (Sandbox Code Playgroud)

我还安装了 VirtualGL、bumblebee-nvidia、primus、freeglut3-dev。继

当我尝试在大黄蜂上运行一些东西时,我得到了这个:optirun glxspheres64

[   41.413478] [ERROR]Cannot access secondary GPU - error: Could not load GPU driver
[   41.413520] [ERROR]Aborting because fallback start is disabled.
Run Code Online (Sandbox Code Playgroud)

英伟达驱动不工作。

nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
Run Code Online (Sandbox Code Playgroud)

看起来 nvidia 375 版本已安装,但我无法使其正常工作。

whereis nvidia
nvidia: /usr/lib/nvidia /usr/share/nvidia /usr/src/nvidia-375-375.66/nvidia
Run Code Online (Sandbox Code Playgroud)

还有一些司机信息。

modinfo nvidia_375
filename:       /lib/modules/4.8.0-54-generic/updates/dkms/nvidia_375.ko
alias:          char-major-195-*
version:        375.66
supported:      external
license:        NVIDIA
srcversion:     68751AFD79A210CEFFB8758
alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        
vermagic:       4.8.0-54-generic SMP mod_unload modversions 
parm:           NVreg_Mobile:int
parm:           NVreg_ResmanDebugLevel:int
parm:           NVreg_RmLogonRC:int
parm:           NVreg_ModifyDeviceFiles:int
parm:           NVreg_DeviceFileUID:int
parm:           NVreg_DeviceFileGID:int
parm:           NVreg_DeviceFileMode:int
parm:           NVreg_UpdateMemoryTypes:int
parm:           NVreg_InitializeSystemMemoryAllocations:int
parm:           NVreg_UsePageAttributeTable:int
parm:           NVreg_MapRegistersEarly:int
parm:           NVreg_RegisterForACPIEvents:int
parm:           NVreg_CheckPCIConfigSpace:int
parm:           NVreg_EnablePCIeGen3:int
parm:           NVreg_EnableMSI:int
parm:           NVreg_TCEBypassMode:int
parm:           NVreg_UseThreadedInterrupts:int
parm:           NVreg_MemoryPoolSize:int
parm:           NVreg_RegistryDwords:charp
parm:           NVreg_RmMsg:charp
parm:           NVreg_AssignGpus:charp
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一些驱动程序版本问题:

dpkg -l | grep nvidia
ii  bumblebee-nvidia                            3.2.1-10                                      amd64        NVIDIA Optimus support using the proprietary NVIDIA driver
ii  nvidia-375                                  375.66-0ubuntu0.16.04.1                       amd64        NVIDIA binary driver - version 375.66
ii  nvidia-375-dev                              375.66-0ubuntu0.16.04.1                       amd64        NVIDIA binary Xorg driver development files
ii  nvidia-modprobe                             375.51-0ubuntu1                               amd64        Load the NVIDIA kernel driver and create device files
ii  nvidia-opencl-icd-375                       375.66-0ubuntu0.16.04.1                       amd64        NVIDIA OpenCL ICD
ii  nvidia-prime                                0.8.2                                         amd64        Tools to enable NVIDIA's Prime
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

小智 26

如果您nvidia-smi无法通信,但您已多次安装驱动程序,请检查prime-select

  1. 运行prime-select query以获取所有可能的选项。你至少应该看到nvidia | intel.
  2. 选择prime-select nvidia
  3. 如果它说nvidia is already selected,选择一个不同的,例如prime-select intel,然后切换回 nvidiaprime-select nvidia
  4. 重新启动并检查nvidia-smi

  • 呃哦,`prime-select query` 甚至没有列出英特尔,我想我现在有两个问题...... (22认同)
  • 不起作用。同样的问题仍然存在。 (4认同)
  • 消息说“nvidia 配置文件已经设置”(我已经重新启动,所以它不起作用) (3认同)
  • `query` 没有列出所有可能的选项。从脚本中:“查询:检查当前处于活动状态的版本并将“nvidia”、“intel”或“未知”写入标准输出”。 (2认同)

小智 22

您可能想要安装 cuda 工具包。使用以下命令进行安装。

sudo apt install nvidia-cuda-toolkit
Run Code Online (Sandbox Code Playgroud)

安装完成后,重启机器。nvidia-smi应该管用。

  • 它在这里不起作用 (18认同)
  • 如果您的 cuda >= 10,请不要这样做。它会将您的 cuda 降级到 9,这是目前在没有 CUDA PPA 的 ubuntu 上可用的。 (12认同)
  • 没有什么区别 (3认同)
  • 之前执行`sudo apt-get purge nvidia-*`,然后上面的行修复了与我相关的所有 CUDA,使用 CUDA 10.1 安装了 430 驱动程序 (2认同)

w-s*_*sky 15

马库斯的解决方案引导我找到了更好的解决方案。所以它与安全启动有关,但没有必要停用。

要解决此问题,只需执行 3 个步骤:通过使用附加驱动程序工具选择 X.Org 停用 Nvidia 驱动程序,重新启动,然后激活 Nvidia 驱动程序,重新启动并在安全启动中注册密钥。

通常,当您使用附加驱动程序工具激活 Nvidia 驱动程序时,系统会要求您输入安全启动的(新)密码。重新启动后,PC 会跳转到安全启动设置,并要求您注册新的 MOK 密钥,必须使用相同的密码进行确认。之后,驱动程序将访问 Nvidia 卡并开始工作。


Rod*_*lfo 14

我禁用了安全启动,它工作得很好。

@杆史密斯aswered另一个问题更具体的解释如何做到这一点,基本上是一个安装配置,但他也写关于如何做到这一点的一个很好的文章在这里

  • 它也帮助我使用 nvidia 驱动程序 390!我从没想过这可能是因为安全启动,谢谢 :) (2认同)
  • 此处已完成禁用安全启动的 UEFI 模式。=) 不幸的是,看起来它并不适合所有人。 (2认同)
  • 安全启动是事情,但不需要停用!激活Nvidia驱动时,必须输入安全启动密码;然后重新启动并在安全启动设置中使用该密码导入新的 ROK 密钥。现在驱动程序处于活动状态。 (2认同)

小智 10

由于我无法对上面@Rodolfo 的回答发表评论(没有足够的声誉),我正在添加一个新答案。

在我的机器上,我必须根据我的操作系统配置安全启动。我有一个运行 Ubuntu 18.04 的华硕主板,并尝试使用打包的 NVIDIA 驱动程序安装 NVIDIA CUDA 10.1 Update 2。我遇到了与上述相同的问题。事实证明,安全启动被设置为 Windows UEFI 模式。将其更改为其他操作系统为我修复了它。

  • 谢谢,我不得不禁用在 Windows/BIOS 自动更新期间自动重新启用的“安全启动”!!!现在 nvidia 工作正常。 (4认同)