Ho un piano per usare TensorFlow distribuito e ho visto che TensorFlow può usare GPU per addestramento e test. In un ambiente cluster, ogni macchina può avere 0 o 1 o più GPU e voglio eseguire il mio grafico TensorFlow in GPU su quante più macchine possibile.
Ho scoperto che quando si esegue tf.Session()
TensorFlow fornisce informazioni sulla GPU nei messaggi di registro come di seguito:
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)
La mia domanda è: come posso ottenere informazioni sull'attuale GPU disponibile da TensorFlow? Posso ottenere informazioni sulla GPU caricate dal registro, ma voglio farlo in un modo più sofisticato e programmatico. Potrei anche limitare intenzionalmente le GPU usando la variabile d'ambiente CUDA_VISIBLE_DEVICES, quindi non voglio sapere un modo per ottenere informazioni sulla GPU dal kernel del sistema operativo.
In breve, voglio una funzione del genere tf.get_available_gpus()
che ritorni ['/gpu:0', '/gpu:1']
se ci sono due GPU disponibili nella macchina. Come posso implementarlo?