46 votes

Qu'est-ce que XLA_GPU et XLA_CPU pour tensorflow ?

Je peux lister les périphériques gpu avec le code tensorflow suivant :

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

Le résultat est :

[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"]

Je veux savoir ce qu'est XLA_GPU y XLA_CPU ?

1 votes

Voici le document. tensorflow.org/xla

25voto

an1lam Points 126

Comme indiqué dans la documentation, XLA signifie "algèbre linéaire accélérée". Il s'agit du compilateur d'optimisation relativement nouveau de Tensorflow qui peut accélérer davantage les opérations GPU de vos modèles ML en combinant ce qui était auparavant plusieurs noyaux CUDA en un seul (en simplifiant parce que ce n'est pas si important pour votre question).

Pour répondre à votre question, je crois savoir que XLA est suffisamment distinct du compilateur Tensorflow par défaut pour enregistrer séparément les périphériques GPU et avoir des contraintes légèrement différentes sur les GPU qu'ils traitent comme visibles (voir aquí pour en savoir plus à ce sujet). En regardant la sortie de la commande que vous avez exécutée, il semble que XLA enregistre 1 GPU et que TF normal en enregistre 3.

Je ne sais pas si vous avez des problèmes ou si vous êtes simplement curieux, mais si c'est le cas, je vous recommande de jeter un coup d'oeil au problème que j'ai lié ci-dessus et éste . Tensorflow est pointilleux sur les versions de CUDA/cuDNN avec lesquelles il fonctionne parfaitement et il est possible que vous utilisiez des versions incompatibles. (Si vous n'avez pas de problèmes, alors j'espère que la première partie de ma réponse est suffisante).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X