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

Last change on this file since 294 was 294, checked in by kulshres, 8 years ago

convert tape stats to size_t from uint

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

  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 KB
Line 
1/*----------------------------------------------------------------------------
2 ADOL-C -- Automatic Differentiation by Overloading in C++
3 File:     taping.h
4 Revision: $Id: taping.h 294 2012-02-29 07:53:03Z 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
59END_C_DECLS
60
61/**
62 * Normally, theKeeper would take care of the initialization and finalization
63 * of ADOL-C. However, some compilers do not include the keeper code when
64 * linking. "initADOLC" should be called right after main(...), in this case.
65 * "initADOLC" will not initialize memory, but is only necessary to reference
66 * "theKeeper", such that this static instance is used at least once. :-(
67 */
68ADOLC_DLL_EXPORT void initADOLC();
69
70#if defined(__cplusplus)
71
72/* Initialization for the taping process. Creates buffers for this tape, sets
73 * files names, and calls appropriate setup routines.
74 * This functions return value is different from zero if a tape with with ID
75 * tnum is available only in core. The old tape gets overwritten by the new
76 * one in this case. */
77ADOLC_DLL_EXPORT int trace_on(short tnum, int keepTaylors = 0);
78
79/* special version including buffersize customization
80 *      obs - size of the operation buffer (number of elements)
81 *      lbs - size of the location buffer (number of elements)
82 *      vbs - size of the value buffer (number of elements)
83 *      tbs - size of the taylor buffer (number of elements)
84 * trace_on is the last point in time we want to allow the change of buffer
85 * sizes for a given tape */
86ADOLC_DLL_EXPORT int trace_on(short tnum, int keepTaylors,
87        uint obs, uint lbs, uint vbs, uint tbs);
88
89/* Stop Tracing. Cleans up, and turns off trace_flag. Flag not equal zero
90 * enforces writing of the three main tape files (op+loc+val). */
91ADOLC_DLL_EXPORT void trace_off(int flag = 0);
92
93ADOLC_DLL_EXPORT bool isTaping();
94
95#endif
96
97#endif /* ADOLC_TAPING_H */
Note: See TracBrowser for help on using the repository browser.