张量流的XLA_GPU和XLA_CPU是什么

时间:2018-10-23 07:32:42

标签: python tensorflow gpu

我可以使用以下张量流代码列出gpu设备:

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_GPUXLA_CPU

2 个答案:

答案 0 :(得分:3)

XLA(加速线性代数)是线性代数的特定领域编译器,可优化TensorFlow计算。结果是提高了服务器和移动平台的速度,内存使用率和可移植性。

GPU后端当前通过LLVM NVPTX后端支持NVIDIA GPU; CPU后端支持多个CPU ISA。

另外,请参见this

答案 1 :(得分:1)

如文档中所述,XLA代表“加速线性代数”。 Tensorflow是一个相对较新的优化编译器,它可以将以前的多个CUDA内核合并为一个,从而进一步加快了ML模型的GPU操作(简化,因为这对您的问题并不重要)。

对于您的问题,我的理解是XLA与默认的Tensorflow编译器足够独立,它们可以分别注册GPU设备,并且对它们视为可见的GPU的约束略有不同(有关更多信息,请参见here) 。查看您运行的命令的输出,看起来XLA正在注册1个GPU,而普通TF正在注册3。

我不确定您是遇到问题还是只是好奇,但如果是前者,我建议您看一下我上面和this one链接的问题。 Tensorflow对可以正常使用的CUDA / cuDNN版本持谨慎态度,并且可能使用的是不兼容的版本。 (如果您没有问题,那么希望我回答的第一部分就足够了。)