Knowledge Base

Frequently Asked Questions

Find answers to common questions about AADC, automatic differentiation, and quantitative computing

16
Questions Answered
5
Categories
130+
In Knowledge Base

Technical Architecture

4 questions
What is AADC?

AADC is a just-in-time graph compiler specifically designed for complex repetitive calculations and Automatic Adjoint Differentiation. It generates optimized binary kernels at runtime with AVX2/AVX512 vectorization for 6-100x speedup.

How does AADC obtain the computational graph?

The system uses operator overloading with the 'idouble' active type to extract the valuation graph during a single execution. This captures the sequence of elementary operations without requiring source code access.

How is AADC different from traditional compilers?

Traditional compilers work with source code; AADC executes the program once with sample data to capture numerical operations, then encodes them into optimized assembly. This runtime optimization is more efficient than ahead-of-time compilation.

Why not use LLVM or other third-party compilers?

External compilers would be too slow for runtime compilation. MatLogica invested in a fast streaming compiler specifically optimized for just-in-time code generation and AAD.

Performance

3 questions
What speedup can I expect with AADC?

Analytics typically achieve 6-100x faster performance. The system maintains an adjoint factor less than 1, meaning computing all derivatives costs less than the original function alone.

How is AADC different from other AAD libraries?

Traditional tape-based AAD only accelerates risk calculations and slows original code. AADC speeds up risk, pricing, historical VaR, and what-if scenarios with better efficiency and memory usage.

Where does the acceleration come from?

Improvements include better function inlining, optimal memory allocation for vectorization, full AVX2/AVX512 support processing 4-8 operations per cycle, loop unrolling, and constant folding.

Integration

3 questions
How long does AADC integration take?

Integration is straightforward since AADC's active type is a drop-in replacement for native types. Initial integration typically takes 2 weeks with the semi-automated approach delivering first results quickly.

What about third-party functions without source code?

Third-party functions use a special wrapper interface. Users can provide local derivatives or use bump-and-revalue locally while maintaining AAD for the rest of the system.

Can AADC handle solvers and calibration?

Yes, AADC handles implicit functions using automated Implicit Function Theorem (IFT) technique for calibration routines and solver-based approaches.

Advanced Features

2 questions
Does AADC support Longstaff-Schwartz Monte Carlo (LSM)?

Yes, AAD for LSM can be implemented with only a two-fold memory increase. Reference implementations are available for American and Bermudan option pricing with automatic Greeks.

Can AADC be used with scripting languages?

AADC is ideal for scripting, allowing custom payoffs to be compiled at runtime into optimal binary code with AAD applied automatically, eliminating interpreter penalties.

Deployment & Infrastructure

4 questions
What programming languages does AADC support?

Currently supported: C++, C#, and Python. Additional language support is planned for future releases.

Is AADC compatible with cloud computing?

Yes, AADC kernels can be sent to cloud providers for execution as encrypted binary code, enabling up to 99% cloud cost reduction while maintaining data security.

Does AADC support GPU/CUDA?

AADC doesn't currently generate GPU code, but existing CUDA code can be adapted for AADC with minimal changes. CPUs often outperform GPUs for quant workloads due to memory advantages and AAD suitability.

What about vendor lock-in?

No lock-in exists—your analytics run with or without AADC. You can always revert or switch to alternative AAD tools without being locked in.

Still Have Questions?

Our team is ready to help you understand how AADC can transform your quantitative computing