У меня есть план использования распределенного TensorFlow, и я увидел, что TensorFlow может использовать графические процессоры для обучения и тестирования. В среде кластера каждая машина может иметь 0 или 1 или более GPU, и я хочу запустить график TensorFlow в графические процессоры на максимально возможном количестве машин.
Я обнаружил, что при запуске tf.Session()
TensorFlow предоставляет информацию о GPU в сообщениях журнала, как показано ниже:
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)
Мой вопрос: как получить информацию о текущем доступном графическом процессоре от TensorFlow? Я могу получить загруженную информацию GPU из журнала, но я хочу сделать это более сложным, программным способом. Я также мог бы намеренно ограничить использование графических процессоров с помощью переменной среды CUDA_VISIBLE_DEVICES, поэтому я не хочу знать способ получения информации о GPU из ядра ОС.
Короче говоря, мне нужна функция типа tf.get_available_gpus()
, которая вернет ['/gpu:0', '/gpu:1']
, если в машине есть два графических процессора. Как это реализовать?