Contents of the ADFirstAidKit

adStack.c && adStack.h

Mechanism for the main stack used by codes produced by Tapenade in reverse mode. Use these files regardless of the language of the reverse-differentiated code. For OpenMP compatibility, compile with option -fopenmp.

adBinomial.c && adBinomial.h

Primitives for Tapenade adjoint with binomial checkpoiting (cf Griewank-Walther “revolve” method). Triggered by Tapenade directive $AD BINOMIAL-CKP.

(adContext.c || adContextMPI.c) && adContext.h

Primitives used by Tapenade-differentiated code with automated validation. Triggered by tapenade command-line option -context. Use adContextMPI.c instead of adContext.c on MPI code.

adContextCPX.c && adContextCPX.h

Same as adContext, but to validate code differentiated with the command-line option -complexstep, which is an attempt to automate differentiation via the complex-step method.

(adDebug.c || adDebugMPI.c) && adDebug.h

Primitives used by Tapenade-differentiated code with automated debugging. Triggered by tapenade command-line option -context combined either with -debugTGT or with -debugADJ. Use adDebugMPI.c instead of adDebug.c on MPI code.


Utility for adStack, adContext, adDebug

admm.c && admm.h (might be integrated later into adBuffer)

The “ADMM” primitives, which manage push/pop of pointers when the pointer’s destination lies in memory chunks that have been deallocated and reallocated.


A Fortran90 module that must be USE’d by Tapenade-generated adjoint code, if these codes need push/pop of pointers or use ADMM primitives.

adProfile.c && adProfile.h

Primitives used by Tapenade adjoint to measure the cost/benefit of checkpointing, to find parts of the code that should or shouldn’t be checkpointed.

fortranSupport.F && ampiSupport.c

Files needed by AMPI, for Tapenade adjoint code of MPI programs.


Directory containing the include files needed by code using the “adjoinable mpi” library. This is primarily intended for some nonRegression tests. This is not the ampi install.

PUSHPOPGeneralLib && PUSHPOPDiff.f

Useful for repeated differentiation forward-on-reverse. Specification of the activity behavior of push/pop primitives + implementation of the forward derivatives of these primitives.

testMemSizef.f && testMemSizec.c

Short standalone code that tries to measure the size of primitive types in bytes. && testpushpop.f90

Short standalone code to test push/pop primitives of adStack.c

validityTest.f (Poorly tested, sorry)

Primitives used by Tapenade tangent code to estimate how close the execution comes to non-differentiable behavior (e.g. tests). Triggered by tapenade command-line option -directValid.

OLDadBuffer.c && OLDadBuffer.h && OLDadBuffer.f && OLDadStack.c && OLDadStack.h

Old version of the stack mechanism used by reverse AD codes. The new adStack.c && adStack.h do not need adBuffer any more. With gfortran 10.2.1, use -fallow-argument-mismatch option to compile OLDadBuffer.f.

Notice that, in order to run some nonRegression tests, you may have to place manually into this ADFirstAidKit directory two symbolic links: one named “mpich” pointing to the include directory of your mpich insall, and another one named “openmpi” pointing to the include directory of your openmpi install.