Panduan ini menunjukkan cara memulai pengembangan project XLA.
Sebelum memulai, selesaikan prasyarat berikut:
- Buka halaman Kontribusi dan tinjau proses kontribusi.
- Jika belum melakukannya, tandatangani Perjanjian Lisensi Kontributor.
- Instal atau konfigurasi dependensi berikut:
Kemudian, ikuti langkah-langkah di bawah untuk mendapatkan kode sumber, menyiapkan lingkungan, mem-build repositori, dan membuat permintaan pull.
Mendapatkan kode
- Buat fork repositori XLA.
Clone fork repo Anda, dengan mengganti
{USER}dengan nama pengguna GitHub Anda:git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.gitUbah ke direktori
xla:cd xlaKonfigurasi repo upstream jarak jauh:
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
Menyiapkan lingkungan
Instal Bazel.
Untuk mem-build XLA, Anda harus menginstal Bazel. Cara yang direkomendasikan untuk menginstal Bazel adalah menggunakan Bazelisk, yang otomatis mendownload versi Bazel yang benar untuk XLA. Jika Bazelisk tidak tersedia, Anda dapat menginstal Bazel secara manual.
Buat dan jalankan container Docker ml-build.
Untuk menyiapkan container Docker untuk mem-build XLA dengan dukungan untuk CPU dan GPU, jalankan perintah berikut:
docker run -itd --rm \ --name xla \ -w /xla \ -v $PWD:/xla \ us-docker.pkg.dev/ml-oss-artifacts-published/ml-public-container/ml-build:latest \ bashJika mem-build dengan dukungan GPU/CUDA, tambahkan
--gpus alluntuk memberikan akses container ke semua GPU yang tersedia. Tindakan ini memungkinkan deteksi otomatis kemampuan komputasi CUDA.
Build
Konfigurasi untuk CPU:
docker exec xla ./configure.py --backend=CPU
Konfigurasi untuk GPU:
docker exec xla ./configure.py --backend=CUDA
Kemampuan komputasi CUDA akan terdeteksi secara otomatis dengan menjalankan nvidia-smi. Jika GPU tidak tersedia selama build, Anda harus menentukan kemampuan komputasi secara manual. Contoh:
# Automatically detects compute capabilities (requires GPUs)
./configure.py --backend=CUDA
# Manually specify compute capabilities (for builds without GPUs)
./configure.py --backend=CUDA --cuda_compute_capabilities="9.0"
Build:
docker exec xla bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
- Jangan gunakan flag
--gpus allsaat memulai container Docker. - Selama
./configure.py, tentukan kemampuan komputasi CUDA secara manual menggunakan flag--cuda_compute_capabilities.
# Automatically detects compute capabilities (requires GPUs)
./configure.py --backend=CUDA
# Manually specify compute capabilities (for builds without GPUs)
./configure.py --backend=CUDA --cuda_compute_capabilities="9.0"
bazel build \
--spawn_strategy=sandboxed \
--test_output=all \
//xla/...
Build pertama Anda akan memerlukan waktu yang cukup lama karena harus mem-build seluruh tumpukan, termasuk XLA, MLIR, dan StableHLO.
Untuk mempelajari lebih lanjut cara mem-build XLA, lihat Mem-build dari sumber.
Membuat permintaan pull
Jika Anda siap mengirim perubahan untuk ditinjau, buat permintaan pull.
Untuk mempelajari filosofi peninjauan kode XLA, lihat Proses Peninjauan.
Analisis Statis (Clang-Tidy)
Untuk mempertahankan kualitas kode, XLA menggunakan clang-tidy untuk analisis statis dan menyertakan verifikasi.
Cara Menjalankan
Ada dua cara untuk menjalankan pemeriksaan. Menjalankannya terhadap target tertentu dapat dilakukan dengan:
bazel build --config=clang-tidy //path/to:target1 //path/to:target2
Ada skrip helper yang juga digunakan dalam alur kerja CI yang menjalankannya terhadap git diff dari cabang fitur terhadap main upstream.
# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy