Créer à partir de la source

Ce document explique comment créer des composants XLA.

Si vous n'avez pas cloné le dépôt XLA ou installé Bazel, consultez la section "Premiers pas" du document README.

Linux

Configurer

Les builds XLA sont configurés par le fichier .bazelrc dans le répertoire racine du dépôt. Les scripts ./configure ou ./configure.py peuvent être utilisés pour ajuster les paramètres courants.

Si vous devez modifier la configuration, exécutez le script ./configure à partir du répertoire racine du dépôt. Ce script vous demandera l'emplacement des dépendances XLA et demande des options de configuration de compilation supplémentaires (indicateurs de compilation, par exemple). Pour en savoir plus, consultez la section Exemple de session.

./configure

Il existe également une version Python de ce script, ./configure.py. Si vous utilisez un environnement virtuel, python configure.py donne la priorité aux chemins dans l'environnement, tandis que ./configure donne la priorité aux chemins en dehors de l'environnement. Dans les deux cas, vous pouvez modifier la valeur par défaut.

Compatibilité avec les processeurs

Nous vous recommandons d'utiliser un conteneur Docker approprié pour compiler/tester la XLA, tel que le conteneur Docker de TensorFlow:

docker run --name xla -w /xla -it -d --rm -v $PWD:/xla tensorflow/tensorflow:latest-gpu bash

À l'aide d'un conteneur Docker, vous pouvez compiler une XLA compatible avec le processeur à l'aide des commandes suivantes:

docker exec xla ./configure
docker exec xla bazel build //xla/...  --spawn_strategy=sandboxed --test_output=all

Pour créer des cibles XLA compatibles avec le processeur sans Docker, vous devez installer gcc-10:

apt install gcc-10 g++-10

Ensuite, configurez et créez des cibles à l'aide des commandes suivantes:

yes '' | GCC_HOST_COMPILER_PATH=/usr/bin/gcc-10 CC=/usr/bin/gcc-10 TF_NEED_ROCM=0 TF_NEED_CUDA=0 TF_CUDA_CLANG=0 ./configure

bazel build --test_output=all --spawn_strategy=sandboxed //xla/...

Compatibilité avec les GPU

Nous vous recommandons d'utiliser un conteneur Docker de GPU pour créer une XLA compatible avec les GPU, par exemple:

docker run --name xla_gpu -w /xla -it -d --rm -v $PWD:/xla tensorflow/tensorflow:devel-gpu bash

Pour compiler la XLA compatible GPU, exécutez la commande suivante:

docker exec -e TF_NEED_CUDA=1 xla_gpu ./configure
docker exec xla_gpu bazel build --test_output=all --spawn_strategy=sandboxed //xla/...

Si vous souhaitez créer des cibles XLA compatibles avec les GPU sans Docker, vous devez installer les dépendances suivantes en plus des dépendances du processeur: cuda-11.2 et cuDNN-8.1.

Ensuite, configurez et créez des cibles à l'aide des commandes suivantes:

yes '' | GCC_HOST_COMPILER_PATH=/usr/bin/gcc-10 CC=/usr/bin/gcc-10 TF_NEED_ROCM=0 TF_NEED_CUDA=1 TF_CUDA_CLANG=0 ./configure

bazel build --test_output=all --spawn_strategy=sandboxed //xla/...

Pour en savoir plus sur les images Docker de GPU de TensorFlow, vous pouvez consulter ce document.