Ich habe vor, verteiltes TensorFlow zu verwenden, und ich habe gesehen, dass TensorFlow GPUs zum Trainieren und Testen verwenden kann. In einer Clusterumgebung kann jeder Computer 0 oder 1 oder mehr GPUs haben, und ich möchte mein TensorFlow-Diagramm auf so vielen Computern wie möglich in GPUs ausführen.
Ich habe festgestellt, dass tf.Session()
TensorFlow beim Ausführen von Informationen Informationen zur GPU in den folgenden Protokollmeldungen enthält:
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
Meine Frage ist, wie ich von TensorFlow Informationen über die aktuell verfügbare GPU erhalte. Ich kann geladene GPU-Informationen aus dem Protokoll abrufen, möchte dies jedoch auf eine komplexere, programmgesteuerte Weise tun. Ich könnte GPUs auch absichtlich mithilfe der Umgebungsvariablen CUDA_VISIBLE_DEVICES einschränken, daher möchte ich nicht wissen, wie GPU-Informationen vom Betriebssystemkernel abgerufen werden können.
Kurz gesagt, ich möchte, dass eine solche Funktion zurückgegeben tf.get_available_gpus()
wird, ['/gpu:0', '/gpu:1']
wenn zwei GPUs in der Maschine verfügbar sind. Wie kann ich das umsetzen?