状況
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は、まだ混乱を招いていますか?
私はこの問題に遭遇し、実行しています
nvidia-smi
aPIの不一致を通知されました。問題は、私のLinuxディストリビューションにシステムの再起動を必要とするアップデートがインストールされていたため、再起動すると問題が解決したことです。
このスタックオーバーフローの質問 buntu 12.10へのcuda 5サンプルのインストール を参照してください。
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
とにかくそれを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
を再試行します
幸運を
GTX980 GPUを搭載したWindowsマシンでcudaGetDeviceCountのエラー38が発生しました。 NVIDIAサイトからGTX 980用の最新のドライバーをダウンロードしてインストールし、再起動した後、すべて正常です。 CUDAインストーラーが最新のドライバーをインストールしていないようです。
Debianでも非常に似た問題があり、読み込まれたnvidia
モジュールのバージョンがlibcuda1
と異なることがわかりました。
インストールされているnvidia
モジュールを確認するには、次のようにします。
$ Sudo modinfo nvidia-current | grep version
version: 319.82
libcuda1
のバージョンと一致しない場合は、これが問題の原因です。
Sudoを使用してサンプルを実行してみてください(または、 'Sudo su'を実行し、LD_LIBRARY_PATHをcudaライブラリのパスに設定して、rootでサンプルを実行します)。どうやら、Sudoを使用してCUDA 5.0をインストールした可能性があるため、サンプルは通常のユーザーでは実行できません。ただし、rootでサンプルを実行すると、通常のユーザーでもサンプルを実行できるようになります。まだシステムを再起動していないので、再起動後でもサンプルが通常のユーザーで機能するかどうか、またはルートで少なくとも1つのCUDAアプリケーションを実行する必要があります。
Sudoを使用せずにCUDA TookKitをインストールすると、問題が完全になくなる可能性があります。