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 的綁定。