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向けのバインディングが利用可能。