source: trunk/ADOL-C/src/taping_p.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: 20.3 KB
Line 
1/*----------------------------------------------------------------------------
2 ADOL-C -- Automatic Differentiation by Overloading in C++
3 File:     taping_p.h
4 Revision: $Id: taping_p.h 294 2012-02-29 07:53:03Z kulshres $
5 Contents: declarations for used by taping routines
6 
7 Copyright (c) Andreas Kowarz
8
9 This file is part of ADOL-C. This software is provided as open source.
10 Any use, reproduction, or distribution of the software constitutes
11 recipient's acceptance of the terms of the accompanying license file.
12
13----------------------------------------------------------------------------*/
14#if !defined(ADOLC_TAPING_P_H)
15#define ADOLC_TAPING_P_H 1
16
17#include <adolc/common.h>
18#include <adolc/taping.h>
19#include <errno.h>
20#ifdef __cplusplus
21#include "storemanager.h"
22#endif
23
24BEGIN_C_DECLS
25
26enum WORKMODES {
27    ADOLC_NO_MODE,
28
29    ADOLC_FORWARD,
30    ADOLC_ZOS_FORWARD,
31    ADOLC_FOS_FORWARD,
32    ADOLC_FOV_FORWARD,
33    ADOLC_HOS_FORWARD,
34    ADOLC_HOV_FORWARD,
35
36    ADOLC_REVERSE,
37    ADOLC_FOS_REVERSE,
38    ADOLC_FOV_REVERSE,
39    ADOLC_HOS_REVERSE,
40    ADOLC_HOV_REVERSE
41};
42
43/****************************************************************************/
44/* Tape identification (ADOLC & version check)                              */
45/****************************************************************************/
46typedef struct {
47    short adolc_ver;
48    short adolc_sub;
49    short adolc_lvl;
50    short locint_size;
51    short revreal_size;
52}
53ADOLC_ID;
54
55extern ADOLC_ID adolc_id;
56
57/****************************************************************************/
58/* tape types => used for file name generation                              */
59/****************************************************************************/
60enum TAPENAMES {
61    LOCATIONS_TAPE,
62    VALUES_TAPE,
63    OPERATIONS_TAPE,
64    TAYLORS_TAPE
65};
66
67/****************************************************************************/
68/* Errors handled by fail(...)                                              */
69/****************************************************************************/
70enum ADOLC_ERRORS {
71    ADOLC_MALLOC_FAILED,
72    ADOLC_INTEGER_TAPE_FOPEN_FAILED,
73    ADOLC_INTEGER_TAPE_FREAD_FAILED,
74    ADOLC_TAPE_TO_OLD,
75    ADOLC_WRONG_LOCINT_SIZE,
76    ADOLC_MORE_STAT_SPACE_REQUIRED,
77
78    ADOLC_TAPING_BUFFER_ALLOCATION_FAILED,
79    ADOLC_TAPING_TBUFFER_ALLOCATION_FAILED,
80    ADOLC_TAPING_READ_ERROR_IN_TAYLOR_CLOSE,
81    ADOLC_TAPING_TO_MANY_TAYLOR_BUFFERS,
82    ADOLC_TAPING_TO_MANY_LOCINTS,
83    ADOLC_TAPING_STORE_REALLOC_FAILED,
84    ADOLC_TAPING_FATAL_IO_ERROR,
85    ADOLC_TAPING_TAPE_STILL_IN_USE,
86    ADOLC_TAPING_TAYLOR_OPEN_FAILED,
87
88    ADOLC_EVAL_SEEK_VALUE_STACK,
89    ADOLC_EVAL_OP_TAPE_READ_FAILED,
90    ADOLC_EVAL_VAL_TAPE_READ_FAILED,
91    ADOLC_EVAL_LOC_TAPE_READ_FAILED,
92    ADOLC_EVAL_TAY_TAPE_READ_FAILED,
93
94    ADOLC_REVERSE_NO_TAYLOR_STACK,
95    ADOLC_REVERSE_COUNTS_MISMATCH,
96    ADOLC_REVERSE_TAYLOR_COUNTS_MISMATCH,
97
98    ADOLC_BUFFER_NULLPOINTER_FUNCTION,
99    ADOLC_BUFFER_INDEX_TO_LARGE,
100
101    ADOLC_EXT_DIFF_NULLPOINTER_STRUCT,
102    ADOLC_EXT_DIFF_WRONG_TAPESTATS,
103    ADOLC_EXT_DIFF_NULLPOINTER_FUNCTION,
104    ADOLC_EXT_DIFF_NULLPOINTER_DIFFFUNC,
105    ADOLC_EXT_DIFF_NULLPOINTER_ARGUMENT,
106    ADOLC_EXT_DIFF_WRONG_FUNCTION_INDEX,
107
108    ADOLC_CHECKPOINTING_CPINFOS_NULLPOINTER,
109    ADOLC_CHECKPOINTING_NULLPOINTER_ARGUMENT,
110    ADOLC_CHECKPOINTING_NULLPOINTER_FUNCTION,
111    ADOLC_CHECKPOINTING_NULLPOINTER_FUNCTION_DOUBLE,
112    ADOLC_CHECKPOINTING_REVOLVE_IRREGULAR_TERMINATED,
113    ADOLC_CHECKPOINTING_UNEXPECTED_REVOLVE_ACTION
114};
115/* additional infos fail can work with */
116extern int failAdditionalInfo1;
117extern int failAdditionalInfo2;
118extern locint failAdditionalInfo3;
119extern locint failAdditionalInfo4;
120extern void *failAdditionalInfo5;
121extern void *failAdditionalInfo6;
122
123/****************************************************************************/
124/* tape information                                                         */
125/****************************************************************************/
126
127#ifdef SPARSE
128typedef struct SparseJacInfos {
129  void *g;
130  void *jr1d;
131
132  double *y;
133  double **Seed;
134  double **B;
135
136  unsigned int **JP;
137
138  int depen, nnz_in, seed_clms, seed_rows;
139} SparseJacInfos;
140
141typedef struct SparseHessInfos {
142    void *g;
143    void *hr;
144
145    double **Hcomp;
146    double*** Xppp;
147    double*** Yppp;
148    double*** Zppp;
149    double**  Upp;
150 
151    unsigned int **HP;
152
153  int nnz_in, indep, p;
154} SparseHessInfos;
155#endif
156
157typedef struct PersistantTapeInfos { /* survive tape re-usage */
158    int forodec_nax, forodec_dax;
159    double *forodec_y, *forodec_z, **forodec_Z;
160    double **jacSolv_J;
161    double **jacSolv_I;
162    double *jacSolv_xold;
163    int *jacSolv_ri;
164    int *jacSolv_ci;
165    int jacSolv_nax, jacSolv_modeold, jacSolv_cgd;
166
167#ifdef SPARSE
168    /* sparse derivative matrices */
169
170    int inJacSparseUse;
171    int inHessSparseUse;
172
173    /* sparse Jacobian matrices */
174
175    SparseJacInfos sJinfos;
176
177    /* sparse Hessian matrices */
178
179    SparseHessInfos sHinfos;
180#endif
181
182    /* file names */
183
184    char *op_fileName;
185    char *loc_fileName;
186    char *val_fileName;
187    char *tay_fileName;
188
189    int keepTape; /* - remember if tapes shall be written out to disk
190                     - this information can only be given at taping time and
191                       must survive all other actions on the tape */
192} PersistantTapeInfos;
193
194typedef struct TapeInfos {
195    short tapeID;
196    int inUse;
197    uint numInds;
198    uint numDeps;
199    int keepTaylors;             /* == 1 - write taylor stack in taping mode */
200    size_t stats[STAT_SIZE];
201    int traceFlag;
202    char tapingComplete;
203
204    /* operations tape */
205    FILE *op_file;              /* file descriptor */
206    unsigned char *opBuffer;    /* pointer to the current tape buffer */
207    unsigned char *currOp;      /* pointer to the current opcode */
208    unsigned char *lastOpP1;    /* pointer to element following the buffer */
209    size_t numOps_Tape;           /* overall number of opcodes */
210    size_t num_eq_prod;           /* overall number of eq_*_prod for nlf */
211
212    /* values (real) tape */
213    FILE *val_file;
214    double *valBuffer;
215    double *currVal;
216    double *lastValP1;
217    size_t numVals_Tape;
218
219    /* locations tape */
220    FILE *loc_file;
221    locint *locBuffer;
222    locint *currLoc;
223    locint *lastLocP1;
224    size_t numLocs_Tape;
225
226    /* taylor stack tape */
227    FILE *tay_file;
228    revreal *tayBuffer;
229    revreal *currTay;
230    revreal *lastTayP1;
231    size_t numTays_Tape;
232    int nextBufferNumber;                   /* the next Buffer to read back */
233    char lastTayBlockInCore;      /* == 1 if last taylor buffer is still in
234                                            in core (first call of reverse) */
235    double **T_for;                          /* derivative buffer - forward */
236    uint deg_save;                 /* degree to save and saved respectively */
237    uint tay_numInds;             /* # of independents for the taylor stack */
238    uint tay_numDeps;               /* # of dependents for the taylor stack */
239
240    /* checkpointing */
241    locint lowestXLoc_for;     /* location of the first ind. - forward mode */
242    locint lowestYLoc_for;     /* location of the first dep. - forward mode */
243    locint lowestXLoc_rev;     /* location of the first ind. - reverse mode */
244    locint lowestYLoc_rev;     /* location of the first dep. - reverse mode */
245    locint cpIndex;               /* index of the curr. cp function <- tape */
246    int numDirs_rev;     /* # of directions for **v_reverse (checkpointing) */
247
248    /* evaluation forward */
249    double *dp_T0;
250    double **dpp_T;
251
252    /* evaluation reverse */
253    revreal *rp_T;
254    revreal **rpp_T;
255    revreal *rp_A;
256    revreal **rpp_A;
257    unsigned long int **upp_A;
258
259    /* extern diff. fcts */
260    locint ext_diff_fct_index;    /* set by forward and reverse (from tape) */
261
262    PersistantTapeInfos pTapeInfos;
263
264#if defined(__cplusplus)
265    TapeInfos();
266    TapeInfos(short tapeID);
267#endif
268}
269TapeInfos;
270
271typedef struct GlobalTapeVarsCL {
272    double* store;              /* double store for calc. while taping */
273    size_t storeSize;
274    size_t numLives;
275    locint maxLoc;
276
277    locint operationBufferSize; /* Defaults to the value specified in */
278    locint locationBufferSize;  /* usrparms.h. May be overwritten by values */
279    locint valueBufferSize;     /* in a local config file .adolcrc. */
280    locint taylorBufferSize;
281    int maxNumberTaylorBuffers;
282
283    char inParallelRegion;       /* set to 1 if in an OpenMP parallel region */
284    char newTape;               /* signals: at least one tape created (0/1) */
285    char branchSwitchWarning;
286    TapeInfos *currentTapeInfosPtr;
287#ifdef __cplusplus
288    StoreManager *storeManagerPtr;
289    GlobalTapeVarsCL();
290    ~GlobalTapeVarsCL();
291    const GlobalTapeVarsCL& operator=(const GlobalTapeVarsCL&);
292#else
293    void *storeManagerPtr;
294#endif
295}
296GlobalTapeVars;
297
298#if defined(_OPENMP)
299
300extern int isParallel();
301
302#define ADOLC_TAPE_INFOS_BUFFER_DECL *tapeInfosBuffer
303#define ADOLC_TAPE_STACK_DECL *tapeStack
304#define ADOLC_CURRENT_TAPE_INFOS_DECL *currentTapeInfos
305#define ADOLC_CURRENT_TAPE_INFOS_FALLBACK_DECL *currentTapeInfos_fallBack
306#define ADOLC_GLOBAL_TAPE_VARS_DECL *globalTapeVars
307#define ADOLC_EXT_DIFF_FCTS_BUFFER_DECL *ADOLC_extDiffFctsBuffer
308#define ADOLC_CHECKPOINTS_STACK_DECL *ADOLC_checkpointsStack
309
310#define ADOLC_OPENMP_THREAD_NUMBER int ADOLC_threadNumber
311#if defined(ADOLC_THREADSAVE_ERRNO)
312#define ADOLC_OPENMP_GET_THREAD_NUMBER ADOLC_threadNumber = errno
313#define ADOLC_OPENMP_RESTORE_THREAD_NUMBER errno = ADOLC_threadNumber
314#else
315#define ADOLC_OPENMP_GET_THREAD_NUMBER ADOLC_threadNumber = omp_get_thread_num()
316#define ADOLC_OPENMP_RESTORE_THREAD_NUMBER
317#endif
318
319#define ADOLC_TAPE_INFOS_BUFFER tapeInfosBuffer[ADOLC_threadNumber]
320#define ADOLC_TAPE_STACK tapeStack[ADOLC_threadNumber]
321#define ADOLC_CURRENT_TAPE_INFOS currentTapeInfos[ADOLC_threadNumber]
322#define ADOLC_CURRENT_TAPE_INFOS_FALLBACK currentTapeInfos_fallBack[ADOLC_threadNumber]
323#define ADOLC_GLOBAL_TAPE_VARS globalTapeVars[ADOLC_threadNumber]
324#define ADOLC_EXT_DIFF_FCTS_BUFFER ADOLC_extDiffFctsBuffer[ADOLC_threadNumber]
325#define ADOLC_CHECKPOINTS_STACK ADOLC_checkpointsStack[ADOLC_threadNumber]
326#define REVOLVE_NUMBERS revolve_numbers[ADOLC_threadNumber]
327
328#else
329
330#define ADOLC_TAPE_INFOS_BUFFER_DECL tapeInfosBuffer
331#define ADOLC_TAPE_STACK_DECL tapeStack
332#define ADOLC_CURRENT_TAPE_INFOS_DECL currentTapeInfos
333#define ADOLC_CURRENT_TAPE_INFOS_FALLBACK_DECL currentTapeInfos_fallBack
334#define ADOLC_GLOBAL_TAPE_VARS_DECL globalTapeVars
335#define ADOLC_EXT_DIFF_FCTS_BUFFER_DECL ADOLC_extDiffFctsBuffer
336#define ADOLC_CHECKPOINTS_STACK_DECL ADOLC_checkpointsStack
337
338#define ADOLC_OPENMP_THREAD_NUMBER
339#define ADOLC_OPENMP_GET_THREAD_NUMBER
340#define ADOLC_OPENMP_RESTORE_THREAD_NUMBER
341
342#define ADOLC_TAPE_INFOS_BUFFER tapeInfosBuffer
343#define ADOLC_TAPE_STACK tapeStack
344#define ADOLC_CURRENT_TAPE_INFOS currentTapeInfos
345#define ADOLC_CURRENT_TAPE_INFOS_FALLBACK currentTapeInfos_fallBack
346#define ADOLC_GLOBAL_TAPE_VARS globalTapeVars
347#define ADOLC_EXT_DIFF_FCTS_BUFFER ADOLC_extDiffFctsBuffer
348#define ADOLC_CHECKPOINTS_STACK ADOLC_checkpointsStack
349#define REVOLVE_NUMBERS revolve_numbers
350
351#endif /* _OPENMP */
352
353extern TapeInfos ADOLC_CURRENT_TAPE_INFOS_DECL;
354extern TapeInfos ADOLC_CURRENT_TAPE_INFOS_FALLBACK_DECL;
355extern GlobalTapeVars ADOLC_GLOBAL_TAPE_VARS_DECL;
356
357/****************************************************************************/
358/* C Function interfaces                                                    */
359/****************************************************************************/
360
361int initNewTape(short tapeID);
362/* initializes a new tape
363 * - returns 0 on success
364 * - returns 1 in case tapeID is already/still in use */
365
366void openTape(short tapeID, char mode);
367/* opens an existing tape or creates a new one */
368
369void releaseTape();
370/* release the current tape and give control to the previous one
371 * if keepVS is not zero (keep value stack for reverse) => belonging TapeInfos
372 * are kept marked as being in use */
373
374TapeInfos *getTapeInfos(short tapeID);
375/* updates the tape infos for the given ID - a tapeInfos struct is created
376 * and registered if non is found but its state will remain "not in use" */
377
378#ifdef SPARSE
379void setTapeInfoJacSparse(short tapeID, SparseJacInfos sJinfos);
380/* updates the tape infos on sparse Jac for the given ID */
381
382void setTapeInfoHessSparse(short tapeID, SparseHessInfos sHinfos);
383/* updates the tape infos n sparse Hess for the given ID */
384#endif
385
386void take_stock();
387/* record all existing adoubles on the tape
388 * - intended to be used in start_trace only */
389
390locint keep_stock();
391/* record all remaining live variables on the value stack tape
392 * - turns off trace_flag
393 * - intended to be used in stop_trace only */
394
395void updateLocs();
396
397locint next_loc();
398/* returns the next free location in "adouble" memory */
399
400void free_loc(locint loc);
401/* frees the specified location in "adouble" memory */
402
403void taylor_begin(uint bufferSize, double **Tg, int degreeSave);
404/* set up statics for writing taylor data */
405
406void taylor_close(uint buffer);
407/* close taylor file if necessary and refill buffer if possible */
408
409void taylor_back(short tag, int* dep, int* ind, int* degree);
410/* initializes a reverse sweep */
411
412void write_taylor(locint loc, int keep);
413/* writes the block of size depth of taylor coefficients from point loc to
414 * the taylor buffer, if the buffer is filled, then it is written to the
415 * taylor tape */
416
417void write_taylors(locint loc, int keep, int degree, int numDir);
418/* writes the block of size depth of taylor coefficients from point loc to
419 * the taylor buffer, if the buffer is filled, then it is written to the
420 * taylor tape */
421
422#define ADOLC_WRITE_SCAYLOR(X) \
423    {\
424        if (ADOLC_CURRENT_TAPE_INFOS.currTay == ADOLC_CURRENT_TAPE_INFOS.lastTayP1)\
425            put_tay_block(ADOLC_CURRENT_TAPE_INFOS.lastTayP1);\
426        *ADOLC_CURRENT_TAPE_INFOS.currTay = (X);\
427        ++ADOLC_CURRENT_TAPE_INFOS.currTay;\
428    }
429/* writes a single element (x) to the taylor buffer and writes the buffer to
430 * disk if necessary */
431
432void write_scaylors(revreal *x, uint size);
433/* write_scaylors writes # size elements from x to the taylor buffer */
434
435#define ADOLC_OVERWRITE_SCAYLOR(X,Y) \
436    {\
437        *Y = *(ADOLC_CURRENT_TAPE_INFOS.currTay - 1);\
438        *(ADOLC_CURRENT_TAPE_INFOS.currTay - 1) = X;\
439    }
440/* overwrites the last (single) element (x) of the taylor buffer */
441
442#define ADOLC_DELETE_SCAYLOR(X) \
443    {\
444        --ADOLC_CURRENT_TAPE_INFOS.currTay;\
445        *X = *ADOLC_CURRENT_TAPE_INFOS.currTay;\
446    }
447/* deletes the last (single) element (x) of the taylor buffer */
448
449void put_tay_block(revreal *lastValP1);
450/* writes the taylor stack buffer onto hard disk */
451
452#define ADOLC_GET_TAYLOR(X) \
453    {\
454        if (ADOLC_CURRENT_TAPE_INFOS.currTay == ADOLC_CURRENT_TAPE_INFOS.tayBuffer)\
455            get_tay_block_r();\
456        --ADOLC_CURRENT_TAPE_INFOS.currTay;\
457        ADOLC_CURRENT_TAPE_INFOS.rp_T[X] = *ADOLC_CURRENT_TAPE_INFOS.currTay;\
458    }
459/* puts a taylor value from the value stack buffer to the taylor buffer */
460
461void get_taylors(locint loc, int degree);
462/* puts a block of taylor coefficients from the value stack buffer to the
463 * taylor buffer --- Higher Order Scalar */
464
465void get_taylors_p(locint loc, int degree, int numDir);
466/* puts a block of taylor coefficients from the value stack buffer to the
467 * taylor buffer --- Higher Order Vector */
468
469void get_tay_block_r();
470/* gets the next (previous block) of the value stack */
471
472
473
474void initTapeBuffers();
475/* free/allocate memory for buffers, initialize pointers */
476
477void start_trace();
478/* initialization for the taping process -> buffer allocation, sets
479 * files names, and calls appropriate setup routines */
480
481void stop_trace(int flag);
482/* stop Tracing, clean up, and turn off trace_flag */
483
484void close_tape(int flag);
485/* close open tapes, update stats and clean up */
486
487void freeTapeResources(TapeInfos *tapeInfos);
488/* free all resources used by a tape before overwriting the tape */
489
490void read_tape_stats(TapeInfos *tapeInfos);
491/* does the actual reading from the hard disk into the stats buffer */
492
493void init_for_sweep(short tag);
494/* initialize a forward sweep, get stats, open tapes, fill buffers, ... */
495
496void init_rev_sweep(short tag);
497/* initialize a reverse sweep, get stats, open tapes, fill buffers, ... */
498
499void end_sweep();
500/* finish a forward or reverse sweep */
501
502
503
504void fail(int error);
505/* outputs an appropriate error message using DIAG_OUT and exits the running
506 * program */
507
508/* print an error message describing the error number */
509void printError();
510
511char *createFileName(short tapeID, int tapeType);
512/* create file name depending on tape type and number */
513
514
515
516void put_op(unsigned char op);
517/* puts an operation into the operation buffer, ensures that location buffer
518 * and constants buffer are prepared to take the belonging stuff */
519
520void put_op_block(unsigned char *lastOpP1);
521/* writes a block of operations onto hard disk and handles file creation,
522 * removal, ... */
523
524void get_op_block_f();
525/* reads the next operations block into the internal buffer */
526
527void get_op_block_r();
528/* reads the previous block of operations into the internal buffer */
529
530#define ADOLC_PUT_LOCINT(X) \
531    {\
532        *ADOLC_CURRENT_TAPE_INFOS.currLoc = X;\
533        ++ADOLC_CURRENT_TAPE_INFOS.currLoc;\
534    }
535/* puts a single locations into the location buffer, no disk access */
536
537void put_loc_block(locint *lastLocP1);
538/* writes a block of locations onto hard disk and handles file creation,
539 * removal, ... */
540
541void get_loc_block_f();
542/* reads the next block of locations into the internal buffer */
543
544void get_loc_block_r();
545/* reads the previous block of locations into the internal buffer */
546
547#define ADOLC_PUT_VAL(X) \
548    {\
549        *ADOLC_CURRENT_TAPE_INFOS.currVal = X;\
550        ++ADOLC_CURRENT_TAPE_INFOS.currVal;\
551    }
552/* puts a single constant into the location buffer, no disk access */
553
554void put_vals_writeBlock(double *reals, locint numReals);
555/* fill the constants buffer and write it to disk */
556
557void put_vals_notWriteBlock(double *reals, locint numReals);
558/* write some constants to the buffer without disk access */
559
560void put_val_block(double *lastValP1);
561/* writes a block of constants (real) onto hard disk and handles file
562 * creation, removal, ... */
563
564void get_val_block_f();
565/* reads the next block of constants into the internal buffer */
566
567void get_val_block_r();
568/* reads the previous block of constants into the internal buffer */
569
570locint get_val_space(void);
571/* returns the number of free constants in the real tape, ensures that it
572 * is at least 5 */
573
574double *get_val_v_f(locint size);
575/* return a pointer to the first element of a constants vector
576 * -- Forward Mode -- */
577
578double *get_val_v_r(locint size);
579/* return a pointer to the first element of a constants vector
580 * -- Reverse Mode -- */
581
582
583
584/* suspicious function, maybe for vector class - kept for compatibility */
585void reset_val_r();
586
587/* updates */
588int upd_resloc(locint temp, locint lhs);
589
590int upd_resloc_inc_prod(locint temp, locint newlhs, unsigned char newop);
591
592/* special IEEE values */
593double make_nan();
594
595double make_inf();
596
597
598
599#if !defined(ADOLC_HARDDEBUG)
600/*--------------------------------------------------------------------------*/
601/*                                                        MACRO or FUNCTION */
602#define get_op_f() *ADOLC_CURRENT_TAPE_INFOS.currOp++
603#define get_op_r() *--ADOLC_CURRENT_TAPE_INFOS.currOp
604
605#define get_locint_f() *ADOLC_CURRENT_TAPE_INFOS.currLoc++
606#define get_locint_r() *--ADOLC_CURRENT_TAPE_INFOS.currLoc
607
608#define get_val_f() *ADOLC_CURRENT_TAPE_INFOS.currVal++
609#define get_val_r() *--ADOLC_CURRENT_TAPE_INFOS.currVal
610#else /* HARDDEBUG */
611unsigned char get_op_f();
612unsigned char get_op_r();
613
614locint get_locint_f();
615locint get_locint_r();
616
617double get_val_f();
618double get_val_r();
619#endif
620
621/* tries to read a local config file containing, e.g., buffer sizes */
622void readConfigFile();
623
624/* clear the tapeBaseNames that were alocated above in readConfigFile() */
625void clearTapeBaseNames();
626
627/****************************************************************************/
628/* This function sets the flag "newTape" if either a taylor buffer has been */
629/* created or a taping process has been performed. Calling the function is  */
630/* also useful to "convince" the linker of including the cleaner part into  */
631/* the binary when linking statically!                                      */
632/****************************************************************************/
633void markNewTape();
634
635END_C_DECLS
636
637/****************************************************************************/
638/* That's all                                                               */
639/****************************************************************************/
640
641#endif /* ADOLC_TAPING_P_H */
642
643
Note: See TracBrowser for help on using the repository browser.