AADC Manual (Public Preview)
Preface
This manual provides comprehensive documentation for the AADC (Automatic Adjoint Differentiation Compiler) toolkit, a just-in-time compilation system that transforms mathematical computations into highly optimized machine code. AADC represents a fundamental advancement in automatic differentiation technology, combining the ease of operator overloading with the performance of code transformation to deliver unprecedented computational efficiency.
Purpose and Scope
This documentation serves as the complete reference for AADC users, from newcomers seeking a quick start to experienced developers implementing advanced optimizations. The manual covers installation, core concepts, practical examples, debugging techniques, and detailed API reference materials. Each section builds progressively from basic usage patterns to sophisticated applications in quantitative finance, scientific computing, and machine learning.
Target Audience
This manual is designed for:
- Software developers integrating automatic differentiation into existing C++ codebases
- Quantitative analysts implementing pricing models, risk calculations, and portfolio optimization
- Scientific computing practitioners working with numerical optimization and parameter estimation
- Machine learning engineers developing gradient-based algorithms and neural network training
- Performance engineers seeking to accelerate computationally intensive mathematical operations
Technology Overview
AADC breaks new ground by generating compiled binary kernels rather than traditional computational tapes. This approach enables performance acceleration even for forward-only computations, while reverse-mode automatic differentiation often computes gradients faster than the original code computes function values. The technology leverages modern CPU features including SIMD vectorization (AVX2/AVX512) and multi-threading, providing speedups of 10-100x for typical quantitative applications.
Key innovations include:
- Dual-purpose acceleration: Speeds up both forward computations and derivative calculations
- Runtime compilation: Generates optimized machine code specific to your computational patterns
- Automatic vectorization: Processes multiple scenarios simultaneously without code changes
- Thread-safe execution: Enables parallel evaluation even for originally single-threaded code
- Memory efficiency: Streaming compiler with minimal memory footprint during compilation and execution
How to Use This Manual
The manual is structured to support both sequential reading and targeted reference:
- Introduction: Overview of AADC concepts, installation instructions, and quick start guides
- Core Components: Detailed explanations of key classes and functions
- Tutorials: Step-by-step examples demonstrating common use cases and best practices. Here readers can find practical guidance and learn by example
- Advanced Components: In-depth coverage of specialized features
Code examples throughout the manual are drawn from the test directory of the AADC software package and represent realistic usage patterns. All examples have been tested across supported platforms and compiler versions.
Prerequisites
Users should have:
- Working knowledge of C++ programming
- Basic understanding of automatic differentiation concepts
- Familiarity with mathematical optimization or scientific computing applications
- Development environment with C++11 or later compiler support
Version and Compatibility
This manual corresponds to AADC version 1.7.6.11. The software supports C++, Python, and C# language bindings, with full compatibility across major operating systems including Windows 10/11, Linux distributions (Ubuntu, CentOS, RHEL), and modern CPU architectures with AVX2 or AVX512 support.
The AADC development team continues to enhance the toolkit based on user feedback and emerging computational requirements. For the latest updates, technical support, and community resources, visit the MatLogica support portal.