source: trunk/ADOL-C/src/taping.h @ 40

Last change on this file since 40 was 40, checked in by awalther, 10 years ago

adapted directoy structure

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