설치
다음 플랫폼 중 하나를 사용하는 대부분의 사용자는 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에서 찾을 수 있습니다. (확장자는 운영 체제에 따라 다를 수 있습니다.)