CUDA のインストールを確認しようとしていますが、いくつか問題が発生しています。GPU コンピューティング SDK に付属するすべての例を正常にビルドしました。ただし、deviceQuery を実行しようとすると、libcudart.so.4 が見つからないというエラーが表示されます。
しかし:
echo $LD_LIBRARY_PATH
戻り値
/usr/local/cuda/lib64
そのディレクトリ内には次のファイルがあります:
libcudart.so.4
ライブラリが見つからない原因として、他にどのようなエラーが考えられますか?
フランの回答の編集:
- はい、変数をエクスポートしています
- このプログラムが64ビットかどうかはわかりませんが、64ビットSDKインストールの一部として提供されたので、64ビットであると仮定したいと思います。
lddの出力:
#ldd deviceQuery linux-vdso.so.1 => (0x00007fff94ecc000) libcudart.so.4 => /usr/local/cuda/lib64/libcudart.so.4 (0x00007f2d4658a000) libcuda.so.1 => /usr/lib64/libcuda.so.1 (0x00007f2d45b1e000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000037f1200000) libm.so.6 => /lib64/libm.so.6 (0x00000037e5e00000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000037f0600000) libc.so.6 => /lib64/libc.so.6 (0x00000037e5600000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000037e5a00000) libdl.so.2 => /lib64/libdl.so.2 (0x00000037e5200000) librt.so.1 => /lib64/librt.so.1 (0x00000037e6200000) libz.so.1 => /lib64/libz.so.1 (0x00000037e6e00000) /lib64/ld-linux-x86-64.so.2 (0x00000037e4e00000)
通常のユーザーとして実行できることが分かりましたが、その場合、ユーザーには GPU へのアクセス権がないため、失敗します。sudo で実行すると、ファイルが見つからないというエラーが発生します。
ランニング:
sudo ldd deviceQuery
出力の 2 行目に libcudart.so.4 が欠落していることを確認します。
答え1
LD_LIBRARY_PATH
プログラムを実行しているシェルからエクスポートしましたか?プログラムと共有ライブラリは両方とも 64 ビット バイナリですか (または両方とも 32 ビット バイナリですか)?
の出力は何ですか
ldd program
、program
実行時にライブラリを見つけることができないプログラムはどこにありますか?
答え2
ソースからビルドする場合は、--prefix= または --libdir= を介して既存のライブラリ パスを使用するようにビルドするオプションがあります。それ以外の場合は、次の操作を実行できます。
- /etc/profile の LD_LIBRARY_PATH に /usr/local/cuda/lib64 を追加します。
- 手動で移動し(たとえば/usr/local/)、/usr/local/cudaから/usr/localへのシンボリックリンクを作成します。
- LDPRELOAD を使用して不足しているライブラリを手動でプリロードします。
LD_LIBRARY_PATH について簡単に説明します。追加するパスが増えるほど、動的リンカーがパスを見つけるために調べる必要のあるパスが増えることに注意してください。