גרסת מקור

במסמך הזה מוסבר איך לבנות רכיבי XLA.

אם לא שכפלתם את המאגר של XLA או התקנתם את Bazel, עיינו בקטע "תחילת העבודה" במסמך README.

Linux

הגדרה

גרסאות build XLA מוגדרות באמצעות הקובץ .bazelrc בספריית השורש של המאגר. אפשר להשתמש בסקריפטים ./configure או ./configure.py כדי לשנות את ההגדרות הנפוצות.

כדי לשנות את ההגדרות האישיות, מריצים את הסקריפט ./configure מספריית השורש של המאגר. הסקריפט יציג את המיקום של יחסי תלות של XLA ויבקש אפשרויות הגדרה נוספות ל-build (לדוגמה, דגלי הידור). פרטים נוספים מופיעים בקטע סשן לדוגמה.

./configure

קיימת גם גרסת python של הסקריפט הזה, ./configure.py. אם אתם משתמשים בסביבה וירטואלית, ב-python configure.py ניתנת עדיפות לנתיבים בתוך הסביבה, בעוד שב-./configure ניתנת עדיפות לנתיבים מחוץ לסביבה. בשני המקרים תוכלו לשנות את ברירת המחדל.

תמיכה במעבד (CPU)

מומלץ להשתמש בקונטיינר עגינה שמתאים לבנייה או לבדיקה של XLA, כמו מאגר ה-Docker של TensorFlow:

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

באמצעות קונטיינר של Docker, אפשר לפתח גרסת XLA עם תמיכה במעבד (CPU) באמצעות הפקודות הבאות:

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

אם אתם רוצים לבנות יעדי XLA עם תמיכה במעבד (CPU) ללא Docker, תצטרכו להתקין את gcc-10:

apt install gcc-10 g++-10

לאחר מכן, מגדירים ויוצרים יעדים באמצעות הפקודות הבאות:

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/...

תמיכה ב-GPU

אנחנו ממליצים להשתמש בקונטיינר GPU ל-Docker כדי לפתח XLA עם תמיכה ב-GPU, למשל:

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

כדי לפתח XLA עם תמיכה ב-GPU, יש להשתמש בפקודה הבאה:

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

אם רוצים ליצור יעדי XLA עם תמיכה ב-GPU ללא Docker, צריך להתקין את יחסי התלות הבאים בנוסף ליחסי תלות של מעבד (CPU): cuda-11.2, cuDNN-8.1.

לאחר מכן, מגדירים ויוצרים יעדים באמצעות הפקודות הבאות:

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/...

למידע נוסף על התמונות של מעגן GPU של TensorFlow, כדאי לעיין במסמך הזה.