web-dev-qa-db-ja.com

Tensorflowはlibcuda.so.1を開けません

GeForce 940 MXを搭載したラップトップを持っています。 Tensorflowを起動してGPUで実行したい。 Tensorflowをインポートすると、チュートリアルページからすべてをインストールしました。

>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened  CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:119] Couldn't open CUDA library libcuda.so.1. LD_LIBRARY_PATH: 
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:165] hostname: workLaptop
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: Not found: was unable to find libcuda.so DSO loaded into this program
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: Permission denied: could not open driver version path for reading: /proc/driver/nvidia/version
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1092] LD_LIBRARY_PATH: 
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1093] failed to find libcuda.so on this system: Failed precondition: could not dlopen DSO: libcuda.so.1; dlerror: libnvidia-fatbinaryloader.so.367.57: cannot open shared object file: No such file or directory
 I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
>>> 

その後、CPUでの実行に切り替わると思います。

編集:私はすべてを否定した後、ゼロから始めました。今、私はこれを取得します:

>>> import tensorflow
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:119] Couldn't open CUDA library libcuda.so.1. LD_LIBRARY_PATH: :/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:165] hostname: workLaptop
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: Not found: was unable to find libcuda.so DSO loaded into this program
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: Permission denied: could not open driver version path for reading: /proc/driver/nvidia/version
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1092] LD_LIBRARY_PATH: :/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1093] failed to find libcuda.so on this system: Failed precondition: could not dlopen DSO: libcuda.so.1; dlerror: libnvidia-fatbinaryloader.so.367.57: cannot open shared object file: No such file or directory
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
9
Qubix

libcuda.so.1は、NVIDIAドライバーのバージョンに固有のファイルへのシンボリックリンクです。間違ったバージョンを指しているか、存在しない可能性があります。

# See where the link is pointing.  
ls  /usr/lib/x86_64-linux-gnu/libcuda.so.1 -la
# My result:
# lrwxrwxrwx 1 root root 19 Feb 22 20:40 \
# /usr/lib/x86_64-linux-gnu/libcuda.so.1 -> ./libcuda.so.375.39

# Make sure it is pointing to the right version. 
# Compare it with the installed NVIDIA driver.
nvidia-smi

# Replace libcuda.so.1 with a link to the correct version
cd /usr/lib/x86_64-linux-gnu
Sudo ln -f -s libcuda.so.<yournvidia.version> libcuda.so.1

同じ方法で、libcuda.so.1から LD_LIBRARY_PATHディレクトリ の同じ名前のリンクへの別のシンボリックリンクを作成します。

また、libcuda.soという名前の/ usr/lib/x86_64-linux-gnuにlibcuda.so.1へのリンクを作成する必要がある場合もあります。

8
Alex Payne

まだこれに遭遇した場合に備えて。最初に、コンテナを実行するために--runtime=nvidiaパラメータを追加してください。

docker run --runtime=nvidia -t tensorflow/serving:latest-gpu

ここで、tensorflow/serving:latest-gpuは、Dockerイメージの名前です。

8
Rodrigo Loza

解決したばかりの場合、GPUドライバーを最新に更新してcudaツールキットをインストールしていました。最初に、ppaが追加され、GPUドライバーがインストールされました。

Sudo add-apt-repository ppa:graphics-drivers/ppa
Sudo apt update
Sudo apt install nvidia-390

Ppaを追加すると、ドライバーバージョンのオプションが表示され、390は表示された最新の「安定した」バージョンでした。

次に、cudaツールキットをインストールします。

Sudo apt install nvidia-cuda-toolkit

次に再起動します。

Sudo reboot

最初のステップで最初にインストールした390よりも新しいバージョンにドライバーを更新しました(410でした。これはAWS上のp2.xlargeインスタンスでした)。

1
wordsforthewise