auto-differentiation/xad
Fast, easy automatic differentiation in C++
解决的问题
XAD 是一个高性能 C++ 库,提供自动微分(AD),使开发者能够以高精度和高效率计算函数的导数。它专为大规模、性能关键的系统设计,这些系统要求极低的运行时开销和最小的内存占用。
工作原理
XAD 使用操作符重载实现前向和伴随(反向)模式自动微分。它可以通过向量模式同时计算多个导数。对于蒙特卡洛模拟等重复性工作负载,它提供了一个抽象的 JIT(即时)后端接口,以支持“一次记录 / 多次重放”的执行模型。它还包含检查点支持,以在大型应用中更高效地管理磁带内存。
适用人群
构建性能关键型数学模型的 C++ 开发者,特别是在量化金融领域(已有与 QuantLib 的集成案例),以及任何需要为大规模系统提供高速自动微分工具的人。
主要亮点
- 双模式支持:同时支持前向和反向(伴随)模式自动微分。
- 高性能:针对低运行时开销和最小内存占用进行了优化。
- JIT 后端:可选的基础设施,支持可插拔的 JIT 后端以提高吞吐量。
- 广泛集成:与 Eigen 线性代数库兼容,并提供外部函数接口。
- 检查点:为基于磁带的微分提供高效的内存管理。
相关
- 项目
- 项目
- 项目
- 项目