Что такое XLA_GPU и XLA_CPU для тензорного потока

Я могу перечислить устройства GPU поют следующий код tenorflow:

import tensorflow as tf
from tensorflow.python.client import device_lib
print device_lib.list_local_devices()

Результат:

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 17897160860519880862, name: "/device:XLA_GPU:0"
 device_type: "XLA_GPU"
 memory_limit: 17179869184
 locality {
 }
 incarnation: 9751861134541508701
 physical_device_desc: "device: XLA_GPU device", name: "/device:XLA_CPU:0"
 device_type: "XLA_CPU"
 memory_limit: 17179869184
 locality {
 }
 incarnation: 5368380567397471193
 physical_device_desc: "device: XLA_CPU device", name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 21366299034
 locality {
   bus_id: 1
   links {
     link {
       device_id: 1
       type: "StreamExecutor"
       strength: 1
     }
   }
 }
 incarnation: 7110958745101815531
 physical_device_desc: "device: 0, name: Tesla P40, pci bus id: 0000:02:00.0, compute capability: 6.1", name: "/device:GPU:1"
 device_type: "GPU"
 memory_limit: 17336821351
 locality {
   bus_id: 1
   links {
     link {
       type: "StreamExecutor"
       strength: 1
     }
   }
 }
 incarnation: 3366465227705362600
 physical_device_desc: "device: 1, name: Tesla P40, pci bus id: 0000:03:00.0, compute capability: 6.1", name: "/device:GPU:2"
 device_type: "GPU"
 memory_limit: 22590563943
 locality {
   bus_id: 2
   numa_node: 1
   links {
     link {
       device_id: 3
       type: "StreamExecutor"
       strength: 1
     }
   }
 }
 incarnation: 8774017944003495680
 physical_device_desc: "device: 2, name: Tesla P40, pci bus id: 0000:83:00.0, compute capability: 6.1", name: "/device:GPU:3"
 device_type: "GPU"
 memory_limit: 22590563943
 locality {
   bus_id: 2
   numa_node: 1
   links {
     link {
       device_id: 2
       type: "StreamExecutor"
       strength: 1
     }
   }
 }
 incarnation: 2007348906807258050
 physical_device_desc: "device: 3, name: Tesla P40, pci bus id: 0000:84:00.0, compute capability: 6.1"]

Я хочу знать, что такое XLA_GPU и XLA_CPU?

Ответ 1

Как упомянуто в документах, XLA расшифровывается как "ускоренная линейная алгебра". Это Tensorflow относительно новый оптимизирующий компилятор, который может еще больше ускорить работу графических процессоров ваших моделей ML, объединяя то, что раньше было несколькими ядрами CUDA, в одно (упрощение, потому что это не так важно для вашего вопроса).

На ваш вопрос, насколько я понимаю, XLA достаточно отделен от стандартного компилятора Tensorflow, чтобы они отдельно регистрировали устройства с графическим процессором и имели немного другие ограничения в отношении того, какие графические процессоры они рассматривают как видимые (подробнее см. здесь). Если посмотреть на вывод команды, которую вы выполнили, похоже, что XLA регистрирует 1 графический процессор, а обычный TF регистрирует 3.

Я не уверен, что у вас есть проблемы или вам просто любопытно, но если это первое, я рекомендую взглянуть на проблему, с которой я столкнулся выше, и на эту. Tensorflow привередлив относительно того, с какими версиями CUDA/cuDNN он работает безупречно, и, возможно, вы используете несовместимые версии. (Если у вас нет проблем, то, надеюсь, первой части моего ответа будет достаточно.)