J'ai l'intention d'utiliser TensorFlow distribué, et j'ai vu que TensorFlow peut utiliser les GPU pour la formation et les tests. Dans un environnement de cluster, chaque machine peut avoir 0 ou 1 ou plusieurs GPU, et je veux exécuter mon graphe TensorFlow dans les GPU sur autant de machines que possible.
J'ai découvert qu'en exécutant tf.Session()
TensorFlow 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 la suivante : comment puis-je obtenir des informations sur le GPU actuellement disponible dans TensorFlow ? Je peux obtenir des informations sur les GPU chargés à partir du journal, mais je veux le faire d'une manière plus sophistiquée et programmatique. Je pourrais également restreindre les GPU intentionnellement en utilisant la variable d'environnement CUDA_VISIBLE_DEVICES, donc je ne veux pas connaître un moyen d'obtenir des informations sur les GPU à partir du noyau de l'OS.
En bref, je veux une fonction comme tf.get_available_gpus()
qui renverra ['/gpu:0', '/gpu:1']
s'il y a deux GPU disponibles dans la machine. Comment puis-je mettre cela en œuvre ?
2 votes
Pourquoi les choses simples ne sont-elles pas plus facile dans tensorflow ?