web-dev-qa-db-ja.com

Ubuntu 14.04でCUDA 7.0テストが失敗しました

Nvidia公式ガイドに従ってcuda-7.0をインストールしましたが、完全な説明が提供されないいくつかの問題がありました。そして、私のテストサンプルはmakeでビルドできません。インストール中に見つけたいくつかの間違いについて説明します。

環境

NVIDIA Corporation GK107 [GeForce GT 640 OEM]によって返されるlspci | grep -i nvidiaを使用して、64ビットUbuntu 14.04で作業しています。私のgccバージョンは4.4.7です。

パッケージ

https://developer.nvidia.com/cuda-downloads 「Linux x86-> Ubuntu 14.04-> Local Package Installer」からダウンロードしましたが、確認するmd5値は提供されません。しかし、後でインストールは見たところうまくいきました。

installation

やった:

Sudo dpkg -i cuda*.deb # returned: OK
Sudo apt-get update
Sudo apt-get install cuda

テスト

公式ガイドが言ったように、まず環境パスを設定する必要があります。変更後:

cd /usr/local/cuda-7.0

パスを追加できます:

export PATH=/usr/local/cuda-7.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH

最初の問題は次のとおりです。端末を閉じるたびにパスが失われます。最初のディレクトリの下にnvccがあるnvcc -Vで確認できるので。

サンプルをコンパイルしようとしたとき:

cd /usr/local/cuda-7.0/samples
Sudo make

最後にエラーを返しました:

make[1]: entering directory `/usr/local/cuda-7.0/samples/2_Graphics/Mandelbrot'
/usr/local/cuda-7.0/bin/nvcc -ccbin g++   -m64      -gencode
Arch=compute_20,code=sm_20 -gencode Arch=compute_30,code=sm_30 -gencode
Arch=compute_35,code=sm_35 -gencode Arch=compute_37,code=sm_37 -gencode
Arch=compute_50,code=sm_50 -gencode Arch=compute_52,code=sm_52 -gencode
Arch=compute_52,code=compute_52 -o Mandelbrot Mandelbrot.o Mandelbrot_cuda.o Mandelbrot_gold.o  -L../../common/lib/linux/x86_64 -L/usr/lib/"nvidia-346" -lGL -lGLU -lX11 -lXi -lXmu -lglut -lGLEW
/usr/bin/ld: warning: libnvidia-tls.so.346.46, needed by /usr/lib/nvidia-346/libGL.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libnvidia-glcore.so.346.46, needed by /usr/lib/nvidia-346/libGL.so, not found (try using -rpath or -rpath-link)
/usr/lib/nvidia-346/libGL.so:‘_nv018tls’ undefined reference
...
# list of undefined reference

そして、私はこれ以上先へ進むことができません。

他のチェック

  • cat /proc/driver/nvidia/versionにはディレクトリ/proc/driverがないため、nvidia/は機能しません。

  • /dev/nvidia*は終了しません。

  • nvidia-smiコマンドが見つかりません。

これらの問題は、再起動後に発生します。


いくつかの修正

現在のユーザーの~/.profileの下にこれらの2行を追加することにより、パスとlibの設定を修正しました。

export PATH=/usr/local/cuda-7.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH

そして、有用なリンクを見つけました: buntu 14.04でのCUDAのインストールとテスト 代わりに実行ファイルでインストールする必要があるようです。

3
knh190

いくつかの試行の後、私は最終的に解決策を見つけました。 CUDAのインストールは苦痛です。そのため、元に戻す方法のないシステム構成が破損し続けます。

インストールのソリューションは、tty1(コマンドライン)モードで実行する必要があります。NVIDIAドライバをインストールする前にGUIサービスを終了する必要があるためです。働くことを拒否する。そして、.runファイルが必要です。理由により、.debファイルが自分自身を正しく構成することは決してなく、それらを機能させることもできません。 look buntu 14.04でのCUDAのインストールとテスト 同様のソリューションについて。

私の証跡によると、言及する必要があります:

  • aptを介したインストールは成功しません。
  • debファイルによるインストールは成功しません。
3
knh190

同じ問題がありました。次のコマンドを実行すると、問題をテストして理解するのに役立ちました。

ldd /usr/lib/nvidia-346/libGL.so.346.46

最後に、以下を~/.profileに追加すると問題が解決しました:

export LD_LIBRARY_PATH=/usr/lib/nvidia-346:$LD_LIBRARY_PATH

実際、/usr/lib/nvidia-346パスはリンカーに与えられていません。

3
Cory86

私も、Ubuntu 14.04、x86_64 with cuda 7.5で同じ問題に直面しました。警告は次のとおりです。

/usr/bin/ld: warning: libnvidia-tls.so.352.63, needed by /usr/lib/nvidia-352/libGL.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libnvidia-glcore.so.352.63, needed by /usr/lib/nvidia-352/libGL.so, not found (try using -rpath or -rpath-link)

これはldd /usr/lib/nvidia-352/libGL.soの出力でした:

$ ldd /usr/lib/nvidia-352/libGL.so
linux-vdso.so.1 =>  (0x00007ffc1c5d4000)
libnvidia-tls.so.352.63 =>
libnvidia-glcore.so.352.63 =>
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f161512e000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f1614f1c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1614b57000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1614952000)
libm.so.6 => /lib/x86_64-linux-(0x00007f1615488000)gnu/libm.so.6 (0x00007f161464c000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f161442d000)
/lib64/ld-linux-x86-64.so.2 (0x0000557aa9c51000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f1614228000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f1614022000)

~/.zshrc(bashを使用している場合は~/.bashrc...に次の行を追加しました。

export LD_LIBRARY_PATH=/usr/lib/nvidia-352:$LD_LIBRARY_PATH

したがって、次は~/.zshrcのc​​udaに関連するエントリです。

export PATH=$PATH:/usr/local/cuda-7.5/bin
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/nvidia-352:$LD_LIBRARY_PATH

それから私は~/.zshrcを調達しました

source ~/.zshrc

ldd /usr/lib/nvidia-352/libGL.soが表示されます:

linux-vdso.so.1 =>  (0x00007ffc1c5d4000)
libnvidia-tls.so.352.63 => tls/libnvidia-tls.so.352.63 (0x00007f1617f1c000)
libnvidia-glcore.so.352.63 (0x00007f1615488000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f161512e000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f1614f1c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1614b57000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1614952000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f161464c000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f161442d000)
/lib64/ld-linux-x86-64.so.2 (0x0000557aa9c51000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f1614228000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f1614022000)

この後、NVIDIA_CUDA-7.5_Samplesディレクトリ内のmakeディレクトリは正常に完了しました。

1
Aby Sam Ross

同じ問題がありました。 Ubuntu 14.04のnvidia Webサイトから.debパッケージを使用してインストールしました。私にとっての解決策は:

  • export LD_LIBRARY_PATH=/usr/lib/nvidia-346:$LD_LIBRARY_PATHを〜/ .bashrcに追加します
  • オープンターミナルタイプ:
  • サンプルフォルダーにcd
  • Sudo bash
  • source ~./bashrc
  • / usr/lib/nvidia-346がLD_LIBRARY_PATHにあるかどうかを確認します
  • make -j

これで解決しました。

Cuda-repo-ubuntuXXX_AMD64.debファイルを使用してCUDAをインストールする場合、いくつかの許可の問題があります。私が持っています

0
StefanoHo