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