EnzymeAD/Enzyme

High-performance automatic differentiation of LLVM and MLIR.

해결하는 문제

Enzyme는 LLVM 및 MLIR로 작성된 코드의 그래디언트(자동 미분)를 자동으로 계산하는 방법을 제공하여, 개발자가 머신러닝 또는 과학 계산을 위해 코드를 수동으로 다시 작성하지 않고도 함수에 대한 고성능 그래디언트를 생성할 수 있도록 합니다.

작동 원리

LLVM 및 MLIR 컴파일러 인프라의 플러그인으로 작동합니다. 대상 함수에 특수 함수인 __enzyme_autodiff를 호출하면, Enzyme 변환 패스가 해당 호출을 첫 번째 인수의 실제 그래디언트로 교체하여 컴파일러의 중간 표현 내에서 직접 그래디언트 코드를 합성합니다.

대상 사용자

GPU 커널 및 다양한 병렬 패러다임(OpenMP, MPI, Julia Tasks) 지원을 포함하여, 최적화된 코드의 효율적인 그래디언트가 필요한 고성능 컴퓨팅(HPC), 머신러닝 및 과학 계산 분야의 개발자와 연구자.

주요 특징

  • 정적 분석이 가능한 LLVM 및 MLIR에 대한 독자적인 고성능 자동 미분.
  • GPU 커널(CUDA, ROCm) 및 병렬 프로그램(OpenMP, MPI) 지원.
  • 이미 최적화된 코드에 대해 AD를 수행하여 최첨단 도구의 성능에 도달하거나 이를 능가하는 능력.
  • Julia, Rust 및 Fortran용 바인딩 제공.