auto-differentiation/xad

Fast, easy automatic differentiation in C++

解決的問題

XAD 是一個高性能的 C++ 庫,提供自動微分(AD),讓開發者能以高精度與高效率計算函數的微分。它特別設計用於大規模、性能關鍵的系統,這些系統要求極低的執行時間開銷與最小的記憶體使用量。

工作原理

XAD 使用運算子重載來實作前向與伴隨(反向)模式的自動微分。它能透過向量模式同時計算多個微分。對於蒙特卡洛模擬等重複性工作負載,它提供一個抽象的 JIT(即時)後端介面,以支援「一次記錄/多次重播」的執行模型。它也包含檢查點支援,以在大型應用中更有效地管理磁帶記憶體。

適用對象

建構性能關鍵數學模型的 C++ 開發者,特別是在量化金融領域(已有與 QuantLib 的整合案例),以及任何需要為大型系統提供高速自動微分工具的人。

主要特色

  • 雙模式支援:同時支援前向與反向(伴隨)模式自動微分。
  • 高效率:針對低執行時間開銷與最小記憶體佔用進行最佳化。
  • JIT 後端:可選的基礎設施,支援可插入的 JIT 後端以提升吞吐量。
  • 廣泛整合:與 Eigen 線性代數庫相容,並提供外部函數介面。
  • 檢查點:為基於磁帶的微分提供高效的記憶體管理。

相關

  • 專案
  • 專案
  • 專案
  • 專案