Actual source code: logimpl.h
1: #include <petscsys.h>
2: #include <petsctime.h>
4: /* A simple stack */
5: struct _n_PetscIntStack {
6: int top; /* The top of the stack */
7: int max; /* The maximum stack size */
8: int *stack; /* The storage */
9: };
11: /* The structure for action logging */
12: #define CREATE 0
13: #define DESTROY 1
14: #define ACTIONBEGIN 2
15: #define ACTIONEND 3
16: typedef struct _Action {
17: int action; /* The type of execution */
18: PetscLogEvent event; /* The event number */
19: PetscClassId classid; /* The event class id */
20: PetscLogDouble time; /* The time of occurence */
21: PetscLogDouble flops; /* The cumlative flops */
22: PetscLogDouble mem; /* The current memory usage */
23: PetscLogDouble maxmem; /* The maximum memory usage */
24: int id1, id2, id3; /* The ids of associated objects */
25: } Action;
27: /* The structure for object logging */
28: typedef struct _Object {
29: PetscObject obj; /* The associated PetscObject */
30: int parent; /* The parent id */
31: PetscLogDouble mem; /* The memory associated with the object */
32: char name[64]; /* The object name */
33: char info[64]; /* The information string */
34: } Object;
36: /* Action and object logging variables */
37: extern Action *actions;
38: extern Object *objects;
39: extern PetscBool logActions;
40: extern PetscBool logObjects;
41: extern int numActions, maxActions;
42: extern int numObjects, maxObjects;
43: extern int numObjectsDestroyed;
45: extern FILE *tracefile;
46: extern int tracelevel;
47: extern const char *traceblanks;
48: extern char tracespace[128];
49: extern PetscLogDouble tracetime;
51: #ifdef PETSC_USE_LOG
53: /* Runtime functions */
54: extern PetscErrorCode PetscStageLogGetClassRegLog(PetscStageLog, PetscClassRegLog *);
55: extern PetscErrorCode PetscStageLogGetEventRegLog(PetscStageLog, PetscEventRegLog *);
56: extern PetscErrorCode PetscStageLogGetClassPerfLog(PetscStageLog, int, PetscClassPerfLog *);
59: /* Creation and destruction functions */
60: extern PetscErrorCode EventRegLogCreate(PetscEventRegLog *);
61: extern PetscErrorCode EventRegLogDestroy(PetscEventRegLog);
62: extern PetscErrorCode EventPerfLogCreate(PetscEventPerfLog *);
63: extern PetscErrorCode EventPerfLogDestroy(PetscEventPerfLog);
64: /* General functions */
65: extern PetscErrorCode EventPerfLogEnsureSize(PetscEventPerfLog, int);
66: extern PetscErrorCode EventPerfInfoClear(PetscEventPerfInfo *);
67: extern PetscErrorCode EventPerfInfoCopy(PetscEventPerfInfo *, PetscEventPerfInfo *);
68: /* Registration functions */
69: extern PetscErrorCode EventRegLogRegister(PetscEventRegLog, const char [], PetscClassId, PetscLogEvent *);
70: /* Query functions */
71: extern PetscErrorCode EventPerfLogSetVisible(PetscEventPerfLog, PetscLogEvent, PetscBool );
72: extern PetscErrorCode EventPerfLogGetVisible(PetscEventPerfLog, PetscLogEvent, PetscBool *);
73: /* Activaton functions */
74: extern PetscErrorCode EventPerfLogActivate(PetscEventPerfLog, PetscLogEvent);
75: extern PetscErrorCode EventPerfLogDeactivate(PetscEventPerfLog, PetscLogEvent);
76: extern PetscErrorCode EventPerfLogActivateClass(PetscEventPerfLog, PetscEventRegLog, PetscClassId);
77: extern PetscErrorCode EventPerfLogDeactivateClass(PetscEventPerfLog, PetscEventRegLog, PetscClassId);
79: /* Logging functions */
80: extern PetscErrorCode PetscLogEventBeginDefault(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject);
81: extern PetscErrorCode PetscLogEventEndDefault(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject);
82: extern PetscErrorCode PetscLogEventBeginComplete(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject);
83: extern PetscErrorCode PetscLogEventEndComplete(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject);
84: extern PetscErrorCode PetscLogEventBeginTrace(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject);
85: extern PetscErrorCode PetscLogEventEndTrace(PetscLogEvent, int, PetscObject, PetscObject, PetscObject, PetscObject);
87: /* Creation and destruction functions */
88: extern PetscErrorCode PetscClassRegLogCreate(PetscClassRegLog *);
89: extern PetscErrorCode PetscClassRegLogDestroy(PetscClassRegLog);
90: extern PetscErrorCode ClassPerfLogCreate(PetscClassPerfLog *);
91: extern PetscErrorCode ClassPerfLogDestroy(PetscClassPerfLog);
92: extern PetscErrorCode PetscClassRegInfoDestroy(PetscClassRegInfo *);
93: /* General functions */
94: extern PetscErrorCode ClassPerfLogEnsureSize(PetscClassPerfLog, int);
95: extern PetscErrorCode ClassPerfInfoClear(PetscClassPerfInfo *);
96: /* Registration functions */
97: extern PetscErrorCode PetscClassRegLogRegister(PetscClassRegLog, const char [], PetscClassId);
98: /* Query functions */
99: extern PetscErrorCode PetscClassRegLogGetClass(PetscClassRegLog, PetscClassId, int *);
100: /* Logging functions */
101: extern PetscErrorCode PetscLogObjCreateDefault(PetscObject);
102: extern PetscErrorCode PetscLogObjDestroyDefault(PetscObject);
104: /* Creation and destruction functions */
105: extern PetscErrorCode PetscStageLogCreate(PetscStageLog *);
106: extern PetscErrorCode PetscStageLogDestroy(PetscStageLog);
107: /* Registration functions */
108: extern PetscErrorCode PetscStageLogRegister(PetscStageLog, const char [], int *);
109: /* Runtime functions */
110: extern PetscErrorCode PetscStageLogPush(PetscStageLog, int);
111: extern PetscErrorCode PetscStageLogPop(PetscStageLog);
112: extern PetscErrorCode PetscStageLogSetActive(PetscStageLog, int, PetscBool );
113: extern PetscErrorCode PetscStageLogGetActive(PetscStageLog, int, PetscBool *);
114: extern PetscErrorCode PetscStageLogSetVisible(PetscStageLog, int, PetscBool );
115: extern PetscErrorCode PetscStageLogGetVisible(PetscStageLog, int, PetscBool *);
116: extern PetscErrorCode PetscStageLogGetStage(PetscStageLog, const char [], int *);
117: extern PetscErrorCode PetscStageLogGetClassRegLog(PetscStageLog, PetscClassRegLog *);
118: extern PetscErrorCode PetscStageLogGetEventRegLog(PetscStageLog, PetscEventRegLog *);
119: extern PetscErrorCode PetscStageLogGetClassPerfLog(PetscStageLog, int, PetscClassPerfLog *);
121: extern PetscErrorCode EventRegLogGetEvent(PetscEventRegLog, const char [], PetscLogEvent *);
124: #endif /* PETSC_USE_LOG */