Mam plan wykorzystania rozproszonego TensorFlow i widziałem, że TensorFlow może używać GPU do szkolenia i testowania. W środowisku klastrowym każda maszyna może mieć 0 lub 1 lub więcej procesorów graficznych i chcę uruchomić mój wykres TensorFlow na procesorach GPU na jak największej liczbie komputerów.
Odkryłem, że podczas uruchamiania tf.Session()
TensorFlow podaje informacje o GPU w komunikatach dziennika, jak poniżej:
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)
Moje pytanie brzmi: w jaki sposób mogę uzyskać informacje o aktualnie dostępnym GPU od TensorFlow? Mogę pobrać informacje o GPU z dziennika, ale chcę to zrobić w bardziej wyrafinowany, programistyczny sposób. Mógłbym również celowo ograniczyć GPU za pomocą zmiennej środowiskowej CUDA_VISIBLE_DEVICES, więc nie chcę wiedzieć, w jaki sposób uzyskać informacje o GPU z jądra systemu operacyjnego.
Krótko mówiąc, chcę, aby taka funkcja tf.get_available_gpus()
powróciła, ['/gpu:0', '/gpu:1']
jeśli w komputerze są dostępne dwa GPU. Jak mogę to zaimplementować?