راهنمای توسعه دهنده XLA

این راهنما به شما نشان می‌دهد که چگونه توسعه پروژه XLA را شروع کنید.

قبل از شروع، پیش‌نیازهای زیر را تکمیل کنید:

  1. به صفحه مشارکت بروید و فرآیند مشارکت را مرور کنید.
  2. اگر قبلاً این کار را نکرده‌اید، توافقنامه مجوز مشارکت‌کننده را امضا کنید.
  3. وابستگی‌های زیر را نصب یا پیکربندی کنید:

سپس مراحل زیر را برای دریافت کد منبع، راه‌اندازی یک محیط، ساخت مخزن و ایجاد درخواست pull دنبال کنید.

کد را دریافت کنید

  1. یک انشعاب از مخزن XLA ایجاد کنید.
  2. انشعاب مخزن خود را کلون کنید و {USER} را با نام کاربری گیت‌هاب خود جایگزین کنید:

    git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.git
    
  3. به پوشه xla بروید: cd xla

  4. مخزن بالادستی از راه دور را پیکربندی کنید:

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

یک محیط تنظیم کنید

  1. بازل را نصب کنید.

    برای ساخت XLA، باید Bazel را نصب کرده باشید. روش پیشنهادی برای نصب Bazel، استفاده از Bazelisk است که به طور خودکار نسخه صحیح Bazel را برای XLA دانلود می‌کند. اگر Bazelisk در دسترس نباشد، می‌توانید Bazel را به صورت دستی نصب کنید .

  2. کانتینر ml-build Docker را ایجاد و اجرا کنید.

    برای راه‌اندازی یک کانتینر داکر برای ساخت XLA با پشتیبانی از CPU و GPU، دستور زیر را اجرا کنید:

    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 هستید، برای اعطای دسترسی کانتینر به تمام GPUهای موجود، --gpus all را اضافه کنید. این کار امکان تشخیص خودکار قابلیت‌های محاسباتی CUDA را فراهم می‌کند.

ساختن

پیکربندی برای پردازنده:

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

پیکربندی برای پردازنده گرافیکی:

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

قابلیت‌های محاسباتی CUDA به طور خودکار با اجرای nvidia-smi شناسایی می‌شوند. اگر GPUها در طول ساخت در دسترس نباشند، باید قابلیت‌های محاسباتی را به صورت دستی مشخص کنید. به عنوان مثال:

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

ساخت:

docker exec xla bazel build \
  --spawn_strategy=sandboxed \
  --test_output=all \
  //xla/...
  • هنگام شروع کانتینر داکر از فلگ --gpus all استفاده نکنید .
  • در طول ./configure.py ، قابلیت‌های محاسباتی CUDA را با استفاده از پرچم --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/...

اولین ساخت شما مدت زیادی طول خواهد کشید زیرا باید کل پشته، از جمله XLA، MLIR و StableHLO را بسازد.

برای کسب اطلاعات بیشتر در مورد ساخت XLA، به ساخت از منبع مراجعه کنید.

ایجاد درخواست pull

وقتی آماده ارسال تغییرات برای بررسی بودید، یک درخواست pull ایجاد کنید.

برای آشنایی با فلسفه بررسی کد XLA، به فرآیند بررسی مراجعه کنید.

تحلیل استاتیک (Clang-Tidy)

برای حفظ کیفیت کد، XLA clang-tidy برای تحلیل استاتیک و تأیید صحت کد استفاده می‌کند.

چگونه بدویم؟

پیکربندی clang-tidy مستلزم وجود فایل اجرایی clang-tidy در PATH است.

با استفاده از پروفایل اختصاصی، بررسی‌ها را در سراسر اهداف خود انجام دهید:

bazel build //path/to:target --config=clang-tidy