/usr/include/adolc/taping.h is in libadolc-dev 2.5.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | /*----------------------------------------------------------------------------
ADOL-C -- Automatic Differentiation by Overloading in C++
File: taping.h
Revision: $Id: taping.h 527 2014-07-15 14:09:31Z kulshres $
Contents: all C functions directly accessing at least one of the four tapes
(operations, locations, constants, value stack)
Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
This file is part of ADOL-C. This software is provided as open source.
Any use, reproduction, or distribution of the software constitutes
recipient's acceptance of the terms of the accompanying license file.
----------------------------------------------------------------------------*/
#if !defined(ADOLC_TAPING_H)
#define ADOLC_TAPING_H 1
#include <adolc/common.h>
BEGIN_C_DECLS
enum StatEntries {
NUM_INDEPENDENTS, /* # of independent variables */
NUM_DEPENDENTS, /* # of dependent variables */
NUM_MAX_LIVES, /* max # of live variables */
TAY_STACK_SIZE, /* # of values in the taylor (value) stack */
OP_BUFFER_SIZE, /* # of operations per buffer == OBUFSIZE (usrparms.h) */
NUM_OPERATIONS, /* overall # of operations */
OP_FILE_ACCESS, /* operations file written or not */
NUM_LOCATIONS, /* overall # of locations */
LOC_FILE_ACCESS, /* locations file written or not */
NUM_VALUES, /* overall # of values */
VAL_FILE_ACCESS, /* values file written or not */
LOC_BUFFER_SIZE, /* # of locations per buffer == LBUFSIZE (usrparms.h) */
VAL_BUFFER_SIZE, /* # of values per buffer == CBUFSIZE (usrparms.h) */
TAY_BUFFER_SIZE, /* # of taylors per buffer <= TBUFSIZE (usrparms.h) */
NUM_EQ_PROD, /* # of eq_*_prod for sparsity pattern */
NO_MIN_MAX, /* no use of min_op, deferred to abs_op for piecewise stuff */
NUM_SWITCHES, /* # of abs calls that can switch branch */
STAT_SIZE /* represents the size of the stats vector */
};
enum TapeRemovalType {
ADOLC_REMOVE_FROM_CORE,
ADOLC_REMOVE_COMPLETELY
};
/* Returns statistics on the tape "tag". Use enumeration StatEntries for
* accessing the individual elements of the vector "tape_stats"! */
ADOLC_DLL_EXPORT void tapestats(short tag, size_t *tape_stats);
/* An all-in-one tape stats printing routine */
ADOLC_DLL_EXPORT void printTapeStats(FILE *stream, short tag);
ADOLC_DLL_EXPORT int removeTape(short tapeID, short type);
ADOLC_DLL_EXPORT void enableBranchSwitchWarnings();
ADOLC_DLL_EXPORT void disableBranchSwitchWarnings();
ADOLC_DLL_EXPORT void ensureContiguousLocations(size_t n);
ADOLC_DLL_EXPORT void enableMinMaxUsingAbs();
ADOLC_DLL_EXPORT void disableMinMaxUsingAbs();
/*
* free location block sorting/consolidation upon calls to ensureContiguousLocations
* happens when the ratio between allocated and used locations exceeds gcTriggerRatio or
* the allocated locations exceed gcTriggerMaxSize
*/
ADOLC_DLL_EXPORT void setStoreManagerControl(double gcTriggerRatio, size_t gcTriggerMaxSize);
END_C_DECLS
/**
* Normally, theKeeper would take care of the initialization and finalization
* of ADOL-C. However, some compilers do not include the keeper code when
* linking. "initADOLC" should be called right after main(...), in this case.
* "initADOLC" will not initialize memory, but is only necessary to reference
* "theKeeper", such that this static instance is used at least once. :-(
*/
ADOLC_DLL_EXPORT void initADOLC();
#if defined(__cplusplus)
/* Initialization for the taping process. Creates buffers for this tape, sets
* files names, and calls appropriate setup routines.
* This functions return value is different from zero if a tape with with ID
* tnum is available only in core. The old tape gets overwritten by the new
* one in this case. */
ADOLC_DLL_EXPORT int trace_on(short tnum, int keepTaylors = 0);
/* special version including buffersize customization
* obs - size of the operation buffer (number of elements)
* lbs - size of the location buffer (number of elements)
* vbs - size of the value buffer (number of elements)
* tbs - size of the taylor buffer (number of elements)
* trace_on is the last point in time we want to allow the change of buffer
* sizes for a given tape */
ADOLC_DLL_EXPORT int trace_on(short tnum, int keepTaylors,
uint obs, uint lbs, uint vbs, uint tbs, int skipFileCleanup=0);
/* Stop Tracing. Cleans up, and turns off trace_flag. Flag not equal zero
* enforces writing of the three main tape files (op+loc+val). */
ADOLC_DLL_EXPORT void trace_off(int flag = 0);
ADOLC_DLL_EXPORT bool isTaping();
ADOLC_DLL_EXPORT void skip_tracefile_cleanup(short tnum);
#endif
#endif /* ADOLC_TAPING_H */
|