Tenho um plano para usar o TensorFlow distribuído e vi que o TensorFlow pode usar GPUs para treinamento e teste. Em um ambiente de cluster, cada máquina pode ter 0 ou 1 ou mais GPUs, e eu quero executar meu gráfico do TensorFlow nas GPUs em tantas máquinas quanto possível.
Descobri que, ao executar o tf.Session()
TensorFlow, fornece informações sobre a GPU nas mensagens de log, como abaixo:
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)
Minha pergunta é como obtenho informações sobre a GPU atual disponível no TensorFlow? Posso obter informações de GPU carregadas do log, mas quero fazê-lo de uma maneira mais sofisticada e programática. Também pude restringir as GPUs intencionalmente usando a variável de ambiente CUDA_VISIBLE_DEVICES, por isso não quero saber como obter informações da GPU no kernel do SO.
Em resumo, quero uma função como tf.get_available_gpus()
essa que retornará ['/gpu:0', '/gpu:1']
se houver duas GPUs disponíveis na máquina. Como posso implementar isso?