|
| MultiUseIndexManager (Index const &reservedIndices) |
| Constructor.
|
|
|
void | addToTapeValues (TapeValues &values) const |
| Add storage and other information to the tape values.
|
|
template<typename Tape > |
bool | assignIndex (Index &index) |
| Call on assignment of a primal value, e.g. on w for w = a + b .
|
|
template<typename Tape > |
bool | assignUnusedIndex (Index &index) |
| Call on registering input values.
|
|
template<typename Tape > |
void | copyIndex (Index &lhs, Index const &rhs) |
| Call on copy of a primal value, e.g. w = a .
|
|
template<typename Tape > |
void | freeIndex (Index &index) |
| Call on destruction of a primal value. Usually called from the destructor.
|
|
| ReuseIndexManager (Index const &reservedIndices) |
| Constructor.
|
|
| ~ReuseIndexManager () |
| Destructor.
|
|
void | addToTapeValues (TapeValues &values) const |
| Add storage and other information to the tape values.
|
|
Index | getLargestCreatedIndex () const |
| Returns the largest created index.
|
|
| ReuseIndexManagerBase () |
|
| ~ReuseIndexManagerBase () |
| Destructor.
|
|
bool | assignIndex (Index &index) |
| Call on assignment of a primal value, e.g. on w for w = a + b .
|
|
bool | assignUnusedIndex (Index &index) |
| Call on registering input values.
|
|
void | copyIndex (Index &lhs, Index const &rhs) |
| Call on copy of a primal value, e.g. w = a .
|
|
void | freeIndex (Index &index) |
| Call on destruction of a primal value. Usually called from the destructor.
|
|
void | reset () |
| Reset for a new recording.
|
|
void | addToTapeValues (TapeValues &values) const |
| Add storage and other information to the tape values.
|
|
void | addToTapeValues (TapeValues &values) const |
| Add storage and other information to the tape values.
|
|
Index | getLargestCreatedIndex () const |
| Returns the largest created index.
|
|
template<typename Tape > |
bool | assignIndex (Index &index) |
| Call on assignment of a primal value, e.g. on w for w = a + b .
|
|
template<typename Tape > |
bool | assignUnusedIndex (Index &index) |
| Call on registering input values.
|
|
template<typename Tape > |
void | copyIndex (Index &lhs, Index const &rhs) |
| Call on copy of a primal value, e.g. w = a .
|
|
template<typename Tape > |
void | freeIndex (Index &index) |
| Call on destruction of a primal value. Usually called from the destructor.
|
|
void | reset () |
| Reset for a new recording.
|
|
void | pushData () |
| Add data to the storage allocated by the implementation. The method can only be called after a call to reserveItems and only as often as the number of reserved items.
|
|
void | getDataPointers () |
| Get pointers to the data from the storage implementation. The method can only be called after a call to reserveItems() and data can only be accessed from 0 to the number given by reserveItems (excluding). Afterwards, addDataSize() needs to be called with the actual number of elements that have been written.
|
|
void | addDataSize (size_t size) |
| Add this many items to the data stream, after the data has been manipulated via pointers obtained from getDataPointers().
|
|
InternalPosHandle | reserveItems (size_t const &items) |
| Reserve this many items on the data stream. See pushData for details.
|
|
void | resize (size_t const &totalSize) |
|
void | reset () |
|
void | resetHard () |
|
void | resetTo (Position const &pos) |
|
void | erase (Position const &start, Position const &end, bool recursive=true) |
|
size_t | getDataSize () const |
|
Position | getPosition () const |
|
size_t | getPushedDataCount (InternalPosHandle const &startPos) |
|
Position | getZeroPosition () const |
|
void | addToTapeValues (TapeValues &values) const |
| Add amount of stored data to the TapeValues object. Not called on the nested vector.
|
|
template<typename = void> |
Position | extractPosition (Position const &pos) const |
| Extract the position of a nested DataInterface from the global position object provide by this interface.
|
|
void | setNested (NestedData *v) |
|
|
|
void | swap (DataInterface &other) |
|
template<int selectedDepth = -1, typename FunctionObject , typename... Args> |
void | evaluateForward (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Evaluates the function object with segments of continuous and valid data for all nested DataInterfaces.
|
|
template<int selectedDepth = -1, typename FunctionObject , typename... Args> |
void | evaluateReverse (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Evaluates the function object with segments of continuous and valid data for all nested DataInterfaces.
|
|
template<typename FunctionObject , typename... Args> |
void | forEachChunk (FunctionObject &function, bool recursive, Args &&... args) |
| Calls the function object for each continuous segment of data.
|
|
template<typename FunctionObject , typename... Args> |
void | forEachForward (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Calls the function object for each item in the data stream. This call is not recursive.
|
|
template<typename FunctionObject , typename... Args> |
void | forEachReverse (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Calls the function object for each item in the data stream. This call is not recursive.
|
|
void | addDataSize (size_t const &size) |
| Add this many items to the data stream, after the data has been manipulated via pointers obtained from getDataPointers().
|
|
template<typename... Data> |
void | getDataPointers (Data *&... pointers) |
| Get pointers to the data from the storage implementation. The method can only be called after a call to reserveItems() and data can only be accessed from 0 to the number given by reserveItems (excluding). Afterwards, addDataSize() needs to be called with the actual number of elements that have been written.
|
|
template<typename... Data> |
void | pushData (Data const &... data) |
| Add data to the storage allocated by the implementation. The method can only be called after a call to reserveItems and only as often as the number of reserved items.
|
|
InternalPosHandle | reserveItems (size_t const &items) |
| Reserve this many items on the data stream. See pushData for details.
|
|
void | resize (size_t const &totalSize) |
|
void | reset () |
|
void | resetHard () |
|
void | resetTo (Position const &pos) |
|
void | erase (Position const &start, Position const &end, bool recursive=true) |
|
size_t | getDataSize () const |
|
Position | getPosition () const |
|
size_t | getPushedDataCount (InternalPosHandle const &startPos) |
|
Position | getZeroPosition () const |
|
void | addToTapeValues (TapeValues &values) const |
| Add amount of stored data to the TapeValues object. Not called on the nested vector.
|
|
template<typename TargetPosition > |
TargetPosition | extractPosition (Position const &pos) const |
| Extract the position of a nested DataInterface from the global position object provide by this interface.
|
|
void | setNested (NestedData *v) |
|
void | swap (DataInterface &other) |
|
template<int selectedDepth = -1, typename FunctionObject , typename... Args> |
void | evaluateForward (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Evaluates the function object with segments of continuous and valid data for all nested DataInterfaces.
|
|
template<int selectedDepth = -1, typename FunctionObject , typename... Args> |
void | evaluateReverse (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Evaluates the function object with segments of continuous and valid data for all nested DataInterfaces.
|
|
template<typename FunctionObject , typename... Args> |
void | forEachChunk (FunctionObject &function, bool recursive, Args &&... args) |
| Calls the function object for each continuous segment of data.
|
|
template<typename FunctionObject , typename... Args> |
void | forEachForward (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Calls the function object for each item in the data stream. This call is not recursive.
|
|
template<typename FunctionObject , typename... Args> |
void | forEachReverse (Position const &start, Position const &end, FunctionObject function, Args &&... args) |
| Calls the function object for each item in the data stream. This call is not recursive.
|
|
template<typename T_Index>
struct codi::MultiUseIndexManager< T_Index >
Extends the ReuseIndexManager with a copy optimization.
Mathematical and implementational details are explained in SBG2021Index.
Performs reference counting for each index. If the reference count is zero, then the index is freed and given back to the ReuseIndexManager.
- Template Parameters
-
T_Index | Type for the identifier, usually an integer type. |