情况
我有一个2 gpu服务器(Ubuntu 12.04),我用一台GTX 670切换了Tesla C1060。比我在4.2上安装了CUDA 5.0。之后我编译了所有execpt for simpleMPI而没有错误。但是当我运行./devicequery
时,我收到以下错误消息:
foo@bar-serv2:~/NVIDIA_CUDA-5.0_Samples/bin/linux/release$ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
我尝试了什么
为了解决这个问题,我尝试了CUDA-capable device推荐的所有想法,但无济于事:
/dev/nvidia*
在那里,权限是666(crw-rw-rw-)和所有者root:root
foo@bar-serv2:/dev$ ls -l nvidia*
crw-rw-rw- 1 root root 195, 0 Oct 24 18:51 nvidia0
crw-rw-rw- 1 root root 195, 1 Oct 24 18:51 nvidia1
crw-rw-rw- 1 root root 195, 255 Oct 24 18:50 nvidiactl
我尝试用sudo执行代码
CUDA 5.0同时安装驱动程序和库
PS 这里是lspci | grep -i nvidia:
foo@bar-serv2:/dev$ lspci | grep -i nvidia
03:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 670] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GK104 HDMI Audio Controller (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation G94 [Quadro FX 1800] (rev a1)
[更新]
foo@bar-serv2:~/NVIDIA_CUDA-5.0_Samples/bin/linux/release$ nvidia-smi -a
NVIDIA: API mismatch: the NVIDIA kernel module has version 295.59,
but this NVIDIA driver component has version 304.54. Please make
sure that the kernel module and all NVIDIA driver components
have the same version.
Failed to initialize NVML: Unknown Error
如果我使用CUDA 5.0安装程序同时安装驱动程序和库,那怎么可能呢。可能旧的4.2版本,仍然在乱糟糟的东西?
答案 0 :(得分:10)
我遇到了这个问题,正在运行
nvidia-smi
通知我API不匹配。问题是我的Linux发行版安装了需要重新启动系统的更新,因此重新启动解决了这个问题。
答案 1 :(得分:3)
请参阅此堆栈溢出问题Installing cuda 5 samples in Ubuntu 12.10。
Ubuntu 12不是受支持的Linux发行版(尚未推出)。有关参考,请参阅CUDA 5.0 Toolkit Release Notes And Errata
**目前支持的分发
Distribution 32 64 Kernel GCC GLIBC
----------------- -- -- --------------------- ---------- -------------
Fedora 16 X X 3.1.0-7.fc16 4.6.2 2.14.90
ICC Compiler 12.1 X
OpenSUSE 12.1 X 3.1.0-1.2-desktop 4.6.2 2.14.1
Red Hat RHEL 6.x X 2.6.32-131.0.15.el6 4.4.5 2.12
Red Hat RHEL 5.5+ X 2.6.18-238.el5 4.1.2 2.5
SUSE SLES 11 SP2 X 3.0.13-0.27-pae 4.3.4 2.11.3
SUSE SLES 11.1 X X 2.6.32.12-0.7-pae 4.3.4 2.11.1
Ubuntu 11.10 X X 3.0.0-19-generic-pae 4.6.1 2.13
Ubuntu 10.04 X X 2.6.35-23-generic 4.4.5 2.12.1
如果您想在Ubuntu 12上运行,请参阅rpardo的答案。看起来这个发行版而不是安装64位库/usr/lib64
将它们安装到/usr/lib/x86_64-linux-gnu/
我建议在系统上搜索libcuda.so
和libnvidia-ml.so
的所有实例。由于驱动程序不支持此发行版,因此可能已将库安装到LD_LIBRARY_PATH
未指向的路径。然后移动库和/或更改LD_LIBRARY_PATH
以指向此位置(它应该是左侧的第一个路径)。然后重试nvidia-smi
或deviceQuery
答案 2 :(得分:1)
我在使用GTX980 GPU的Windows机器上获得了cudaGetDeviceCount的错误38。 我从NVIDIA网站下载了最新的GTX 980驱动程序后,安装并重新启动,一切都很好。看起来CUDA安装程序没有安装最新的驱动程序。
答案 3 :(得分:0)
尝试使用sudo运行示例(或者,您可以执行“sudo su'”,将LD_LIBRARY_PATH设置为cuda库的路径并在root时运行示例)。显然,由于您可能使用sudo安装了CUDA 5.0,因此样本不会与普通用户一起运行。但是,如果您使用root运行示例,那么您也可以使用普通用户运行示例!我还没有重新启动系统,看看即使重启后样本是否与普通用户一起工作,或者每次你应该至少运行一个带root权限的CUDA应用程序。
如果在不使用sudo的情况下安装CUDA TookKit,问题可能会完全消失。
答案 4 :(得分:0)
我在Debian上遇到了类似的问题,结果表明加载的nvidia
模块的版本与libcuda1
不同。
要检查已安装的nvidia
模块,您应执行以下操作:
$ sudo modinfo nvidia-current | grep version
version: 319.82
如果它与libcuda1
的版本不符合您问题的根源。