TMB Documentation
v1.9.11
|
Pack (PackOp
) or unpack (UnpkOp
) n
consecutive values on the tape.
More...
#include <vectorize.hpp>
Public Member Functions | |
void | forward (ForwardArgs< Scalar > &args) |
Pack values. | |
void | forward (ForwardArgs< Replay > &args) |
Pack values (replay) | |
void | reverse (ReverseArgs< Scalar > &args) |
Unpack derivatives. | |
void | reverse (ReverseArgs< Replay > &args) |
Unpack derivatives (replay) | |
Public Member Functions inherited from TMBad::global::Operator< ninput, noutput > | |
void | dependencies_updating (Args<> &args, Dependencies &dep) const |
Default implementation of OperatorPure::dependencies_updating() | |
void * | operator_data () |
Return operator specific dynamic information (optional) | |
OperatorPure * | other_fuse (OperatorPure *self, OperatorPure *other) |
How to fuse this operator (self) with another (other) | |
void | print (print_config cfg) |
Print this operator (optional) | |
Public Attributes | |
Index | n |
Unpacked size. | |
Static Public Attributes | |
static const bool | allow_remap = false |
It is **not* safe to remap the inputs of this operator. | |
static const Index | K = ScalarPack<SegmentRef>::size |
Packed size (~2) | |
Static Public Attributes inherited from TMBad::global::DynamicOperator< 1, ScalarPack< SegmentRef >::size > | |
static const bool | dynamic |
static const int | max_fuse_depth |
Static Public Attributes inherited from TMBad::global::Operator< ninput, noutput > | |
static const bool | add_forward_replay_copy |
Should this operator replay it self by invoking the copy CTOR ? | |
static const bool | add_static_identifier |
Should this operator have a static identifier ? | |
static const bool | allow_remap |
Is it safe to remap the inputs of this operator? More... | |
static const int | dependent_variable |
Is output of this operator a dependent variable ? | |
static const bool | dynamic |
Does this operator require dynamic allocation ? | |
static const bool | elimination_protected |
Protect this operator from elimination by the tape optimizer ? | |
static const bool | have_dependencies |
Have dependencies member been defined ? | |
static const bool | have_eval |
Does this class have an eval member from which to define forward ? | |
static const bool | have_forward_incr_reverse_decr |
Have forward_incr and reverse_incr members been defined ? | |
static const bool | have_forward_mark_reverse_mark |
Have forward_mark and reverse_mark members been defined ? | |
static const bool | have_forward_reverse |
Have forward and reverse members been defined ? | |
static const bool | have_increment_decrement |
Have increment and decrement members been defined ? | |
static const bool | have_input_size_output_size |
Have input_size and output_size members been defined ? | |
static const bool | implicit_dependencies |
Does this operator have implicit dependencies? More... | |
static const int | independent_variable |
Is output of this operator an independent variable ? | |
static const bool | is_constant |
Is this a constant operator ? | |
static const bool | is_linear |
Is this a linear operator ? | |
static const int | max_fuse_depth |
How many times can this operator be doubled ? | |
static const int | ninput |
Number of operator inputs. | |
static const int | noutput |
Number of operator outputs. | |
static const bool | smart_pointer |
Is this operator a 'smart pointer' (with reference counting) ? | |
static const bool | updating |
This operator may update existing variables ? More... | |
Pack (PackOp
) or unpack (UnpkOp
) n
consecutive values on the tape.
The purpose of these operators is to provide an analogue of 'pass by reference' between AD tapes.
An 'outer' tape which repeatedly (N
times) calls an 'inner' tape (R^n->R
) would normally require O(N*n)
memory units because each of the n
inputs must be referenced each time the inner tape is called. By packing the input array, the memory usage can be reduced to O(N+n)
.
Definition at line 435 of file TMBad/vectorize.hpp.