Actual source code: plog.h
1: /* $Id: plog.h,v 1.1 2000/01/10 03:28:57 knepley Exp $ */
3: /* The class naming scheme procedes as follows:
5: Event:
6: Events are a class which describes certain blocks of executable
7: code. The corresponding instantiations of events are Actions.
9: Class:
10: Classes are the classes representing Petsc structures. The
11: corresponding instantiations are called Objects.
13: StageLog:
14: This type holds information about stages of computation. These
15: are understood to be chunks encompassing several events, or
16: alternatively, as a covering (possibly nested) of the timeline.
18: StageInfo:
19: The information about each stage. This log contains an
20: EventPerfLog and a ClassPerfLog.
22: EventRegLog:
23: This type holds the information generated for each event as
24: it is registered. This information does not change and thus is
25: stored separately from performance information.
27: EventPerfLog:
28: This type holds the performance information logged for each
29: event. Usually this information is logged for only one stage.
31: ClassRegLog:
32: This type holds the information generated for each class as
33: it is registered. This information does not change and thus is
34: stored separately from performance information.
36: ClassPerfLog:
37: This class holds information describing class/object usage during
38: a run. Usually this information is logged for only one stage.
39: */
41: /* The structure for action logging */
42: #define CREATE 0
43: #define DESTROY 1
44: #define ACTIONBEGIN 2
45: #define ACTIONEND 3
46: typedef struct _Action {
47: int action; /* The type of execution */
48: int event; /* The event number */
49: int cookie; /* The event class id */
50: PetscLogDouble time; /* The time of occurence */
51: PetscLogDouble flops; /* The cumlative flops */
52: PetscLogDouble mem; /* The current memory usage */
53: PetscLogDouble maxmem; /* The maximum memory usage */
54: int id1, id2, id3; /* The ids of associated objects */
55: } Action;
57: /* The structure for object logging */
58: typedef struct _Object {
59: PetscObject obj; /* The associated PetscObject */
60: int parent; /* The parent id */
61: PetscLogDouble mem; /* The memory associated with the object */
62: char name[64]; /* The object name */
63: char info[64]; /* The information string */
64: } Object;
66: /* Action and object logging variables */
67: extern Action *actions;
68: extern Object *objects;
69: extern int numActions, maxActions;
70: extern int numObjects, maxObjects;
71: extern int numObjectsDestroyed;
73: /* Global counters */
74: extern PetscLogDouble BaseTime;
76: /* A simple stack */
77: struct _IntStack {
78: int top; /* The top of the stack */
79: int max; /* The maximum stack size */
80: int *stack; /* The storage */
81: };
83: #ifdef PETSC_USE_LOG
85: /* Creation and destruction functions */
86: EXTERN int StageLogCreate(StageLog *);
87: EXTERN int StageLogDestroy(StageLog);
88: /* Registration functions */
89: EXTERN int StageLogRegister(StageLog, const char [], int *);
90: /* Runtime functions */
91: EXTERN int PetscLogGetStageLog(StageLog *);
92: EXTERN int StageLogPush(StageLog, int);
93: EXTERN int StageLogPop(StageLog);
94: EXTERN int StageLogGetCurrent(StageLog, int *);
95: EXTERN int StageLogSetActive(StageLog, int, PetscTruth);
96: EXTERN int StageLogGetActive(StageLog, int, PetscTruth *);
97: EXTERN int StageLogSetVisible(StageLog, int, PetscTruth);
98: EXTERN int StageLogGetVisible(StageLog, int, PetscTruth *);
99: EXTERN int StageLogGetClassRegLog(StageLog, ClassRegLog *);
100: EXTERN int StageLogGetEventRegLog(StageLog, EventRegLog *);
101: EXTERN int StageLogGetClassPerfLog(StageLog, int, ClassPerfLog *);
102: EXTERN int StageLogGetEventPerfLog(StageLog, int, EventPerfLog *);
103: EXTERN int StageLogGetStage(StageLog, const char [], int *);
104: /* Stack Functions */
105: EXTERN int StackCreate(IntStack *);
106: EXTERN int StackDestroy(IntStack);
107: EXTERN int StackPush(IntStack, int);
108: EXTERN int StackPop(IntStack, int *);
109: EXTERN int StackTop(IntStack, int *);
110: EXTERN int StackEmpty(IntStack, PetscTruth *);
112: /* Creation and destruction functions */
113: EXTERN int EventRegLogCreate(EventRegLog *);
114: EXTERN int EventRegLogDestroy(EventRegLog);
115: EXTERN int EventPerfLogCreate(EventPerfLog *);
116: EXTERN int EventPerfLogDestroy(EventPerfLog);
117: /* General functions */
118: EXTERN int EventPerfLogEnsureSize(EventPerfLog, int);
119: EXTERN int EventPerfInfoClear(EventPerfInfo *);
120: /* Registration functions */
121: EXTERN int EventRegLogRegister(EventRegLog, const char [], int, int *);
122: /* Query functions */
123: EXTERN int EventPerfLogSetVisible(EventPerfLog, int, PetscTruth);
124: EXTERN int EventPerfLogGetVisible(EventPerfLog, int, PetscTruth *);
125: EXTERN int EventRegLogGetEvent(EventRegLog, int, int *);
126: /* Activaton functions */
127: EXTERN int EventPerfLogActivate(EventPerfLog, int);
128: EXTERN int EventPerfLogDeactivate(EventPerfLog, int);
129: EXTERN int EventPerfLogActivateClass(EventPerfLog, EventRegLog, int);
130: EXTERN int EventPerfLogDeactivateClass(EventPerfLog, EventRegLog, int);
132: /* Logging functions */
133: EXTERN int PetscLogEventBeginDefault(int, int, PetscObject, PetscObject, PetscObject, PetscObject);
134: EXTERN int PetscLogEventEndDefault(int, int, PetscObject, PetscObject, PetscObject, PetscObject);
135: EXTERN int PetscLogEventBeginComplete(int, int, PetscObject, PetscObject, PetscObject, PetscObject);
136: EXTERN int PetscLogEventEndComplete(int, int, PetscObject, PetscObject, PetscObject, PetscObject);
137: EXTERN int PetscLogEventBeginTrace(int, int, PetscObject, PetscObject, PetscObject, PetscObject);
138: EXTERN int PetscLogEventEndTrace(int, int, PetscObject, PetscObject, PetscObject, PetscObject);
140: /* Creation and destruction functions */
141: EXTERN int ClassRegLogCreate(ClassRegLog *);
142: EXTERN int ClassRegLogDestroy(ClassRegLog);
143: EXTERN int ClassPerfLogCreate(ClassPerfLog *);
144: EXTERN int ClassPerfLogDestroy(ClassPerfLog);
145: EXTERN int ClassRegInfoDestroy(ClassRegInfo *);
146: /* General functions */
147: EXTERN int ClassPerfLogEnsureSize(ClassPerfLog, int);
148: EXTERN int ClassPerfInfoClear(ClassPerfInfo *);
149: /* Registration functions */
150: EXTERN int ClassRegLogRegister(ClassRegLog, const char [], int *);
151: /* Query functions */
152: EXTERN int ClassRegLogGetClass(ClassRegLog, int, int *);
153: /* Logging functions */
154: EXTERN int PetscLogObjCreateDefault(PetscObject);
155: EXTERN int PetscLogObjDestroyDefault(PetscObject);
157: #endif /* PETSC_USE_LOG */