Wie setzen bestimmte gpu in tensorflow?
Ich angeben will, die die gpu zum ausführen von meinem Prozess. Und ich habe es wie folgt aus:
import tensorflow as tf
with tf.device('/gpu:0'):
a = tf.constant(3.0)
with tf.Session() as sess:
while True:
print sess.run(a)
Aber noch der Speicher in beiden meiner zwei Grafikkarten.
| 0 7479 C python 5437MiB
| 1 7479 C python 5437MiB
TensorFlow initialisiert alle GPUs sieht Sie, müssen Sie
Ok, ich habe es. danke.
CUDA_VISIBLE_DEVICES
zu begrenzen sichtbar GPUsOk, ich habe es. danke.
InformationsquelleAutor luohao | 2016-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dass müssen Sie
CUDA_VISIBLE_DEVICES=1
. Oder was immer die GPU, die Sie verwenden möchten. Wenn du nur eine GPU sichtbar, Sie bezeichnen es als/gpu:0
unabhängig davon, was Sie setzen der environment-variable.Mehr info auf, dass die environment-variable: https://devblogs.nvidia.com/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/
InformationsquelleAutor Russell
Gibt es 3 Möglichkeiten, dies zu erreichen:
Mit
CUDA_VISIBLE_DEVICES
Umgebungsvariable.durch die Einstellung der Umgebungsvariable
CUDA_VISIBLE_DEVICES=1
macht nur Gerät 1 sichtbar und durch die EinstellungCUDA_VISIBLE_DEVICES=0,1
macht die Geräte 0 und 1 sichtbar.Mit
with tf.device('/gpu:2')
und das erstellen der Grafik. Dann wird es mit GPU-Gerät 2 ausgeführt werden.Mit
config = tf.ConfigProto(device_count = {'GPU': 1})
und dannsess = tf.Session(config=config)
. Dies wird mit GPU-Gerät 1.In der Theorie sollte das funktionieren, aber manchmal müssen Sie physisch Umschalten der Grafikkarten. Warum? Keine Ahnung! Aber es funktioniert für mich, wenn diese Methode fehlschlägt.
Ich glaube nicht, dass Teil drei ist völlig korrekt. Wie der name schon sagt
device_count
legt nur die Anzahl der Geräte, nicht die. Von der tf-source-code:message ConfigProto { // Map from device type name (e.g., "CPU" or "GPU" ) to maximum // number of devices of that type to use. If a particular device // type is not found in the map, the system picks an appropriate // number. map<string, int32> device_count = 1;
finden Sie unter github.com/tensorflow/tensorflow/blob/r1.11/tensorflow/core/...InformationsquelleAutor Nandeesh
TF würde zuordnen alle verfügbaren Speicher auf jedem sichtbar GPU, wenn nicht etwas anderes gesagt bekommen.
Können Sie festlegen
CUDA_VISIBLE_DEVICES=0,1
wenn es eine einmalige Sache.Wenn Sie mit einem cluster, und Sie nicht wollen, um zu verfolgen, welche die GPU ausgelastet ist und geben Sie manuell die Informationen, die Sie aufrufen können, nächsten Methode vor der Erstellung einer Sitzung. Es wird herausfiltern GPUs, die bereits in Gebrauch sind (nicht haben viel des verfügbaren Speichers), und setzen Sie CUDA_VISIBLE_DEVICES für Sie.
Funktion:
Einschränkungen: wenn Sie beginnen, mehrere scripts auf einmal würde es dennoch zu einer Kollision, weil der Speicher nicht zugewiesen ist immideately, wenn Sie konstruieren eine Sitzung. In Fall ist es ein problem für Sie ist, können Sie eine randomisierte version, wie in meinem ursprünglichen source code: mask_busy_gpus()
InformationsquelleAutor yauheni_selivonchyk
Können Sie ändern, die GPU-Optionen, Einstellungen, indem Sie am Anfang Ihrer python-Skript:
"0" ist dabei der name der GPU, die Sie verwenden möchten. Sie können die Liste der GPU zur Verfügung, indem Sie den Befehl nvidia-smi in der terminal-Eingabeaufforderung.
InformationsquelleAutor Tiphaine Champetier