XLA デベロッパー ガイド

このガイドでは、XLA プロジェクトの開発を開始する方法について説明します。

始める前に、次の前提条件を満たす必要があります。

  1. 投稿ページに移動して、投稿プロセスを確認します。
  2. まだ署名していない場合は、投稿者ライセンス契約に署名します。
  3. 次の依存関係をインストールまたは構成します。

次に、以下の手順に沿ってソースコードを取得し、環境を設定して、リポジトリをビルドし、pull リクエストを作成します。

コードを取得する

  1. XLA リポジトリのフォークを作成します。
  2. リポジトリのフォークのクローンを作成します。{USER} は GitHub ユーザー名に置き換えます。

    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. Bazel をインストールします。

    XLA をビルドするには、Bazel がインストールされている必要があります。Bazel をインストールするおすすめの方法は、XLA に適したバージョンの Bazel を自動的にダウンロードする Bazelisk を使用することです。Bazelisk を使用できない場合は、手動で Bazel をインストールできます。

  2. ml-build Docker コンテナを作成して実行します。

    CPU と GPU の両方をサポートする XLA をビルドするための Docker コンテナを設定するには、次のコマンドを実行します。

    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 サポートを含めてビルドする場合は、--gpus all を追加して、使用可能なすべての GPU へのアクセス権をコンテナに付与します。これにより、CUDA コンピューティング機能の自動検出が可能になります。

ビルド

CPU の構成:

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

GPU 用に構成します。

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/...
  • Docker コンテナを起動するときに --gpus all フラグを使用しないでください。
  • ./configure.py の間、--cuda_compute_capabilities フラグを使用して CUDA コンピューティング機能を手動で指定します。
# 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 を使用し、検証を含めます。

実行方法

チェックを実行する方法は 2 つあります。特定のターゲットに対して実行するには、次のコマンドを使用します。

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

CI ワークフローでも使用されるヘルパースクリプトがあり、アップストリームのメインに対する機能ブランチの git diff に対して実行されます。

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