2017-08-19 7 views
1

Ich habe Probleme mit der Ausführung von Tensorflow auf der GPU auf meiner MSI Windows 10 Maschine mit NVIDIA GeForce 960M. Ich denke, ich habe bereits alle Hinweise verwendet, die im Internet zu diesem Thema verfügbar sind, und ich kann nicht erfolgreich sein. Die Frage ist also, ob Sie mir einen zusätzlichen Hinweis geben können, der mir beim Erreichen des Ziels helfen könnte Tensorflow auf einer GPU?Wie kann Tensorflow GPU auf einer Windows-Maschine verwenden?

Bo präziser:

Also, ich heruntergeladen und installiert CUDA Toolkit 8.0 (ich die Datei heruntergeladen cuda_8.0.61_win10.exe und die Datei mit einem Patch cuda_8 .0.61.2_windows.exe). Ich habe beide ausgeführt und ließ sie mit den Standardoptionen laufen. Um dann zu überprüfen, ob die Installation erfolgreich war, habe ich deviceQuery aus dem CUDA Samples-Set kompiliert und erfolgreich ausgeführt. Siehe die Ergebnisse unter:

<pre> 
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Debug>deviceQuery.exe 
deviceQuery.exe Starting... 

CUDA Device Query (Runtime API) version (CUDART static linking) 

Detected 1 CUDA Capable device(s) 

Device 0: "GeForce GTX 960M" 
    CUDA Driver Version/Runtime Version   8.0/8.0 
    CUDA Capability Major/Minor version number: 5.0 
    Total amount of global memory:     2048 MBytes (2147483648 bytes) 
    (5) Multiprocessors, (128) CUDA Cores/MP:  640 CUDA Cores 
    GPU Max Clock rate:       1176 MHz (1.18 GHz) 
    Memory Clock rate:        2505 Mhz 
    Memory Bus Width:        128-bit 
    L2 Cache Size:         2097152 bytes 
    Maximum Texture Dimension Size (x,y,z)   1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096) 
    Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers 
    Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers 
    Total amount of constant memory:    65536 bytes 
    Total amount of shared memory per block:  49152 bytes 
    Total number of registers available per block: 65536 
    Warp size:          32 
    Maximum number of threads per multiprocessor: 2048 
    Maximum number of threads per block:   1024 
    Max dimension size of a thread block (x,y,z): (1024, 1024, 64) 
    Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535) 
    Maximum memory pitch:       2147483647 bytes 
    Texture alignment:        512 bytes 
    Concurrent copy and kernel execution:   Yes with 1 copy engine(s) 
    Run time limit on kernels:      Yes 
    Integrated GPU sharing Host Memory:   No 
    Support host page-locked memory mapping:  Yes 
    Alignment requirement for Surfaces:   Yes 
    Device has ECC support:      Disabled 
    CUDA Device Driver Mode (TCC or WDDM):   WDDM (Windows Display Driver Model) 
    Device supports Unified Addressing (UVA):  Yes 
    Device PCI Domain ID/Bus ID/location ID: 0/1/0 
    Compute Mode: 
    < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > 

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 960M 
Result = PASS 
</pre> 

... so ist es sieht nicht gut aus, zumindest für mich ... Dann habe ich heruntergeladen und entpackt cuDNN v5.1. Zusätzlich habe ich manuell den Pfad zur DLL-Datei dieser Bibliothek zur PATH-Systemvariablen hinzugefügt. Ich habe auch überprüft, ob meine Grafikkarte in der Liste der kompatiblen Geräte aufgeführt war und es war.

  • Dann habe ich Tensorflow installiert. Dafür habe ich den folgenden Befehl ein:

    *pip install tensorflow-gpu* 
    

Es ohne Fehlermeldungen installiert wurde. Die letzte Meldung war:

Successfully installed tensorflow-1.3.0 tensorflow-gpu-1.3.0 
  • Ich habe versucht, ein einfaches Python-Programm zu laufen zu überprüfen, ob tensoflow ist Arbeiten.

Das Programm war:

import tensorflow as tf 
device_name = "/gpu:0" # ...it works fine with "/cpu:0"; it doesn't with "/gpu:0" 
with tf.device(device_name): 
    ran_matrix = tf.random_uniform(shape=(1,1), minval=0, maxval=1) 
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess: 
    result = sess.run(ran_matrix) 
    print(result) 

... und das Ergebnis war (leider) wie in der Abbildung unten. Ich habe es auf der Ebene von PyCharm ausgeführt.

the result

Die wichtigste Fehlermeldung lautet:

File "C:\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation 'random_uniform/sub': Operation was explicitly assigned to /device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]. Make sure the device specification refers to a valid device. 
    [[Node: random_uniform/sub = Sub[T=DT_FLOAT, _device="/device:GPU:0"](random_uniform/max, random_uniform/min)]] 

Zusätzlich ich das gleiche Programm mit CPU statt GPU auszuführen versucht. Dazu habe ich den Parameter in der folgenden Zeile geändert: device_name = "/ cpu: 0"

... und es hat gut funktioniert ...

Ich suchte im Internet nach Hinweisen, was hier falsch sein kann, aber ich kann keine spezifische Antwort finden (die meisten Diskussionen betreffen Probleme in Ubuntu und ich verwende Windows 10 und ich kann es nicht ändern).

Wo soll ich anfangen, das Problem zu lösen?

+0

Könnten Sie versuchen, 'python -c" import Tensorflow; print (tensorflow .__ Version __) "' und zeigen ihre Ergebnisse (vorzugsweise kopieren und einfügen, kein Screenshot)? – liori

+0

Das Ergebnis, das ich bekomme, ist: 1.3.0 – Piotr

+0

dann sieht es aus wie Tensorflow kann die CUDA DLL-Dateien nicht erkennen; Eine Liste von ihnen sollte durch diesen Befehl gedruckt worden sein. Kann nicht wirklich mehr helfen, ohne selbst Fenster zu benutzen. Aber versuche vielleicht Tensorflow neu zu installieren oder CUDA dlls in ein Verzeichnis zu verschieben, in dem Python sie findet, oder das Verzeichnis, in dem sie liegen, der Variablen PATH hinzufüge ... – liori

Antwort

0

Check this: https://github.com/tensorflow/tensorflow/issues/12416

ich konfrontiert gleiche Problem nach tf 1,2-1,3 Aktualisierung und fixiert sie durch cuDNN v6.0 zu aktualisieren.

+0

[Wie schreibe ich eine gute Antwort?] (Https://stackoverflow.com/help/how-to-answer) –

+0

Ich habe gerade versucht, CuDNN zu v6.0, sowie zu v7.0 und es zu aktualisieren hat leider nicht geholfen. – Piotr

1

Ich habe gerade das Problem gelöst, indem ich Tensorflow-GPU und alle abhängigen Bibliotheken neu installiere (Ich habe es schon vor einem Monat versucht, aber bis dahin hat es nicht funktioniert;). Einige der abhängigen Bibliotheken hatten sicher neue Versionen, aber ich bin nicht in der Lage zu sagen, welches die Ursache des Problems war.