XLA geliştirici kılavuzu

Bu kılavuzda, XLA projesini geliştirmeye nasıl başlayacağınız gösterilmektedir.

Başlamadan önce aşağıdaki ön koşulları tamamlayın:

  1. Katkıda bulunma sayfasına gidip katkıda bulunma sürecini inceleyin.
  2. Henüz yapmadıysanız Katkıda Bulunan Lisans Sözleşmesi'ni imzalayın.
  3. Aşağıdaki bağımlılıkları yükleyin veya yapılandırın:

Ardından, kaynak kodu almak, ortamı ayarlamak, depoyu oluşturmak ve pull isteği oluşturmak için aşağıdaki adımları uygulayın.

Kodu alın

  1. XLA deposunun bir çatalını oluşturun.
  2. Deponun çatallanmış sürümünü kopyalayın. {USER} yerine GitHub kullanıcı adınızı girin:

    git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.git
    
  3. xla dizinine geçin: cd xla

  4. Uzak yukarı akış deposunu yapılandırın:

    git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
    

Ortam oluşturma

  1. Bazel'i yükleyin.

    XLA'yı oluşturmak için Bazel'in yüklü olması gerekir. Bazel'i yüklemenin önerilen yolu, XLA için doğru Bazel sürümünü otomatik olarak indiren Bazelisk'i kullanmaktır. Bazelisk kullanılamıyorsa Bazel'i manuel olarak yükleyebilirsiniz.

  2. ml-build Docker container'ını oluşturun ve çalıştırın.

    Hem CPU hem de GPU desteğiyle XLA oluşturmak için bir Docker container'ı ayarlamak üzere aşağıdaki komutu çalıştırın:

    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 \
      bash
    

    GPU/CUDA desteğiyle derleme yapıyorsanız kapsayıcıya mevcut tüm GPU'lara erişim izni vermek için --gpus all ekleyin. Bu, CUDA işlem yeteneklerinin otomatik olarak algılanmasını sağlar.

Derleme

CPU için yapılandırma:

docker exec xla ./configure.py --backend=CPU

GPU için yapılandırma:

docker exec xla ./configure.py --backend=CUDA

CUDA işlem yetenekleri, nvidia-smi çalıştırılarak otomatik olarak algılanır. Derleme sırasında GPU'lar kullanılamıyorsa işlem yeteneklerini manuel olarak belirtmeniz gerekir. Örneğin:

# 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"

Oluştur:

docker exec xla bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...
  • Docker kapsayıcısını başlatırken --gpus all işaretini kullanmayın.
  • ./configure.py sırasında, --cuda_compute_capabilities işaretini kullanarak CUDA işlem yeteneklerini manuel olarak belirtin.
# 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/...

XLA, MLIR ve StableHLO dahil olmak üzere tüm yığını oluşturması gerektiğinden ilk derlemeniz biraz zaman alacaktır.

XLA oluşturma hakkında daha fazla bilgi edinmek için Kaynaktan oluşturma başlıklı makaleyi inceleyin.

Pull isteği oluşturma

Değişiklikleri incelemeye göndermeye hazır olduğunuzda pull isteği oluşturun.

XLA kod inceleme felsefesi hakkında bilgi edinmek için İnceleme Süreci başlıklı makaleyi inceleyin.

Statik analiz (Clang-Tidy)

XLA, kod kalitesini korumak için statik analizde clang-tidy kullanır ve doğrulama içerir.

Nasıl Çalıştırılır?

Kontrolleri yürütmenin iki yolu vardır. Belirli hedeflere karşı çalıştırmak için:

bazel build --config=clang-tidy //path/to:target1 //path/to:target2

Ayrıca, CI iş akışlarında kullanılan ve bunu yukarı akış ana dalına karşı özellik dalından git diff ile çalıştıran bir yardımcı komut dosyası vardır.

# Make sure the main is updated.
git fetch origin main
bazel run //build_tools/ci:run_clang_tidy