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

설치

다음 플랫폼 중 하나를 사용하는 대부분의 사용자는 rustup으로 enzyme 컴포넌트를 설치하여 최신 nightly 툴체인에서 std::autodiff를 활성화할 수 있습니다:

  • Linux: x86_64-unknown-linux-gnu 또는 aarch64-unknown-linux-gnu
  • macOS: aarch64-apple-darwin 또는 x86_64-apple-darwin
  • Windows: x86_64-llvm-mingw 또는 aarch64-llvm-mingw

rustc/enzyme/autodiff 기여자이거나 다른 플랫폼이 필요한 경우에는 autodiff를 포함한 rustc를 소스에서 빌드할 수 있습니다. 선호하는 타깃에 대한 자동 빌드 활성화에 도움이 필요하면 이슈를 열어 주십시오.

설치 가이드

Linux, macOS 또는 Windows에서 std::autodiff를 사용하려 하고 프로젝트에 PR을 기여할 계획이 없다면, 기존 nightly 설치를 그대로 사용하고 누락된 컴포넌트만 내려받을 것을 권장합니다. 다음을 실행하십시오:

rustup +nightly component add enzyme

이전 버전의 rustup은 이 컴포넌트를 인식하지 못하므로, 문제가 발생하면 rustup 자체를 업데이트해 보십시오:

rustup self update
rustup +nightly component add enzyme

Nix용 설치 가이드

Nix에서는 oxalica rust-overlay를 사용하여 Enzyme 컴포넌트가 포함된 nightly Rust 툴체인을 선언할 수 있습니다.

예를 들면 다음과 같습니다.

rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override {
  extensions = [ "enzyme" ];
})

또는 다음과 같이 Enzyme 컴포넌트를 선언하는 툴체인 파일을 만들고

[toolchain]
channel = "nightly-2026-06-23"
components = [ "enzyme" ]

오버레이에서 이를 사용할 수도 있습니다.

rust-bin.fromRustupToolchainFile ./rust-toolchain.toml

빌드 방법

먼저 Rust 저장소를 클론하고 구성해야 합니다. 필요에 따라 --enable-clang 또는 --enable-lld를 사용할 수도 있습니다.

git clone git@github.com:rust-lang/rust
cd rust
./configure --release-channel=nightly --enable-llvm-enzyme --enable-llvm-link-shared --enable-llvm-assertions --enable-ninja --enable-option-checking --disable-docs --set llvm.download-ci-llvm=false

그런 다음 다음 명령으로 rustc를 빌드할 수 있습니다:

./x build --stage 1 library

그런 다음 rustc 툴체인을 링크하면 cargo를 통해 사용할 수 있습니다.

rustup toolchain link enzyme build/host/stage1
rustup toolchain install nightly # enables -Z unstable-options

이제 테스트 케이스를 실행할 수 있습니다:

./x test --stage 1 tests/codegen-llvm/autodiff
./x test --stage 1 tests/pretty/autodiff
./x test --stage 1 tests/ui/autodiff
./x test --stage 1 tests/run-make/autodiff
./x test --stage 1 tests/ui/feature-gates/feature-gate-autodiff.rs

Autodiff는 아직 실험적 기능이므로, 자신의 프로젝트에서 사용하려면 Cargo.toml에 lto="fat"를 추가하고 cargo 또는 cargo +nightly 대신 RUSTFLAGS="-Zautodiff=Enable" cargo +enzyme를 사용해야 합니다.

컴파일러 익스플로러 및 dist 빌드

저희 컴파일러 익스플로러 인스턴스도 비슷한 방식으로 더 새로운 rustc로 업데이트할 수 있습니다. 먼저 docker 인스턴스를 준비하십시오.

docker run -it ubuntu:22.04
export CC=clang CXX=clang++
apt update
apt install wget vim python3 git curl libssl-dev pkg-config lld ninja-build cmake clang build-essential

그런 다음 약간 변경된 방식으로 rustc를 빌드하십시오:

git clone https://github.com/rust-lang/rust
cd rust
./configure --release-channel=nightly --enable-llvm-enzyme --enable-llvm-link-shared --enable-llvm-assertions --enable-ninja --enable-option-checking --disable-docs --set llvm.download-ci-llvm=false
./x dist

그런 다음 tarball을 호스트로 복사합니다. dockerid는 docker ps -a 목록에서 가장 최근 항목입니다.

docker cp <dockerid>:/rust/build/dist/rust-nightly-x86_64-unknown-linux-gnu.tar.gz rust-nightly-x86_64-unknown-linux-gnu.tar.gz

그런 다음 EnzymeAD/rust 저장소에 새 (사전 릴리스) 태그를 만들고, 태그를 갱신하도록 EnzymeAD/enzyme-explorer 저장소에 PR을 올릴 수 있습니다. tgymnich가 업데이트 스크립트를 실행할 수 있도록 PR에서 tgymnich를 멘션하는 것을 잊지 마십시오. 참고: EnzymeAD/rust를 보관(archive) 처리하고 이곳의 안내를 갱신해야 합니다. 곧 explorer가 공식 rust 서버에서 rustc 툴체인을 가져올 수 있게 될 것입니다.

Enzyme 자체의 빌드 안내

위의 Rust 빌드 안내를 따르면 Rust 컴파일러와 함께 LLVMEnzyme, LLDEnzyme, ClangEnzyme이 빌드됩니다. 이들 중 하나를 사용하기만 하려 하고 cmake를 다뤄 본 경험이 없다면 이 방법을 권장합니다. 하지만 Rust 없이 Enzyme만 빌드하고 싶다면 다음 안내가 도움이 될 수 있습니다.

git clone git@github.com:llvm/llvm-project
cd llvm-project
mkdir build
cd build
cmake -G Ninja ../llvm -DLLVM_TARGETS_TO_BUILD="host" -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_ENABLE_RUNTIMES="openmp" -DLLVM_ENABLE_PLUGINS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.
ninja
ninja install

이제 동작하는 LLVM 빌드가 준비되었으니, Enzyme 빌드를 계속 진행할 수 있습니다. llvm-project 폴더에서 나온 뒤 다음 명령을 실행하십시오.

git clone git@github.com:EnzymeAD/Enzyme
cd Enzyme/enzyme
mkdir build
cd build
cmake .. -G Ninja -DLLVM_DIR=<YourLocalPath>/llvm-project/build/lib/cmake/llvm/ -DLLVM_EXTERNAL_LIT=<YourLocalPath>/llvm-project/llvm/utils/lit/lit.py -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=YES -DBUILD_SHARED_LIBS=ON
ninja

이렇게 하면 Enzyme이 빌드되며, Enzyme/enzyme/build/lib/<LLD/Clang/LLVM/lib>Enzyme.so에서 찾을 수 있습니다. (확장자는 운영 체제에 따라 다를 수 있습니다.)