it-swarm.com.de

Tensorflow kann libcuda.so.1 nicht öffnen

Ich habe einen Laptop mit einer GeForce 940 MX. Ich möchte Tensorflow auf die GPU bringen. Ich habe alles von ihrer Tutorial-Seite installiert, jetzt, wenn ich Tensorflow importiere, bekomme ich

>>> 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
>>> 

danach glaube ich, dass es nur noch auf der CPU läuft. 

EDIT: Nachdem ich alles angefangen hatte, fing ich von vorne an. Jetzt bekomme ich das:

>>> 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
8
Qubix

libcuda.so.1 ist ein symbolischer Link zu einer Datei, die für die Version Ihrer NVIDIA-Treiber spezifisch ist. Es kann auf die falsche Version verweisen oder nicht vorhanden sein.

# 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

Erstellen Sie nun auf dieselbe Weise einen weiteren Symlink aus libcuda.so.1 zu einem Link mit demselben Namen in Ihrem Verzeichnis LD_LIBRARY_PATH .

Möglicherweise müssen Sie auch einen Link zu libcuda.so.1 in/usr/lib/x86_64-linux-gnu mit dem Namen libcuda.so erstellen

5
Alex Payne

Falls noch jemand auf dieses trifft. Stellen Sie zunächst sicher, dass Sie den Parameter --runtime=nvidia hinzufügen, um den Container auszuführen.

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

dabei ist tensorflow/serving:latest-gpu der Name des Andockbildes.

3
Rodrigo Loza

In dem Fall, den ich gerade gelöst habe, wurde der GPU-Treiber auf den neuesten Stand gebracht und das cuda-Toolkit installiert. Zunächst wurde der ppa hinzugefügt und der GPU-Treiber installiert:

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

Nach dem Hinzufügen des ppa wurden Optionen für Treiberversionen angezeigt, und 390 war die neueste, stabile Version, die gezeigt wurde.

Dann installieren Sie das cuda-Toolkit:

Sudo apt install nvidia-cuda-toolkit

Dann neustarten:

Sudo reboot

Die Treiber wurden auf eine neuere Version als die ursprünglich im ersten Schritt installierte 390 aktualisiert (es war 410; dies war eine Instanz von p2.xlarge in AWS).

1
wordsforthewise