Parallel AAD-C C++ Library

AAD-C(patent pending) is a novel approach to implement automatic adjoint differentiation of C++ programs with focus on computations where derivatives are required for multiple instances of input data. It combines easy to integrate Operator Overloading techniques and beats the efficiency of code transformation. Automatic vectorization and our unique approach allows to achieve performance unseen before. Order of 50 times speed up compared to single valuation of the original function. I.e. for just 2% of the original code execution time you get values of the base algorithm and all its derivatives.

Efficient memory

Very large computations are possible. Efficient memory use for the original algorithm and adjoint version.

Automatic vectorization

Take full advantage of AVX2 or AVX512 native CPU vectorization

Multi-thread safe

Output functions are safe to execute in parallel even when the original code is not.

AAD Checkpoints

Support for all modern AAD features, such as external functions and check-pointing.

Easy integration

No template expressions. Unique active type allows to reuse in-memory objects for AAD.

Automatically tested

Automatically tested on multiple platforms/compilers using rich set of test cases

Please contact us for evaluation license or other requests.

E-mail us or betterRequest a demo