web-dev-qa-db-ja.com

CUDAランタイムAPIエラー38:CUDA対応デバイスが検出されません

状況

Tesla C1060をGTX 670に切り替えた2 gpuサーバー(Ubuntu 12.04)を持っています。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 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)

[update]

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インストーラーを使用してドライバーとlibsを同時にインストールするとどうなりますか。古いバージョン4.2は、まだ混乱を招いていますか?

15
Framester

私はこの問題に遭遇し、実行しています

nvidia-smi

aPIの不一致を通知されました。問題は、私のLinuxディストリビューションにシステムの再起動を必要とするアップデートがインストールされていたため、再起動すると問題が解決したことです。

11
cratonica

このスタックオーバーフローの質問 buntu 12.10へのcuda 5サンプルのインストール を参照してください。

  1. Ubuntu 12は(まだ)サポートされているLinuxディストリビューションではありません。参考のために CUDA 5.0 Toolkitリリースノートとエラッタ を参照してください

    **現在サポートされているディストリビューション

    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-smiまたはdeviceQueryを再試行します

幸運を

3
Przemyslaw Zych

GTX980 GPUを搭載したWindowsマシンでcudaGetDeviceCountのエラー38が発生しました。 NVIDIAサイトからGTX 980用の最新のドライバーをダウンロードしてインストールし、再起動した後、すべて正常です。 CUDAインストーラーが最新のドライバーをインストールしていないようです。

1
Manu

Debianでも非常に似た問題があり、読み込まれたnvidiaモジュールのバージョンがlibcuda1と異なることがわかりました。

インストールされているnvidiaモジュールを確認するには、次のようにします。

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

libcuda1のバージョンと一致しない場合は、これが問題の原因です。

0
jb.

Sudoを使用してサンプルを実行してみてください(または、 'Sudo su'を実行し、LD_LIBRARY_PATHをcudaライブラリのパスに設定して、rootでサンプルを実行します)。どうやら、Sudoを使用してCUDA 5.0をインストールした可能性があるため、サンプルは通常のユーザーでは実行できません。ただし、rootでサンプルを実行すると、通常のユーザーでもサンプルを実行できるようになります。まだシステムを再起動していないので、再起動後でもサンプルが通常のユーザーで機能するかどうか、またはルートで少なくとも1つのCUDAアプリケーションを実行する必要があります。

Sudoを使用せずにCUDA TookKitをインストールすると、問題が完全になくなる可能性があります。

0
hedayat