Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

インストール

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 イメージが状態をキャッシュするため、このディレクトリを削除する必要があるかもしれません。

この時点で、サブモジュールもチェックアウトされている必要があります。