このガイドでは、XLA プロジェクトの開発を開始する方法について説明します。
始める前に、次の前提条件を満たす必要があります。
- 投稿ページに移動して、投稿プロセスを確認します。
- まだ署名していない場合は、投稿者ライセンス契約に署名します。
- 次の依存関係をインストールまたは構成します。
次に、以下の手順に沿ってソースコードを取得し、環境を設定して、リポジトリをビルドし、pull リクエストを作成します。
コードを取得する
- XLA リポジトリのフォークを作成します。
リポジトリのフォークのクローンを作成します。
{USER}は GitHub ユーザー名に置き換えます。git clone <a href="https://github.com/">https://github.com/</a>{USER}/xla.gitxlaディレクトリに移動します。cd xlaリモート アップストリーム リポジトリを構成します。
git remote add upstream <a href="https://github.com/openxla/xla.git">https://github.com/openxla/xla.git</a>
環境を設定する
Bazel をインストールします。
XLA をビルドするには、Bazel がインストールされている必要があります。Bazel をインストールするおすすめの方法は、XLA に適したバージョンの Bazel を自動的にダウンロードする Bazelisk を使用することです。Bazelisk を使用できない場合は、手動で Bazel をインストールできます。
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 \ bashGPU/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