J'ai l'intention d'utiliser TensorFlow distribué et j'ai vu que TensorFlow pouvait utiliser des GPU pour la formation et les tests. Dans un environnement de cluster, chaque machine peut avoir 0 ou 1 ou plusieurs GPU, et je souhaite exécuter mon graphique TensorFlow dans des GPU sur autant de machines que possible.
J'ai constaté que lors de l'exécution de tf.Session()
TensorFlow, il donne des informations sur le GPU dans les messages du journal comme ci-dessous:
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)
Ma question est de savoir comment obtenir des informations sur le GPU actuellement disponible auprès de TensorFlow? Je peux obtenir des informations GPU chargées à partir du journal, mais je veux le faire de manière programmatique plus sophistiquée. Je pourrais également restreindre intentionnellement les GPU en utilisant la variable d'environnement CUDA_VISIBLE_DEVICES, donc je ne veux pas connaître un moyen d'obtenir des informations GPU à partir du noyau du système d'exploitation.
En bref, je veux qu'une fonction comme tf.get_available_gpus()
celle-ci revienne ['/gpu:0', '/gpu:1']
s'il y a deux GPU disponibles dans la machine. Comment puis-je mettre en œuvre cela?