auto-differentiation/xad

Fast, easy automatic differentiation in C++

何を解決するか

XAD は、高精度かつ効率的に関数の微分を計算できる、高性能な C++ ライブラリです。大規模でパフォーマンスが求められるシステムにおいて、実行時のオーバーヘッドが低く、メモリ使用量が最小限であることを特徴としています。

動作方法

XAD は演算子オーバーロードを使用して、前向きモードおよびアドジョイント(逆向き)モードの自動微分を実装しています。ベクトルモードにより、複数の微分を同時に計算できます。繰り返しのワークロード(例:モンテカルロシミュレーション)に対しては、『一度記録 / 複数回再実行』の実行モデルを可能にする抽象的な JIT(ジャストインタイム)バックエンドインターフェースを提供しています。また、大規模なアプリケーションにおけるテープメモリの効率的な管理を可能にするチェックポイント機能も備えています。

対象ユーザー

特に定量的金融(QuantLib との統合により実証済み)分野で、パフォーマンスが求められる数学的モデルを構築する C++ 開発者、および大規模システム向けに高速な自動微分ツールが必要なすべての人々。

主な特徴

  • 二重モード対応:前向きモードと逆向き(アドジョイント)モードの両方をサポート。
  • 高性能:実行時のオーバーヘッドが低く、メモリ使用量が最小限に抑えられています。
  • JITバックエンド:プラグ可能な JIT バックエンドを追加するためのオプションインフラストラクチャで、処理効率を向上。
  • 広範な統合:Eigen 線形代数ライブラリと連携可能で、外部関数インターフェースも提供。
  • チェックポイント:テープベースの微分における効率的なメモリ管理を実現。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト