xref: /petsc/include/petsclog.h (revision 0eb211faa33acad878d54581ffd53fe6818fb7ee)
1*0eb211faSLois Curfman McInnes /* $Id: plog.h,v 1.1 1995/07/12 16:28:35 curfman Exp curfman $ */
297bb86f7SLois Curfman McInnes 
397bb86f7SLois Curfman McInnes /*
497bb86f7SLois Curfman McInnes     Defines high level logging in Petsc.
597bb86f7SLois Curfman McInnes */
697bb86f7SLois Curfman McInnes 
797bb86f7SLois Curfman McInnes #if !defined(__PLOG_PACKAGE)
897bb86f7SLois Curfman McInnes #define __PLOG_PACKAGE
997bb86f7SLois Curfman McInnes #include "petsc.h"
1097bb86f7SLois Curfman McInnes 
1197bb86f7SLois Curfman McInnes /*
1297bb86f7SLois Curfman McInnes     If you add it here, make sure you add to petsc/bin/tkreview!
1397bb86f7SLois Curfman McInnes   and in src/sys/src/plog.c
1497bb86f7SLois Curfman McInnes */
1597bb86f7SLois Curfman McInnes #define MAT_Mult                                0
1697bb86f7SLois Curfman McInnes #define MAT_BeginAssembly                       1
1797bb86f7SLois Curfman McInnes #define MAT_EndAssembly                         2
1897bb86f7SLois Curfman McInnes #define MAT_GetReordering                       3
1997bb86f7SLois Curfman McInnes #define MAT_MultTrans                           4
2097bb86f7SLois Curfman McInnes #define MAT_MultAdd                             5
2197bb86f7SLois Curfman McInnes #define MAT_MultTransAdd                        6
2297bb86f7SLois Curfman McInnes #define MAT_LUFactor                            7
2397bb86f7SLois Curfman McInnes #define MAT_CholeskyFactor                      8
2497bb86f7SLois Curfman McInnes #define MAT_LUFactorSymbolic                    9
2597bb86f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic                   10
2697bb86f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic              11
2797bb86f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic    12
2897bb86f7SLois Curfman McInnes #define MAT_LUFactorNumeric                     13
2997bb86f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric               14
3097bb86f7SLois Curfman McInnes #define MAT_Relax                               15
3197bb86f7SLois Curfman McInnes #define MAT_Copy                                16
3297bb86f7SLois Curfman McInnes #define MAT_Convert                             17
3397bb86f7SLois Curfman McInnes #define MAT_Scale                               18
3497bb86f7SLois Curfman McInnes #define MAT_ZeroEntries                         19
3597bb86f7SLois Curfman McInnes #define MAT_Solve                               20
3697bb86f7SLois Curfman McInnes #define MAT_SolveAdd                            21
3797bb86f7SLois Curfman McInnes #define MAT_SolveTrans                          22
3897bb86f7SLois Curfman McInnes #define MAT_SolveTransAdd                       23
3997bb86f7SLois Curfman McInnes #define MAT_SetValues                           24
4097bb86f7SLois Curfman McInnes 
4197bb86f7SLois Curfman McInnes #define VEC_Dot                                 30
4297bb86f7SLois Curfman McInnes #define VEC_Norm                                31
4397bb86f7SLois Curfman McInnes #define VEC_ASum                                32
4497bb86f7SLois Curfman McInnes #define VEC_AMax                                33
4597bb86f7SLois Curfman McInnes #define VEC_Max                                 34
4697bb86f7SLois Curfman McInnes #define VEC_Min                                 35
4797bb86f7SLois Curfman McInnes #define VEC_TDot                                36
4897bb86f7SLois Curfman McInnes #define VEC_Scale                               37
4997bb86f7SLois Curfman McInnes #define VEC_Copy                                38
5097bb86f7SLois Curfman McInnes #define VEC_Set                                 39
5197bb86f7SLois Curfman McInnes #define VEC_AXPY                                40
5297bb86f7SLois Curfman McInnes #define VEC_AYPX                                41
5397bb86f7SLois Curfman McInnes #define VEC_Swap                                42
5497bb86f7SLois Curfman McInnes #define VEC_WAXPY                               43
5597bb86f7SLois Curfman McInnes #define VEC_BeginAssembly                       44
5697bb86f7SLois Curfman McInnes #define VEC_EndAssembly                         45
5797bb86f7SLois Curfman McInnes #define VEC_MTDot                               46
5897bb86f7SLois Curfman McInnes #define VEC_MDot                                47
5997bb86f7SLois Curfman McInnes #define VEC_MAXPY                               48
6097bb86f7SLois Curfman McInnes #define VEC_PMult                               49
6197bb86f7SLois Curfman McInnes 
6297bb86f7SLois Curfman McInnes #define SLES_Solve                              55
6397bb86f7SLois Curfman McInnes #define PC_SetUp                                56
6497bb86f7SLois Curfman McInnes #define PC_Apply                                57
6597bb86f7SLois Curfman McInnes #define SLES_SetUp                              58
6697bb86f7SLois Curfman McInnes 
6797bb86f7SLois Curfman McInnes #define SNES_Solve                              60
6897bb86f7SLois Curfman McInnes #define SNES_LineSearch                         61
6997bb86f7SLois Curfman McInnes #define SNES_FunctionEval                       62
7097bb86f7SLois Curfman McInnes #define SNES_JacobianEval                       63
7197bb86f7SLois Curfman McInnes 
7297bb86f7SLois Curfman McInnes /* event numbers 70 to 89 are reserved for applications */
7397bb86f7SLois Curfman McInnes 
7497bb86f7SLois Curfman McInnes #if defined(PETSC_LOG)
7597bb86f7SLois Curfman McInnes 
7697bb86f7SLois Curfman McInnes extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
7797bb86f7SLois Curfman McInnes extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
7897bb86f7SLois Curfman McInnes extern int (*_PHC)(PetscObject);
7997bb86f7SLois Curfman McInnes extern int (*_PHD)(PetscObject);
8097bb86f7SLois Curfman McInnes extern int PLogEventRegister(int,char*);
8197bb86f7SLois Curfman McInnes 
8297bb86f7SLois Curfman McInnes /*M
8397bb86f7SLois Curfman McInnes    PLogEventBegin - Logs the beginning of a user event.  Note that
84*0eb211faSLois Curfman McInnes    petsc/include/plog.h MUST be included in the user's code to employ
8597bb86f7SLois Curfman McInnes    this function.
8697bb86f7SLois Curfman McInnes 
8797bb86f7SLois Curfman McInnes    Input Parameters:
8897bb86f7SLois Curfman McInnes .  e - integer associated with the event (69 < e < 89)
8997bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
9097bb86f7SLois Curfman McInnes 
9197bb86f7SLois Curfman McInnes    Synopsis:
9297bb86f7SLois Curfman McInnes    PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
9397bb86f7SLois Curfman McInnes                   PetscObject o4)
9497bb86f7SLois Curfman McInnes 
9597bb86f7SLois Curfman McInnes    Notes:
9697bb86f7SLois Curfman McInnes    You should also register each integer event with the command
9797bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
9897bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
9997bb86f7SLois Curfman McInnes 
10097bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
10197bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
10297bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
10397bb86f7SLois Curfman McInnes    to supplement this PETSc information.
10497bb86f7SLois Curfman McInnes 
10597bb86f7SLois Curfman McInnes     Example of Usage:
10697bb86f7SLois Curfman McInnes $     #define USER_EVENT 75
107*0eb211faSLois Curfman McInnes $     int user_event_flops;
10897bb86f7SLois Curfman McInnes $     PLogEventRegister(USER_EVENT,"User event");
10997bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
11097bb86f7SLois Curfman McInnes $        [code segment to monitor]
111*0eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
11297bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
11397bb86f7SLois Curfman McInnes 
11497bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
11597bb86f7SLois Curfman McInnes 
11697bb86f7SLois Curfman McInnes .keywords: log, event, begin
11797bb86f7SLois Curfman McInnes M*/
11897bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0;\
11997bb86f7SLois Curfman McInnes           { _tacky++;if (_PLB) (*_PLB)(e,_tacky,(PetscObject)o1,\
12097bb86f7SLois Curfman McInnes            (PetscObject)o2,(PetscObject)o3,(PetscObject)o4);};
12197bb86f7SLois Curfman McInnes 
12297bb86f7SLois Curfman McInnes /*M
12397bb86f7SLois Curfman McInnes    PLogEventEnd - Log the end of a user event.  Note that
124*0eb211faSLois Curfman McInnes    petsc/include/plog.h MUST be included in the user's code to employ
12597bb86f7SLois Curfman McInnes    this function.
12697bb86f7SLois Curfman McInnes 
12797bb86f7SLois Curfman McInnes    Input Parameters:
12897bb86f7SLois Curfman McInnes .  e - integer associated with the event (69 < e < 89)
12997bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
13097bb86f7SLois Curfman McInnes 
13197bb86f7SLois Curfman McInnes    Synopsis:
13297bb86f7SLois Curfman McInnes    PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
13397bb86f7SLois Curfman McInnes                 PetscObject o4)
13497bb86f7SLois Curfman McInnes 
13597bb86f7SLois Curfman McInnes    Notes:
13697bb86f7SLois Curfman McInnes    You should also register each integer event with the command
13797bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
13897bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
13997bb86f7SLois Curfman McInnes 
14097bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
14197bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
14297bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
14397bb86f7SLois Curfman McInnes    to supplement this PETSc information.
14497bb86f7SLois Curfman McInnes 
14597bb86f7SLois Curfman McInnes     Example of Usage:
14697bb86f7SLois Curfman McInnes $     #define USER_EVENT 75
147*0eb211faSLois Curfman McInnes $     int user_event_flops;
14897bb86f7SLois Curfman McInnes $     PLogEventRegister(USER_EVENT,"User event");
14997bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
15097bb86f7SLois Curfman McInnes $        [code segment to monitor]
151*0eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
15297bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
15397bb86f7SLois Curfman McInnes 
15497bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
15597bb86f7SLois Curfman McInnes 
15697bb86f7SLois Curfman McInnes .keywords: log, event, end
15797bb86f7SLois Curfman McInnes M*/
15897bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4) \
15997bb86f7SLois Curfman McInnes           { if (_PLE) (*_PLE)(e,_tacky,(PetscObject)o1,(PetscObject)o2,\
16097bb86f7SLois Curfman McInnes                              (PetscObject)o3,(PetscObject)o4);} _tacky--;}
16197bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c) {((PetscObject)(c))->parent = (PetscObject) p;}
16297bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,d) {int _i; for ( _i=0; _i<n; _i++ ) \
16397bb86f7SLois Curfman McInnes           PLogObjectParent(p,(d)[_i]);}
16497bb86f7SLois Curfman McInnes #define PLogObjectCreate(h) {if (_PHC) (*_PHC)((PetscObject)h);}
16597bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h) {if (_PHD) (*_PHD)((PetscObject)h);}
16697bb86f7SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
16797bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
16897bb86f7SLois Curfman McInnes 
16997bb86f7SLois Curfman McInnes #else
17097bb86f7SLois Curfman McInnes 
17197bb86f7SLois Curfman McInnes #define PLogObjectCreate(h)
17297bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h)
17397bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
17497bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
17597bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c)
17697bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,c)
17797bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
17897bb86f7SLois Curfman McInnes #endif
17997bb86f7SLois Curfman McInnes 
18097bb86f7SLois Curfman McInnes #endif
181