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 */