Final implementation for a Jacobian tape with a linear index management. More...
#include <jacobianLinearTape.hpp>
Public Types | |
using | Base = JacobianBaseTape<TapeTypes, JacobianLinearTape> |
Base class abbreviation. | |
using | Gradient = typename TapeTypes::Gradient |
See TapeTypesInterface. | |
using | Identifier = typename TapeTypes::Identifier |
See TapeTypesInterface. | |
using | IndexManager = typename TapeTypes::IndexManager |
See TapeTypesInterface. | |
using | Position = typename Base::Position |
See TapeTypesInterface. | |
using | Real = typename TapeTypes::Real |
See TapeTypesInterface. | |
using | TapeTypes |
See JacobianLinearTape. | |
Public Types inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
using | Adjoints |
See JacobianTapeTypes. | |
using | Base |
Base class abbreviation. | |
using | Gradient |
See TapeTypesInterface. | |
using | Identifier |
See TapeTypesInterface. | |
using | Impl |
See JacobianBaseTape. | |
using | IndexManager |
See JacobianTapeTypes. | |
using | JacobianData |
See JacobianTapeTypes. | |
using | NestedPosition |
See JacobianTapeTypes. | |
using | PassiveReal |
Basic computation type. | |
using | Position |
See TapeTypesInterface. | |
using | Real |
See TapeTypesInterface. | |
using | StatementData |
See JacobianTapeTypes. | |
using | TapeTypes |
See JacobianBaseTape. | |
using | VectorAccess |
Vector access type generated by this tape. | |
Public Types inherited from codi::CommonTapeImplementation< T_ImplTapeTypes, T_Impl > | |
using | Gradient = typename ImplTapeTypes::Gradient |
See TapeTypesInterface. | |
using | Identifier = typename ImplTapeTypes::Identifier |
See TapeTypesInterface. | |
using | Impl = T_Impl |
See CommonTapeImplementation. | |
using | ImplTapeTypes = T_ImplTapeTypes |
See CommonTapeImplementation. | |
using | LowLevelFunctionByteData = typename CommonTapeTypes<ImplTapeTypes>::LowLevelFunctionByteData |
See CommonTapeTypes. | |
using | LowLevelFunctionInfoData = typename CommonTapeTypes<ImplTapeTypes>::LowLevelFunctionInfoData |
See CommonTapeTypes. | |
using | NestedData = LowLevelFunctionByteData |
Shorthand. | |
using | NestedPosition = typename LowLevelFunctionByteData::Position |
Shorthand. | |
using | Position = typename CommonTapeTypes<ImplTapeTypes>::Position |
See TapeTypesInterface. | |
using | Real = typename ImplTapeTypes::Real |
See TapeTypesInterface. | |
Public Types inherited from codi::FullTapeInterface< T_ImplTapeTypes::Real, T_ImplTapeTypes::Gradient, T_ImplTapeTypes::Identifier, CommonTapeTypes< T_ImplTapeTypes >::Position > | |
using | Gradient |
See FullTapeInterface. | |
using | Identifier |
See FullTapeInterface. | |
using | Position |
See FullTapeInterface. | |
using | Real |
See FullTapeInterface. | |
Public Types inherited from codi::CustomAdjointVectorEvaluationTapeInterface< T_Position > | |
using | Position = T_Position |
See CustomAdjointVectorEvaluationTapeInterface. | |
Public Types inherited from codi::ForwardEvaluationTapeInterface< T_Position > | |
using | Position = T_Position |
See ForwardEvaluationTapeInterface. | |
Public Types inherited from codi::PositionalEvaluationTapeInterface< T_Position > | |
using | Position = T_Position |
See PositionalEvaluationTapeInterface. | |
Public Types inherited from codi::DataManagementTapeInterface< T_Real, T_Identifier > | |
using | Identifier = T_Identifier |
See DataManagementTapeInterface. | |
using | Real = T_Real |
See DataManagementTapeInterface. | |
Public Types inherited from codi::ExternalFunctionTapeInterface< T_Real, T_Gradient, T_Identifier > | |
using | Gradient = T_Gradient |
See ExternalFunctionTapeInterface. | |
using | Identifier = T_Identifier |
See ExternalFunctionTapeInterface. | |
using | Real = T_Real |
See ExternalFunctionTapeInterface. | |
Public Types inherited from codi::GradientAccessTapeInterface< T_Gradient, T_Identifier > | |
using | Gradient = T_Gradient |
See GradientAccessTapeInterface. | |
using | Identifier = T_Identifier |
See GradientAccessTapeInterface. | |
Public Types inherited from codi::IdentifierInformationTapeInterface< T_Real, T_Gradient, T_Identifier > | |
using | Gradient = T_Gradient |
See IdentifierInformationTapeInterface. | |
using | Identifier = T_Identifier |
See IdentifierInformationTapeInterface. | |
using | Real = T_Real |
See IdentifierInformationTapeInterface. | |
Public Types inherited from codi::InternalStatementRecordingTapeInterface< T_Identifier > | |
using | Identifier = T_Identifier |
See InternalStatementRecordingTapeInterface. | |
Public Types inherited from codi::LowLevelFunctionTapeInterface< T_Real, T_Gradient, T_Identifier > | |
using | Gradient = T_Gradient |
See LowLevelFunctionTapeInterface. | |
using | Identifier = T_Identifier |
See LowLevelFunctionTapeInterface. | |
using | Real = T_Real |
See LowLevelFunctionTapeInterface. | |
Public Types inherited from codi::ManualStatementPushTapeInterface< T_Real, T_Gradient, T_Identifier > | |
using | Gradient = T_Gradient |
See ManualStatementPushTapeInterface. | |
using | Identifier = T_Identifier |
See ManualStatementPushTapeInterface. | |
using | Real = T_Real |
See ManualStatementPushTapeInterface. | |
Public Types inherited from codi::PreaccumulationEvaluationTapeInterface< T_Real, T_Gradient, T_Identifier, T_Position > | |
using | Gradient = T_Gradient |
See PreaccumulationEvaluationTapeInterface. | |
using | Identifier = T_Identifier |
See PreaccumulationEvaluationTapeInterface. | |
using | Position = T_Position |
See PreaccumulationEvaluationTapeInterface. | |
using | Real = T_Real |
See PreaccumulationEvaluationTapeInterface. | |
Public Types inherited from codi::PrimalEvaluationTapeInterface< T_Real, T_Identifier, T_Position > | |
using | Identifier = T_Identifier |
See PrimalEvaluationTapeInterface. | |
using | Position = T_Position |
See PrimalEvaluationTapeInterface. | |
using | Real = T_Real |
See PrimalEvaluationTapeInterface. | |
Public Types inherited from codi::ReverseTapeInterface< T_Real, T_Gradient, T_Identifier > | |
using | Gradient = T_Gradient |
See ReverseTapeInterface. | |
using | Identifier = T_Identifier |
See ReverseTapeInterface. | |
using | PassiveReal = RealTraits::PassiveReal<Real> |
Basic computation type. | |
using | Real = T_Real |
See ReverseTapeInterface. | |
Public Member Functions | |
void | clearAdjoints (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Clear all adjoint values, that is, set them to zero. | |
void | clearAdjoints (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Clear all adjoints that would be set in a tape evaluation from start to end. It has to hold start >= end. | |
JacobianLinearTape () | |
Constructor. | |
Public Member Functions inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
JacobianBaseTape () | |
Constructor. | |
Gradient & | gradient (Identifier const &identifier, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Reference access to gradient. | |
Gradient const & | gradient (Identifier const &identifier, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) const |
Constant reference access to gradient. | |
void | initIdentifier (Real &value, Identifier &identifier) |
void | destroyIdentifier (Real &value, Identifier &identifier) |
Has to be called for each identifier, before it is deallocated. | |
void | store (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &lhs, ExpressionInterface< Real, Rhs > const &rhs) |
Has to be called by an AD variable every time it is assigned. | |
void | store (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &lhs, LhsExpressionInterface< Real, Gradient, Impl, Rhs > const &rhs) |
Has to be called by an AD variable every time it is assigned. | |
void | store (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &lhs, Real const &rhs) |
Has to be called by an AD variable every time it is assigned. | |
void | registerInput (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &value) |
void | clearAdjoints (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Clear all adjoint values, that is, set them to zero. | |
void | evaluate (Position const &start, Position const &end, Adjoint *data) |
Perform a reverse evaluation for a part of the tape. It hast to hold start >= end. | |
void | evaluateForward (Position const &start, Position const &end, Adjoint *data) |
Perform a reverse evaluation for a part of the tape. It hast to hold start >= end. | |
void | evaluate (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a reverse evaluation for a part of the tape. It hast to hold start >= end. | |
void | evaluateForward (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a forward evaluation of a part of the tape. It has to hold start <= end. | |
void | swap (Impl &other) |
Swap all data with an other tape. | |
void | deleteAdjointVector () |
Delete the adjoint vector. See Adjoint vector management. | |
void | resizeAdjointVector () |
Explicitly trigger resizing of the adjoint vector. See Adjoint vector management. | |
void | beginUseAdjointVector () |
Declare that the adjoint vector is being used. See Adjoint vector management. | |
void | endUseAdjointVector () |
Declare that the adjoint vector is no longer used. See Adjoint vector management. | |
size_t | getParameter (TapeParameters parameter) const |
See Parameters functions. | |
void | setParameter (TapeParameters parameter, size_t value) |
See Parameters functions. | |
VectorAccess< Gradient > * | createVectorAccess () |
See Adjoint vector access. | |
VectorAccess< Adjoint > * | createVectorAccessCustomAdjoints (Adjoint *data) |
See Adjoint vector access. | |
void | deleteVectorAccess (VectorAccessInterface< Real, Identifier > *access) |
See Adjoint vector access. | |
Real | registerExternalFunctionOutput (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &value) |
void | pushJacobianManual (Real const &jacobian, Real const &value, Identifier const &index) |
void | storeManual (Real const &lhsValue, Identifier &lhsIndex, Config::ArgumentSize const &size) |
void | pushLowLevelFunction (Config::LowLevelFunctionToken token, size_t size, ByteDataView &data) |
Push a low level function to the tape. | |
void | evaluateKeepState (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a tape evaluation but restore the state afterwards such that it is the same as when the evaluation started. It hast to hold start >= end. | |
void | evaluateForwardKeepState (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a tape evaluation but restore the state afterwards such that it is the same as when the evaluation started. It hast to hold start <= end. | |
void | evaluatePrimal (Position const &start, Position const &end) |
Not implemented, raises an exception. | |
Real & | primal (Identifier const &identifier) |
Not implemented, raises an exception. | |
Real | primal (Identifier const &identifier) const |
Not implemented, raises an exception. | |
Public Member Functions inherited from codi::CommonTapeImplementation< T_ImplTapeTypes, T_Impl > | |
CommonTapeImplementation () | |
Constructor. | |
CommonTapeImplementation (CommonTapeImplementation &&)=delete | |
Do not allow move construction. Relevant use cases should be covered by swap. | |
CommonTapeImplementation (CommonTapeImplementation const &)=delete | |
Do not allow copy construction. | |
CommonTapeImplementation & | operator= (CommonTapeImplementation &&)=delete |
Do not allow move assignment. Relevant use cases should be covered by swap. | |
CommonTapeImplementation & | operator= (CommonTapeImplementation const &)=delete |
Do not allow copy assignment. | |
void | setGradient (Identifier const &identifier, Gradient const &gradient, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Set the gradient. | |
Gradient const & | getGradient (Identifier const &identifier, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) const |
Set the gradient. | |
void | evaluate (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a full reverse evaluation of the tape. | |
template<typename Lhs > | |
void | registerOutput (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &value) |
void | setActive () |
Start/continue recording of statements. | |
void | setPassive () |
Stop/interrupt recording of statements. | |
bool | isActive () const |
Check if the tape is recording. | |
template<typename Stream = std::ostream> | |
void | printStatistics (Stream &out=std::cout) const |
Default formatting of TapeValues. | |
template<typename Stream = std::ostream> | |
void | printTableHeader (Stream &out=std::cout) const |
Table header output of TapeValues. | |
template<typename Stream = std::ostream> | |
void | printTableRow (Stream &out=std::cout) const |
Table row output of TapeValues. | |
TapeValues | getTapeValues () const |
Get current tape values. | |
void | reset (bool resetAdjoints=true, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Reset the tape to the initial state for a fresh recording. | |
void | swap (Impl &other) |
Swap all data with an other tape. | |
void | resetHard () |
Delete everything and return to the state after construction, as far as possible. | |
void | writeToFile (const std::string &filename) |
See File IO functions. | |
void | readFromFile (const std::string &filename) |
See File IO functions. | |
void | deleteData () |
See File IO functions. | |
std::set< TapeParameters > const & | getAvailableParameters () const |
See Parameters functions. | |
size_t | getParameter (TapeParameters parameter) const |
See Parameters functions. | |
bool | hasParameter (TapeParameters parameter) const |
See Parameters functions. | |
void | setParameter (TapeParameters parameter, size_t value) |
See Parameters functions. | |
void | pushExternalFunction (ExternalFunction< Impl > const &extFunc) |
void | evaluateForward (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a forward evaluation of a part of the tape. It has to hold start <= end. | |
Identifier | getPassiveIndex () const |
Identifier for passive values. Usually 0. | |
Identifier | getInvalidIndex () const |
Invalid identifier. | |
bool | isIdentifierActive (Identifier const &index) const |
template<typename Lhs > | |
void | deactivateValue (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &value) |
Position | getPosition () const |
Current position of the tape. | |
Position | getZeroPosition () const |
Initial position of the tape. | |
void | resetTo (Position const &pos, bool resetAdjoints=true, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Reset the tape to the provided position. | |
void | evaluatePrimal () |
Perform a full (forward) reevaluation of the primals in the tape. | |
void | setPrimal (Identifier const &identifier, Real const &primal) |
Set primal value. | |
Real const & | getPrimal (Identifier const &identifier) const |
Get primal value. | |
TemporaryMemory & | getTemporaryMemory () |
Temporary memory that can be used for dynamic data both during the evaluation and the recording. | |
Config::LowLevelFunctionToken | registerLowLevelFunction (LowLevelFunctionEntry< Impl, Real, Identifier > const &entry) |
Register a low level function on the tape. | |
Public Member Functions inherited from codi::CustomAdjointVectorEvaluationTapeInterface< T_Position > | |
template<typename Adjoint > | |
void | evaluate (Position const &start, Position const &end, Adjoint *data) |
Perform a reverse evaluation for a part of the tape. It hast to hold start >= end. | |
template<typename Adjoint > | |
void | evaluateForward (Position const &start, Position const &end, Adjoint *data) |
Perform a forward evaluation of a part of the tape. It has to hold start <= end. | |
Public Member Functions inherited from codi::ForwardEvaluationTapeInterface< T_Position > | |
void | evaluateForward (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a forward evaluation of a part of the tape. It has to hold start <= end. | |
void | evaluateForward (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a forward evaluation of the full tape. | |
Public Member Functions inherited from codi::PositionalEvaluationTapeInterface< T_Position > | |
void | evaluate (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a reverse evaluation for a part of the tape. It hast to hold start >= end. | |
void | clearAdjoints (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Clear all adjoints that would be set in a tape evaluation from start to end. It has to hold start >= end. | |
Position | getPosition () const |
Current position of the tape. | |
Position | getZeroPosition () const |
Initial position of the tape. | |
void | resetTo (Position const &pos, bool resetAdjoints=true, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Reset the tape to the provided position. | |
Public Member Functions inherited from codi::DataManagementTapeInterface< T_Real, T_Identifier > | |
void | writeToFile (std::string const &filename) const |
See File IO functions. | |
void | readFromFile (std::string const &filename) |
See File IO functions. | |
void | deleteData () |
See File IO functions. | |
std::set< TapeParameters > const & | getAvailableParameters () const |
See Parameters functions. | |
size_t | getParameter (TapeParameters parameter) const |
See Parameters functions. | |
bool | hasParameter (TapeParameters parameter) const |
See Parameters functions. | |
void | setParameter (TapeParameters parameter, size_t value) |
See Parameters functions. | |
VectorAccessInterface< Real, Identifier > * | createVectorAccess () |
See Adjoint vector access. | |
template<typename Adjoint > | |
VectorAccessInterface< Real, Identifier > * | createVectorAccessCustomAdjoints (Adjoint *data) |
See Adjoint vector access. | |
void | deleteVectorAccess (VectorAccessInterface< Real, Identifier > *access) |
See Adjoint vector access. | |
void | resizeAdjointVector () |
Explicitly trigger resizing of the adjoint vector. See Adjoint vector management. | |
void | deleteAdjointVector () |
Delete the adjoint vector. See Adjoint vector management. | |
void | beginUseAdjointVector () |
Declare that the adjoint vector is being used. See Adjoint vector management. | |
void | endUseAdjointVector () |
Declare that the adjoint vector is no longer used. See Adjoint vector management. | |
void | swap (DataManagementTapeInterface &other) |
Swap all data with an other tape. | |
void | resetHard () |
Delete everything and return to the state after construction, as far as possible. | |
Public Member Functions inherited from codi::ExternalFunctionTapeInterface< T_Real, T_Gradient, T_Identifier > | |
template<typename Lhs , typename Tape > | |
Real | registerExternalFunctionOutput (LhsExpressionInterface< Real, Gradient, Tape, Lhs > &value) |
void | pushExternalFunction (ExternalFunction< ExternalFunctionTapeInterface > const &extFunc) |
Public Member Functions inherited from codi::GradientAccessTapeInterface< T_Gradient, T_Identifier > | |
void | setGradient (Identifier const &identifier, Gradient const &gradient, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Set the gradient. | |
Gradient const & | getGradient (Identifier const &identifier, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) const |
Set the gradient. | |
Gradient & | gradient (Identifier const &identifier, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Reference access to gradient. | |
Gradient const & | gradient (Identifier const &identifier, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) const |
Constant reference access to gradient. | |
Public Member Functions inherited from codi::IdentifierInformationTapeInterface< T_Real, T_Gradient, T_Identifier > | |
Identifier | getPassiveIndex () const |
Identifier for passive values. Usually 0. | |
Identifier | getInvalidIndex () const |
Invalid identifier. | |
bool | isIdentifierActive (Identifier const &index) const |
template<typename Lhs , typename Tape > | |
void | deactivateValue (LhsExpressionInterface< Real, Gradient, Tape, Lhs > &value) |
Public Member Functions inherited from codi::InternalStatementRecordingTapeInterface< T_Identifier > | |
template<typename Real > | |
void | initIdentifier (Real &value, Identifier &identifier) |
template<typename Real > | |
void | destroyIdentifier (Real &value, Identifier &identifier) |
Has to be called for each identifier, before it is deallocated. | |
template<typename Lhs , typename Rhs > | |
void | store (Lhs &lhs, Rhs const &rhs) |
Has to be called by an AD variable every time it is assigned. | |
Public Member Functions inherited from codi::LowLevelFunctionTapeInterface< T_Real, T_Gradient, T_Identifier > | |
TemporaryMemory & | getTemporaryMemory () |
Temporary memory that can be used for dynamic data both during the evaluation and the recording. | |
void | pushLowLevelFunction (Config::LowLevelFunctionToken token, size_t size, ByteDataView &data) |
Push a low level function to the tape. | |
Config::LowLevelFunctionToken | registerLowLevelFunction (LowLevelFunctionEntry< LowLevelFunctionTapeInterface, Real, Identifier > const &entry) |
Register a low level function on the tape. | |
Public Member Functions inherited from codi::ManualStatementPushTapeInterface< T_Real, T_Gradient, T_Identifier > | |
void | pushJacobianManual (Real const &jacobian, Real const &value, Identifier const &index) |
void | storeManual (Real const &lhsValue, Identifier &lhsIndex, Config::ArgumentSize const &size) |
Public Member Functions inherited from codi::PreaccumulationEvaluationTapeInterface< T_Real, T_Gradient, T_Identifier, T_Position > | |
void | evaluateKeepState (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a tape evaluation but restore the state afterwards such that it is the same as when the evaluation started. It hast to hold start >= end. | |
void | evaluateForwardKeepState (Position const &start, Position const &end, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a tape evaluation but restore the state afterwards such that it is the same as when the evaluation started. It hast to hold start <= end. | |
Public Member Functions inherited from codi::PrimalEvaluationTapeInterface< T_Real, T_Identifier, T_Position > | |
void | evaluatePrimal (Position const &start, Position const &end) |
Perform a partly (forward) reevaluation of the primals in the tape. It has to hold start <= end. | |
void | evaluatePrimal () |
Perform a full (forward) reevaluation of the primals in the tape. | |
void | setPrimal (Identifier const &identifier, Real const &gradient) |
Set primal value. | |
Real const & | getPrimal (Identifier const &identifier) const |
Get primal value. | |
Real & | primal (Identifier const &identifier) |
Writable reference to primal value. | |
Real const & | primal (Identifier const &identifier) const |
Read only reference to primal value. | |
void | revertPrimals (Position const &pos) |
Revert the primals to the state indicated by pos. | |
Public Member Functions inherited from codi::ReverseTapeInterface< T_Real, T_Gradient, T_Identifier > | |
template<typename Lhs , typename Tape > | |
void | registerInput (LhsExpressionInterface< Real, Gradient, Tape, Lhs > &value) |
template<typename Lhs , typename Tape > | |
void | registerOutput (LhsExpressionInterface< Real, Gradient, Tape, Lhs > &value) |
void | setActive () |
Start/continue recording of statements. | |
void | setPassive () |
Stop/interrupt recording of statements. | |
bool | isActive () const |
Check if the tape is recording. | |
void | evaluate (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Perform a full reverse evaluation of the tape. | |
void | clearAdjoints (AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Clear all adjoint values, that is, set them to zero. | |
void | reset (bool resetAdjoints=true, AdjointsManagement adjointsManagement=AdjointsManagement::Automatic) |
Reset the tape to the initial state for a fresh recording. | |
template<typename Stream = std::ostream> | |
void | printStatistics (Stream &out=std::cout) const |
Default formatting of TapeValues. | |
template<typename Stream = std::ostream> | |
void | printTableHeader (Stream &out=std::cout) const |
Table header output of TapeValues. | |
template<typename Stream = std::ostream> | |
void | printTableRow (Stream &out=std::cout) const |
Table row output of TapeValues. | |
TapeValues | getTapeValues () const |
Get current tape values. | |
Public Attributes | |
friend | Base |
Allow the base class to call protected and private methods. | |
Public Attributes inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
friend | Base |
Allow the base class to call protected and private methods. | |
Protected Member Functions | |
void | pushStmtData (Identifier const &index, Config::ArgumentSize const &numberOfArguments) |
Add statement specific data to the data streams. | |
Protected Member Functions inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
TapeValues | internalGetTapeValues () const |
Adds data from all streams, the size of the adjoint vector and index manager data. | |
void | internalRegisterInput (LhsExpressionInterface< Real, Gradient, Impl, Lhs > &value, bool unusedIndex) |
Add a new input to the tape. | |
void | pushJacobians (ExpressionInterface< Real, Rhs > const &rhs) |
Push Jacobians and delayed Jacobians to the tape. | |
void | pushStmtData (Identifier const &index, Config::ArgumentSize const &numberOfArguments) |
Add statement specific data to the data streams. | |
Protected Member Functions inherited from codi::CommonTapeImplementation< T_ImplTapeTypes, T_Impl > | |
void | deleteLowLevelFunctionData (Position const &pos) |
Delete all external function data up to pos . | |
void | incrementManualPushCounter () |
Increment the manual push counter. Check against the declared push goal. | |
void | initializeManualPushData (Real const &lhsValue, Identifier const &lhsIndex, size_t size) |
Initialize all manual push data, including the counter. Check that a previous manual store is completed. | |
TapeValues | internalGetTapeValues () const |
Create tape values. | |
void | init (typename ImplTapeTypes::NestedData *nested) |
Initialize the base class. | |
void | internalStoreLowLevelFunction (Config::LowLevelFunctionToken token, size_t size, ByteDataView &dataView) |
Called by the implementing tapes to store a low level function. The size is reserved and allocated. The data view is populated with the pointer and can be used to write the data. | |
Static Protected Member Functions | |
template<typename Adjoint > | |
static void | internalEvaluateForward_EvalStatements (JacobianLinearTape &tape, Adjoint *adjointVector, size_t &curLLFByteDataPos, size_t const &endLLFByteDataPos, char *dataPtr, size_t &curLLFInfoDataPos, size_t const &endLLFInfoDataPos, Config::LowLevelFunctionToken *const tokenPtr, Config::LowLevelFunctionDataSize *const dataSizePtr, size_t &curJacobianPos, size_t const &endJacobianPos, Real const *const rhsJacobians, Identifier const *const rhsIdentifiers, size_t &curStmtPos, size_t const &endStmtPos, Config::ArgumentSize const *const numberOfJacobians, size_t const &startAdjointPos, size_t const &endAdjointPos) |
Perform a forward evaluation of the tape. Arguments are from the recursive eval methods of the DataInterface. | |
template<typename Adjoint > | |
static void | internalEvaluateReverse_EvalStatements (JacobianLinearTape &tape, Adjoint *adjointVector, size_t &curLLFByteDataPos, size_t const &endLLFByteDataPos, char *dataPtr, size_t &curLLFInfoDataPos, size_t const &endLLFInfoDataPos, Config::LowLevelFunctionToken *const tokenPtr, Config::LowLevelFunctionDataSize *const dataSizePtr, size_t &curJacobianPos, size_t const &endJacobianPos, Real const *const rhsJacobians, Identifier const *const rhsIdentifiers, size_t &curStmtPos, size_t const &endStmtPos, Config::ArgumentSize const *const numberOfJacobians, size_t const &startAdjointPos, size_t const &endAdjointPos) |
Perform a reverse evaluation of the tape. Arguments are from the recursive eval methods of the DataInterface. | |
Static Protected Member Functions inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
static void | incrementAdjoints (Adjoint *adjointVector, Adjoint const &lhsAdjoint, Config::ArgumentSize const &numberOfArguments, size_t &curJacobianPos, Real const *const rhsJacobians, Identifier const *const rhsIdentifiers) |
Performs the AD reverse equation for a statement. | |
static void | incrementTangents (Adjoint const *const adjointVector, Adjoint &lhsAdjoint, Config::ArgumentSize const &numberOfArguments, size_t &curJacobianPos, Real const *const rhsJacobians, Identifier const *const rhsIdentifiers) |
Performs the AD forward equation for a statement. | |
static void | internalEvaluateForward_EvalStatements (Args &&... args) |
Perform a forward evaluation of the tape. Arguments are from the recursive eval methods of the DataInterface. | |
static void | internalEvaluateReverse_EvalStatements (Args &&... args) |
Perform a reverse evaluation of the tape. Arguments are from the recursive eval methods of the DataInterface. | |
Static Protected Member Functions inherited from codi::CommonTapeImplementation< T_ImplTapeTypes, T_Impl > | |
template<LowLevelFunctionEntryCallKind callType, typename... Args> | |
static void | callLowLevelFunction (Impl &impl, bool forward, size_t &curLLFByteDataPos, char *dataPtr, size_t &curLLFTInfoDataPos, Config::LowLevelFunctionToken *const tokenPtr, Config::LowLevelFunctionDataSize *const dataSizePtr, Args &&... args) |
Called by the implementing tapes during a tape evaluation when a low level function statement has been reached. | |
Additional Inherited Members | |
Static Public Member Functions inherited from codi::LowLevelFunctionTapeInterface< T_Real, T_Gradient, T_Identifier > | |
template<LowLevelFunctionEntryCallKind callType, typename... Args> | |
static void | callLowLevelFunction (LowLevelFunctionTapeInterface &tape, bool forward, size_t &curLLFByteDataPos, char *dataPtr, size_t &curLLFInfoDataPos, Config::LowLevelFunctionToken *const tokenPtr, Config::LowLevelFunctionDataSize *const dataSizePtr, Args &&... args) |
Internal function for evaluating a low level function entry. | |
Static Public Attributes inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
static bool constexpr | AllowJacobianOptimization |
See InternalStatementRecordingTapeInterface. | |
static bool constexpr | HasPrimalValues |
See PrimalEvaluationTapeInterface. | |
static bool constexpr | LinearIndexHandling |
See IdentifierInformationTapeInterface. | |
static bool constexpr | RequiresPrimalRestore |
See PrimalEvaluationTapeInterface. | |
Static Public Attributes inherited from codi::IdentifierInformationTapeInterface< T_Real, T_Gradient, T_Identifier > | |
static bool constexpr | LinearIndexHandling = false |
Static Public Attributes inherited from codi::InternalStatementRecordingTapeInterface< T_Identifier > | |
static bool constexpr | AllowJacobianOptimization |
If certain operations can be hidden from the tape. | |
Static Public Attributes inherited from codi::PrimalEvaluationTapeInterface< T_Real, T_Identifier, T_Position > | |
static bool constexpr | HasPrimalValues = false |
True if the tape has primal values. | |
static bool constexpr | RequiresPrimalRestore |
True if the primal state changes during a reverse or forward evaluation. | |
Protected Attributes inherited from codi::JacobianBaseTape< T_TapeTypes, JacobianLinearTape< T_TapeTypes > > | |
Adjoints | adjoints |
Evaluation vector for AD. | |
MemberStore< IndexManager, Impl, TapeTypes::IsStaticIndexHandler > | indexManager |
Index manager. | |
JacobianData | jacobianData |
Data stream for argument specific data. | |
StatementData | statementData |
Data stream for statement specific data. | |
Protected Attributes inherited from codi::CommonTapeImplementation< T_ImplTapeTypes, T_Impl > | |
bool | active |
Whether or not the tape is in recording mode. | |
TemporaryMemory | allocator |
Allocator for temporary memory. | |
LowLevelFunctionByteData | llfByteData |
Byte data for low level functions. | |
LowLevelFunctionInfoData | llfInfoData |
Token and size data for low level functions. | |
size_t | manualPushCounter |
Count the pushes after storeManual, to identify the last push. | |
size_t | manualPushGoal |
Store the number of expected pushes after a storeManual call. | |
Identifier | manualPushLhsIdentifier |
For storeManual, remember the identifier assigned to the lhs. | |
Real | manualPushLhsValue |
For storeManual, remember the value assigned to the lhs. | |
std::set< TapeParameters > | options |
All options. | |
Static Protected Attributes inherited from codi::CommonTapeImplementation< T_ImplTapeTypes, T_Impl > | |
static std::vector< LowLevelFunctionEntry< Impl, Real, Identifier > > * | lowLevelFunctionLookup = nullptr |
Lookup table for low level function. | |
Final implementation for a Jacobian tape with a linear index management.
This class implements the interface methods from the JacobianBaseTape.
T_TapeTypes | JacobianTapeTypes definition. |
using codi::JacobianLinearTape< T_TapeTypes >::TapeTypes |
See JacobianLinearTape.
|
inline |
Clear all adjoint values, that is, set them to zero.
Automatic adjoints management involves locking, see AdjointsManagement for details.
|
inline |
Clear all adjoints that would be set in a tape evaluation from start to end. It has to hold start >= end.
Automatic adjoints management involves locking, see AdjointsManagement for details.
|
inlinestaticprotected |
Perform a forward evaluation of the tape. Arguments are from the recursive eval methods of the DataInterface.
|
inlinestaticprotected |
Perform a reverse evaluation of the tape. Arguments are from the recursive eval methods of the DataInterface.
|
inlineprotected |
Add statement specific data to the data streams.
Only the number of arguments is required for linear index managers.