vgvassilev/clad
clad -- automatic differentiation for C/C++
何を解決するか
Clad は C++ 用の自動微分 (AD) を提供し、数学関数の導関数を自動的に C++ コードとして生成できるようにします。これにより、複雑な関数の勾配、ヘッセ行列、ヤコビ行列を手動で導出・コーディングする必要がなくなり、しばしば誤りが生じやすく、面倒な作業を回避できます。
動作方法
Clad は Clang コンパイラのプラグインとして実装されており、LLVM コンパイラインフラストラクチャに基づいています。ソース変換を使用して C++ ソースコードを分析し、導関数に対応する C++ コードを自動生成します。前向きモードと後向きモードの両方の AD をサポートしており、高階導関数の計算には両者の組み合わせも可能です。
対象ユーザー
最適化、機械学習、科学計算において数学関数の導関数を計算する必要がある C++ 開発者や研究者、またプログラム内の浮動小数点誤差を推定したいユーザー向けです。
特徴
- 複数の AD モード: 勾配、ヘッセ行列、ヤコビ行列の計算に前向きモード、後向きモード、および組み合わせモードをサポート。
- 包括的な API:
clad::differentiate、clad::gradient、clad::hessian、clad::jacobianなどの専用関数を提供。 - 浮動小数点誤差推定: プログラムの浮動小数点誤差を計算する専用ツール (
clad::estimate_error) を搭載。 - コンパイラ統合: Clang プラグインとして動作可能。xeus-cpp カーネルを介して Jupyter Notebook 内でも利用可能。
- C++ 機能対応: 現代的な C++ 機能の広範なカバーと、堅牢なフォールバックおよび回復システムを備えています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト