インストール
std::offload は、ユーザー向けの nightly ビルドで一部利用可能です。
ただし現時点では、すべての機能を使用するには、引き続き rustc をソースからビルドする必要があります。
ビルド手順
まず、Rust リポジトリをクローンして設定する必要があります。
git clone git@github.com:rust-lang/rust
cd rust
./configure --enable-llvm-link-shared --release-channel=nightly --enable-llvm-assertions --enable-llvm-offload --enable-llvm-enzyme --enable-clang --enable-lld --enable-option-checking --enable-ninja --disable-docs
その後、以下を使用して rustc をビルドできます。
./x build --stage 1 library
その後、rustc ツールチェーンのリンクにより、cargo 経由で使用できるようになります。
rustup toolchain link offload build/host/stage1
rustup toolchain install nightly # -Z unstable-options を有効化します
LLVM 自体のビルド手順
git clone git@github.com:llvm/llvm-project
cd llvm-project
mkdir build
cd build
cmake -G Ninja ../llvm -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;NVPTX" -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_ENABLE_RUNTIMES="offload;openmp" -DLLVM_ENABLE_PLUGINS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.
ninja
ninja install
これにより、動作する LLVM ビルドが得られます。
テスト
offload 固有のテストには、このテストスクリプトを実行してください。
./x test --stage 1 tests/codegen-llvm/gpu_offload
CI をローカルでテストするには、Docker によるテストで説明されているコマンドを使用できます。
cargo run --manifest-path src/ci/citool/Cargo.toml run-local dist-x86_64-linux
これにより、すべてのコンパイラ成果物が obj ディレクトリに保存されます。ただし、rustc 固有のコードを変更した場合、Docker イメージが状態をキャッシュするため、このディレクトリを削除する必要があるかもしれません。
この時点で、サブモジュールもチェックアウトされている必要があります。