EnzymeAD/Enzyme

High-performance automatic differentiation of LLVM and MLIR.

解決的問題

Enzyme 提供了一種自動計算用 LLVM 和 MLIR 編寫的程式碼梯度(自動微分)的方法,允許開發人員無需為機器學習或科學計算手動重寫程式碼,即可為其函數生成高性能梯度。

工作原理

它作為 LLVM 和 MLIR 編譯器基礎設施的插件運行。透過在目標函數上呼叫特殊函數 __enzyme_autodiff,Enzyme 轉換 pass 會將該呼叫替換為第一個參數的實際梯度,直接在編譯器的中間表示中合成梯度程式碼。

適用對象

高效能運算 (HPC)、機器學習和科學運算領域的開發人員與研究人員,他們需要優化程式碼的高效梯度,包括對 GPU 核心與各種並行範式 (OpenMP, MPI, Julia Tasks) 的支援。

亮點

  • 對靜態可分析的 LLVM 和 MLIR 進行自主的高性能自動微分。
  • 支援 GPU 核心 (CUDA, ROCm) 與並行程式 (OpenMP, MPI)。
  • 能夠在已優化的程式碼上執行 AD,以達到或超過最先進工具的效能。
  • 提供 Julia、Rust 和 Fortran 的綁定。