source: trunk/ADOL-C/include/adolc/taping.h @ 407

Last change on this file since 407 was 354, checked in by kulshres, 7 years ago

Move all external headers into a separate directory

This let's us get rid of the symlink adolc that was previously required
for building and created problems sometimes
This also adjusts all Makefiles for examples to make external builds
possible.

Signed-off-by: Kshitij Kulshreshtha <kshitij@…>

  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1/*----------------------------------------------------------------------------
2 ADOL-C -- Automatic Differentiation by Overloading in C++
3 File:     taping.h
4 Revision: $Id: taping.h 354 2012-10-01 11:32:26Z kulshres $
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 <adolc/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    NUM_EQ_PROD,                      /* # of eq_*_prod for sparsity pattern */
39    STAT_SIZE                     /* represents the size of the stats vector */
40};
41
42enum TapeRemovalType {
43    ADOLC_REMOVE_FROM_CORE,
44    ADOLC_REMOVE_COMPLETELY
45};
46
47/* Returns statistics on the tape "tag". Use enumeration StatEntries for
48 * accessing the individual elements of the vector "tape_stats"! */
49ADOLC_DLL_EXPORT void tapestats(short tag, size_t *tape_stats);
50
51/* An all-in-one tape stats printing routine */
52ADOLC_DLL_EXPORT void printTapeStats(FILE *stream, short tag);
53
54ADOLC_DLL_EXPORT int removeTape(short tapeID, short type);
55
56ADOLC_DLL_EXPORT void enableBranchSwitchWarnings();
57ADOLC_DLL_EXPORT void disableBranchSwitchWarnings();
58
59ADOLC_DLL_EXPORT void ensureContiguousLocations(size_t n);
60
61END_C_DECLS
62
63/**
64 * Normally, theKeeper would take care of the initialization and finalization
65 * of ADOL-C. However, some compilers do not include the keeper code when
66 * linking. "initADOLC" should be called right after main(...), in this case.
67 * "initADOLC" will not initialize memory, but is only necessary to reference
68 * "theKeeper", such that this static instance is used at least once. :-(
69 */
70ADOLC_DLL_EXPORT void initADOLC();
71
72#if defined(__cplusplus)
73
74/* Initialization for the taping process. Creates buffers for this tape, sets
75 * files names, and calls appropriate setup routines.
76 * This functions return value is different from zero if a tape with with ID
77 * tnum is available only in core. The old tape gets overwritten by the new
78 * one in this case. */
79ADOLC_DLL_EXPORT int trace_on(short tnum, int keepTaylors = 0);
80
81/* special version including buffersize customization
82 *      obs - size of the operation buffer (number of elements)
83 *      lbs - size of the location buffer (number of elements)
84 *      vbs - size of the value buffer (number of elements)
85 *      tbs - size of the taylor buffer (number of elements)
86 * trace_on is the last point in time we want to allow the change of buffer
87 * sizes for a given tape */
88ADOLC_DLL_EXPORT int trace_on(short tnum, int keepTaylors,
89        uint obs, uint lbs, uint vbs, uint tbs);
90
91/* Stop Tracing. Cleans up, and turns off trace_flag. Flag not equal zero
92 * enforces writing of the three main tape files (op+loc+val). */
93ADOLC_DLL_EXPORT void trace_off(int flag = 0);
94
95ADOLC_DLL_EXPORT bool isTaping();
96
97#endif
98
99#endif /* ADOLC_TAPING_H */
Note: See TracBrowser for help on using the repository browser.