A high-performance C++ automatic differentiation library for large-scale, performance-critical systems.
XAD is a high-performance C++ automatic differentiation library that computes derivatives of mathematical functions efficiently. It solves the problem of calculating gradients and higher-order derivatives for large-scale, performance-critical applications in fields like finance and scientific computing.
C++ developers working on numerical computation, financial engineering, machine learning, or scientific simulations requiring efficient derivative calculations.
Developers choose XAD for its exceptional performance with low runtime overhead, minimal memory footprint, and seamless integration into existing C++ codebases through operator overloading.
Fast, easy automatic differentiation in C++
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Emphasizes low runtime overhead and minimal memory footprint, making it ideal for large-scale systems like financial Monte Carlo simulations, as stated in the philosophy section.
Supports forward, reverse (adjoint), and vector modes via operator overloading, enabling efficient derivative computation for complex models with any order derivatives, per the key features.
Works seamlessly with Eigen for linear algebra and offers external function interfaces, facilitating integration into existing numerical codebases without major rewrites.
Includes checkpointing for efficient tape memory management, crucial for handling large-scale applications without excessive memory usage, as highlighted in the key features.
The native code generation backend (xad-codegen) for maximum throughput is available separately under a commercial license, limiting full open-source access to advanced performance features.
Requires building from source with CMake and may involve significant effort for non-C++ projects, as Python bindings are in a separate repository (xad-py), adding setup overhead.
Operates at a lower level than ML-focused AD libraries, requiring manual tape management and recordings, which can be error-prone for users accustomed to more automated frameworks.