16

情况

我有一个 2 gpu 服务器(Ubuntu 12.04),在那里我用 GTX 670 切换了 Tesla C1060。比我在 4.2 上安装了 CUDA 5.0。之后,我为 simpleMPI 编译了所有示例 execpt,没有错误。但是当我运行时,./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 的设备推荐的所有想法,但无济于事:

  • /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 英伟达:

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 版本会不会乱七八糟?

4

5 回答 5

14

我遇到了这个问题,并运行

nvidia-smi

通知我 API 不匹配。问题是我的 Linux 发行版安装了需要重新启动系统的更新,因此重新启动解决了这个问题。

于 2013-06-21T13:20:31.973 回答
3

请参阅此堆栈溢出问题在 Ubuntu 12.10 中安装 cuda 5 示例

  1. Ubuntu 12 还不是受支持的 Linux 发行版。有关参考,请参阅CUDA 5.0 工具包发行说明和勘误表

    ** 当前支持的发行版

    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    
    
  2. 如果您想在 Ubuntu 12 上运行它,请查看rpardo的答案。看起来这个发行版而不是安装 64 位库来/usr/lib64安装它们/usr/lib/x86_64-linux-gnu/

我建议搜索系统上的所有libcuda.so实例libnvidia-ml.so。由于驱动程序不支持此发行版,它可能已将库安装到LD_LIBRARY_PATH. 然后移动库和/或更改LD_LIBRARY_PATH指向此位置(它应该是左侧的第一条路径)。然后重试nvidia-smideviceQuery

祝你好运

于 2012-10-25T06:23:56.197 回答
1

我在带有 GTX980 GPU 的 Windows 机器上的 cudaGetDeviceCount 出现错误 38。在我从 NVIDIA 网站下载 GTX 980 的最新驱动程序后,安装并重新启动,一切都很好。看起来 CUDA 安装程序没有安装最新的驱动程序。

于 2015-07-22T13:51:23.367 回答
0

我在 Debian 上遇到了非常相似的问题,事实证明加载的nvidia模块的版本与libcuda1.

要检查已安装的nvidia模块,您应该执行以下操作:

  $ sudo modinfo nvidia-current | grep version
  version:        319.82

如果它与此版本不匹配,libcuda1则问题的根源。

于 2014-02-15T11:08:52.163 回答
0

尝试使用 sudo 运行示例(或者,您可以执行“sudo su”,将 LD_LIBRARY_PATH 设置为 cuda 库的路径,并以 root 身份运行示例)。显然,由于您可能已经使用 sudo 安装了 CUDA 5.0,因此示例无法使用普通用户运行。但是,如果您使用 root 运行示例,那么您也可以使用普通用户运行示例!我还没有重新启动系统以查看示例是否即使在重新启动后也可以与普通用户一起使用,或者每次您应该使用 root 运行至少一个 CUDA 应用程序。

如果您在不使用 sudo 的情况下安装 CUDA TakeKit,该问题可能会完全消失。

于 2013-02-02T11:03:49.863 回答