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