it-swarm.com.de

Unterstützung für Nvidia CUDA Toolkit 9.2

Was ist der Grund dafür, dass Tensorflow-gpu an eine bestimmte Version von Nvidias CUDA Toolkit gebunden ist? Die aktuelle Version scheint speziell nach 9.0 zu suchen und funktioniert nicht mit etwas Größerem. Ich habe zum Beispiel das neueste Toolkit 9.2 installiert und es zu path hinzugefügt, Tensorflow-gpu funktioniert jedoch nicht und beschwert sich, dass es nach 9.0 sucht.

Ich kann Hauptversionsupdates nicht unterstützen, aber eine untergeordnete Version?

6
cjibo

Das ist eine gute Frage. Laut NVidias Website ,

Der CUDA-Treiber ist abwärtskompatibel. Dies bedeutet, dass Anwendungen, die mit einer bestimmten CUDA-Version kompiliert wurden, in späteren (späteren) Treiberversionen weiterhin funktionieren.

Technisch gesehen sollte es kein Problem sein, spätere Iterationen eines CUDA-Treibers zu unterstützen. In der Praxis werden Sie nicht-offizielle vorgefertigte Binärdateien mit späteren CUDA- und CuDNN-Versionen im Netz finden [1] , [2] . Noch einfacher zu installieren, wird das von conda installierte Paket tensorflow-gpu derzeit mit CUDA 9.2 geliefert.

Wenn Sie zum Thema gefragt werden, ein Dev antwortete ,

Die Antwort auf die Gründe ist, dass Treiberprobleme in 9.1 erforderlich sind, nicht viele neue Funktionen, die wir in cuda 9.1 benötigen, und einige kleinere Probleme. 

Der Grund sieht also ziemlich vage aus - er könnte bedeuten, dass CUDA 9.1 (und 9.2) Grafikkartentreiber erfordern, die vielleicht etwas zu neu sind, um wirklich praktisch zu sein, aber das ist eine nicht ermittelte Vermutung.

Wenn NVidia mit der binären Kompatibilität Recht hat, versuchen Sie möglicherweise, Ihre CUDA 9.2-Bibliothek einfach als CUDA 9.0-Bibliothek umzubenennen oder zu verknüpfen. Dies sollte funktionieren. Aber ich würde meine ganze Arbeit sparen, bevor ich das versuche ... und die Tatsache, dass die Leute so weit gehen, Tensorflow neu zu kompilieren, um spätere CUDA-Versionen zu unterstützen, könnte ein Hinweis darauf sein, wie dies enden könnte.

4
P-Gn

Wenn Sie TF herunterladen, laden Sie eine vorgefertigte Binärdatei herunter .. _. Im Buildprozess ist TF fest mit einer bestimmten Version von Cuda verknüpft, sodass Sie sie nicht mit anderen cuda-Versionen verwenden können. 

Wenn Sie mit der neuen (oder manchmal älteren) Version von cuda arbeiten möchten, müssen Sie TF aus dem Quellcode installieren ( siehe hier ) Wenn Sie wirklich nicht selbst bauen wollen, überprüfen Sie In diesen Repos gibt es andere, die spezifische TF-Binärdateien veröffentlichen, einige Beispiele:

Ich füge hier die CUDA + cuDNN-Versionen hinzu, die für jede Tensorflow-Version erforderlich sind:

(Ich schreibe hier nur über die TF-Versionen, mit denen ich gearbeitet habe, vielleicht verwenden ältere TF-Versionen auch ältere CUDA-Versionen.)

  • vor TF v1.5 cuda 8.0 und cuDNN 6
  • beginnen Sie mit: 1.5 - Vorinstallierte Binärdateien werden jetzt für CUDA 9 und cuDNN 7 erstellt.
3
Kings85

Das Problem liegt nicht bei NVIDIA-Treibern, sondern bei Tensorflow. Ich habe eine Stunde damit verbracht, das Ganze zum Laufen zu bringen, und schließlich wurde mir klar, dass, wenn Sie die vorgefertigte Binärdatei von googleapi.com herunterladen, hart codiert libcudart.so.9.0 geladen wird! Wenn Sie cuda 9.0 und 9.2 installiert haben, funktioniert tensorflow (es werden jedoch tatsächlich die dynamischen Bibliotheken von 9.0 geladen). (Übrigens, ich habe TF mit Anaconda installiert.)

Ein saubererer Ansatz besteht darin, TF von der Quelle aus zu erstellen. Es ist nicht zu kompliziert.

1
theCat