无法插入'nvidia_352':没有这样的设备。

16

我正在尝试在Linux Ubuntu上运行caffe。 安装后,我在GPU上运行caffe时出现了以下错误:

I0910 13:28:13.606891 10629 caffe.cpp:296] Use GPU with device ID 0
modprobe: ERROR: could not insert 'nvidia_352': No such device
F0910 13:28:13.728612 10629 common.cpp:142] Check failed: error == cudaSuccess (38 vs. 0)  no CUDA-capable device is detected
*** Check failure stack trace: ***
    @     0x7ffd3b9a7daa  (unknown)
    @     0x7ffd3b9a7ce4  (unknown)
    @     0x7ffd3b9a76e6  (unknown)
    @     0x7ffd3b9aa687  (unknown)
    @     0x7ffd3bf91cb5  caffe::Caffe::SetDevice()
    @           0x40a5a7  time()
    @           0x4080f8  main
    @     0x7ffd3aeb9ec5  (unknown)
    @           0x408618  (unknown)
    @              (nil)  (unknown)
Aborted (core dumped)

我的NVIDIA驱动程序是352.41版本。 我安装了352,它是最新版本。

sudo apt-get install nvidia-352[sudo] 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
nvidia-352 is already the newest version.
The following packages were automatically installed and are no longer required:
  account-plugin-windows-live libupstart1
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 31 not upgraded.

我的Ubuntu安装了NVIDIA 352驱动,为什么还会出现以下错误:

I0910 13:28:13.606891 10629 caffe.cpp:296] Use GPU with device ID 0
    modprobe: ERROR: could not insert 'nvidia_352': No such device
    F0910 13:28:13.728612 10629 common.cpp:142] Check failed: error == cudaSuccess (38 vs. 0)  no CUDA-capable device is detected

我检查了一下是否拥有支持CUDA的设备,例如

lspci | grep -i nvidia
05:00.0 VGA compatible controller: NVIDIA Corporation GK107GL [Quadro K2000] (rev a1)
05:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)

我有一个支持CUDA的设备,为什么会出现错误?

编辑1: 是的,我的./deviceQuery测试失败了。

../NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/deviceQuery Starting...

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

cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL

我在dev/文件夹中检查过了,我有nvidia0。

crwxrwxrwx  1 root root    195,   0 Sep 10 16:51 nvidia0
crw-rw-rw-  1 root root    195, 255 Sep 10 16:51 nvidiactl

我的 nvcc -V 检查给了我以下结果

li@li-HP-Z420-Workstation:/dev$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17

然后是我的版本检查

li@li-HP-Z420-Workstation:/dev$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  352.41  Fri Aug 21 23:09:52 PDT 2015
GCC version:  gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) 

可能出了什么问题?


1
暂且不谈Caffe,你确定你的基本CUDA安装工作正常吗? - talonmies
1
当然,我已经安装了CUDA7.5。所有的lib和headers都安装在/usr/local/cuda7.5中。所有的路径都导出为:export PATH=/usr/local/cuda-7.5/bin:$PATH $ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH。我成功地安装了caffe。 - batuman
2
那不是我问的。你能否编译并成功运行一个简单的CUDA应用程序,比如CUDA工具包中的一个示例? - talonmies
2
显然,您的CUDA安装出了问题。互联网上充满了有关安装和故障排除CUDA的建议和说明。也许现在是时候去看看其中一些了。但这确实不是[SO]上的一个主题问题。可能有更好的地方可以尝试获取帮助(例如Nvidia论坛、askubuntu等)。 - talonmies
我觉得我的CUDA7.0有问题。我会安装CUDA6.5再试一次。 - batuman
显示剩余2条评论
5个回答

11

现在问题已经解决。 我检查了 sudo dpkg --list | grep nvidia 发现我的内核是352.41,但客户端是304.12。 所以我执行了 sudo apt-get remove --purge nvidia-*。它删除了所有软件包。 然后,安装352.41。

$ sudo add-apt-repository ppa:xorg-edgers/ppa -y
$ sudo apt-get update
$ sudo apt-get install nvidia-352

之后

$ sudo dpkg --list | grep nvidia
rc nvidia-304 304.128-0ubuntu0~gpu14.04.2 amd64 NVIDIA legacy binary driver - version 304.128
rc nvidia-304-updates 304.125-0ubuntu0.0.2 amd64 NVIDIA legacy binary driver - version 304.125
ii nvidia-352 352.41-0ubuntu0~gpu14.04.1 amd64 NVIDIA binary driver - version 352.41
rc nvidia-opencl-icd-304 304.128-0ubuntu0~gpu14.04.2 amd64 NVIDIA OpenCL ICD
rc nvidia-opencl-icd-304-updates 304.125-0ubuntu0.0.2 amd64 NVIDIA OpenCL ICD
ii nvidia-opencl-icd-352 352.41-0ubuntu0~gpu14.04.1 amd64 NVIDIA OpenCL ICD
ii nvidia-prime 0.6.2 amd64 Tools to enable NVIDIA's Prime
ii nvidia-settings 355.11-0ubuntu0~gpu14.04.1 amd64 Tool for configuring the NVIDIA graphics driver

现在版本匹配。 然后运行./deviceQuery,所有工作都如预期一样。 谢谢


我不知道它是否“已修复”。http://askubuntu.com/questions/723632/nvidia-7300-le-driver-15-10-how-to-install-ubuntu-modprobe-error-could-not - Wolfpack'08

2

我也遇到了这个问题。重新安装Nvidia驱动程序并没有解决问题。

最终,我通过在grub中添加两个内核参数来解决了这个问题。

添加方式如下:

GRUB_CMDLINE_LINUX_DEFAULT

使用:

pci=nocrs pci=realloc

我认为这是cuda7.5kernel3.19之间的冲突。

还有在Nvidia论坛上的[https://devtalk.nvidia.com/default/topic/838768/problems-with-geforce-gtx-980-on-asustek-g20aj/]! - Chang Hyun Park
/etc/default/grub中添加pci=nocrs pci=realloc,然后运行#update-grub - Chang Hyun Park
GeForce 7系列7300 LE:$ lspci -vnn | grep -i VGA -A 12 > Kernel driver in use: nvidia。很好。但是startx和ubuntu-desktop GUI登录仍然会导致没有Unity的屏幕。 :< - Wolfpack'08

0

我可以采用另一种方式,即使用 .run 文件进行安装。 这需要先杀死 X 服务器。 杀死 X 服务器的方法如下。

Make sure you are logged out.
Hit CTRL+ALT+F1 and login using your credentials.
kill your current X server session by typing sudo service lightdm stop or sudo stop lightdm
Enter runlevel 3 (or 5) by typing sudo init 3 (or sudo init 5) and install your .run file.
You might be required to reboot when the installation finishes. If not, run sudo service start lightdm or sudo start lightdm to start your X server again.

然后以管理员身份运行 .run 文件,命令为 sudo sh xxxxx.run

可能会出现错误提示 The distribution-provided pre-install script failed! Are you sure you want to continue?。此时请中止安装。

disable the "Nouveau kernel driver" as sudo update-initramfs -u

然后重新启动系统,重做停止X服务器,进入运行级别3并再次执行sudo sh xxxx.run。

这次您可以忽略消息并继续进行预设失败消息。 然后,您将能够从.run文件安装Nvidia驱动程序。


如果Ubuntu安装在UEFI中,需要禁用快速启动和安全启动,以便加载驱动程序。 - batuman

0

如果您正在从非Nvidia设备显示视频但已安装驱动程序,则必须使用“--no-opengl-files”标志进行安装,以使Gnome正常工作。

我建议通过登录控制台下载单独的驱动程序并手动安装它:

1. Alt Ctrl F2/f3/f4/f5 to get to console.
2. “init 3”  to kill UI
3. relogin if necessary to console
4. wget http://us.download.nvidia.com/tesla/418.67/NVIDIA-Linux-

驱动程序 x86_64-418.67.run

5. sh NVIDIA-Linux-x86_64-418.67.run --no-opengl-files
6. After installation - reboot

-1

我也遇到了这个问题。上面的答案对我没有用。当我安装了最新的驱动程序(nvidia-364)后,它就可以工作了。要运行的命令:

sudo add-apt-repository ppa:xorg-edgers/ppa 
sudo apt-get update 
sudo apt-get install nvidia-364

我认为问题出现在使用不同版本的gcc编译驱动程序模块和Linux内核时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接