xref: /petsc/include/petsclog.h (revision 88cf3e7d7f7bacac967b9d8e2a3caa4352f411af)
1*88cf3e7dSBarry Smith /* $Id: plog.h,v 1.7 1995/08/03 02:55:25 bsmith Exp bsmith $ */
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
40891de242SLois Curfman McInnes #define MAT_ForwardSolve                        25
41891de242SLois Curfman McInnes #define MAT_BackwardSolve                       26
4297bb86f7SLois Curfman McInnes 
4397bb86f7SLois Curfman McInnes #define VEC_Dot                                 30
4497bb86f7SLois Curfman McInnes #define VEC_Norm                                31
4597bb86f7SLois Curfman McInnes #define VEC_ASum                                32
4697bb86f7SLois Curfman McInnes #define VEC_AMax                                33
4797bb86f7SLois Curfman McInnes #define VEC_Max                                 34
4897bb86f7SLois Curfman McInnes #define VEC_Min                                 35
4997bb86f7SLois Curfman McInnes #define VEC_TDot                                36
5097bb86f7SLois Curfman McInnes #define VEC_Scale                               37
5197bb86f7SLois Curfman McInnes #define VEC_Copy                                38
5297bb86f7SLois Curfman McInnes #define VEC_Set                                 39
5397bb86f7SLois Curfman McInnes #define VEC_AXPY                                40
5497bb86f7SLois Curfman McInnes #define VEC_AYPX                                41
5597bb86f7SLois Curfman McInnes #define VEC_Swap                                42
5697bb86f7SLois Curfman McInnes #define VEC_WAXPY                               43
5797bb86f7SLois Curfman McInnes #define VEC_BeginAssembly                       44
5897bb86f7SLois Curfman McInnes #define VEC_EndAssembly                         45
5997bb86f7SLois Curfman McInnes #define VEC_MTDot                               46
6097bb86f7SLois Curfman McInnes #define VEC_MDot                                47
6197bb86f7SLois Curfman McInnes #define VEC_MAXPY                               48
6297bb86f7SLois Curfman McInnes #define VEC_PMult                               49
6397bb86f7SLois Curfman McInnes 
6497bb86f7SLois Curfman McInnes #define SLES_Solve                              55
6597bb86f7SLois Curfman McInnes #define PC_SetUp                                56
6697bb86f7SLois Curfman McInnes #define PC_Apply                                57
6797bb86f7SLois Curfman McInnes #define SLES_SetUp                              58
6897bb86f7SLois Curfman McInnes 
6997bb86f7SLois Curfman McInnes #define SNES_Solve                              60
7097bb86f7SLois Curfman McInnes #define SNES_LineSearch                         61
7197bb86f7SLois Curfman McInnes #define SNES_FunctionEval                       62
7297bb86f7SLois Curfman McInnes #define SNES_JacobianEval                       63
7365067f4aSLois Curfman McInnes #define SNES_MinimizationFunctionEval           64
7405c709e7SLois Curfman McInnes #define SNES_GradientEval                       65
7505c709e7SLois Curfman McInnes #define SNES_HessianEval                        66
7697bb86f7SLois Curfman McInnes 
7797bb86f7SLois Curfman McInnes /* event numbers 70 to 89 are reserved for applications */
7897bb86f7SLois Curfman McInnes 
7997bb86f7SLois Curfman McInnes #if defined(PETSC_LOG)
8097bb86f7SLois Curfman McInnes 
8197bb86f7SLois Curfman McInnes extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
8297bb86f7SLois Curfman McInnes extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
8397bb86f7SLois Curfman McInnes extern int (*_PHC)(PetscObject);
8497bb86f7SLois Curfman McInnes extern int (*_PHD)(PetscObject);
8597bb86f7SLois Curfman McInnes extern int PLogEventRegister(int,char*);
8697bb86f7SLois Curfman McInnes 
8797bb86f7SLois Curfman McInnes /*M
8897bb86f7SLois Curfman McInnes    PLogEventBegin - Logs the beginning of a user event.  Note that
890eb211faSLois Curfman McInnes    petsc/include/plog.h MUST be included in the user's code to employ
9097bb86f7SLois Curfman McInnes    this function.
9197bb86f7SLois Curfman McInnes 
9297bb86f7SLois Curfman McInnes    Input Parameters:
9397bb86f7SLois Curfman McInnes .  e - integer associated with the event (69 < e < 89)
9497bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
9597bb86f7SLois Curfman McInnes 
9697bb86f7SLois Curfman McInnes    Synopsis:
9797bb86f7SLois Curfman McInnes    PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
9897bb86f7SLois Curfman McInnes                   PetscObject o4)
9997bb86f7SLois Curfman McInnes 
10097bb86f7SLois Curfman McInnes    Notes:
10197bb86f7SLois Curfman McInnes    You should also register each integer event with the command
10297bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
10397bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
10497bb86f7SLois Curfman McInnes 
10597bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
10697bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
10797bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
10897bb86f7SLois Curfman McInnes    to supplement this PETSc information.
10997bb86f7SLois Curfman McInnes 
11097bb86f7SLois Curfman McInnes     Example of Usage:
11197bb86f7SLois Curfman McInnes $     #define USER_EVENT 75
1120eb211faSLois Curfman McInnes $     int user_event_flops;
11397bb86f7SLois Curfman McInnes $     PLogEventRegister(USER_EVENT,"User event");
11497bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
11597bb86f7SLois Curfman McInnes $        [code segment to monitor]
1160eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
11797bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
11897bb86f7SLois Curfman McInnes 
11997bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
12097bb86f7SLois Curfman McInnes 
12197bb86f7SLois Curfman McInnes .keywords: log, event, begin
12297bb86f7SLois Curfman McInnes M*/
12397bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0;\
12497bb86f7SLois Curfman McInnes           { _tacky++;if (_PLB) (*_PLB)(e,_tacky,(PetscObject)o1,\
12597bb86f7SLois Curfman McInnes            (PetscObject)o2,(PetscObject)o3,(PetscObject)o4);};
12697bb86f7SLois Curfman McInnes 
12797bb86f7SLois Curfman McInnes /*M
12897bb86f7SLois Curfman McInnes    PLogEventEnd - Log the end of a user event.  Note that
1290eb211faSLois Curfman McInnes    petsc/include/plog.h MUST be included in the user's code to employ
13097bb86f7SLois Curfman McInnes    this function.
13197bb86f7SLois Curfman McInnes 
13297bb86f7SLois Curfman McInnes    Input Parameters:
13397bb86f7SLois Curfman McInnes .  e - integer associated with the event (69 < e < 89)
13497bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
13597bb86f7SLois Curfman McInnes 
13697bb86f7SLois Curfman McInnes    Synopsis:
13797bb86f7SLois Curfman McInnes    PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
13897bb86f7SLois Curfman McInnes                 PetscObject o4)
13997bb86f7SLois Curfman McInnes 
14097bb86f7SLois Curfman McInnes    Notes:
14197bb86f7SLois Curfman McInnes    You should also register each integer event with the command
14297bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
14397bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
14497bb86f7SLois Curfman McInnes 
14597bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
14697bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
14797bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
14897bb86f7SLois Curfman McInnes    to supplement this PETSc information.
14997bb86f7SLois Curfman McInnes 
15097bb86f7SLois Curfman McInnes     Example of Usage:
15197bb86f7SLois Curfman McInnes $     #define USER_EVENT 75
1520eb211faSLois Curfman McInnes $     int user_event_flops;
15397bb86f7SLois Curfman McInnes $     PLogEventRegister(USER_EVENT,"User event");
15497bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
15597bb86f7SLois Curfman McInnes $        [code segment to monitor]
1560eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
15797bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
15897bb86f7SLois Curfman McInnes 
15997bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
16097bb86f7SLois Curfman McInnes 
16197bb86f7SLois Curfman McInnes .keywords: log, event, end
16297bb86f7SLois Curfman McInnes M*/
16397bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4) \
16497bb86f7SLois Curfman McInnes           { if (_PLE) (*_PLE)(e,_tacky,(PetscObject)o1,(PetscObject)o2,\
16597bb86f7SLois Curfman McInnes                              (PetscObject)o3,(PetscObject)o4);} _tacky--;}
16697bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c) {((PetscObject)(c))->parent = (PetscObject) p;}
16797bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,d) {int _i; for ( _i=0; _i<n; _i++ ) \
16897bb86f7SLois Curfman McInnes           PLogObjectParent(p,(d)[_i]);}
16997bb86f7SLois Curfman McInnes #define PLogObjectCreate(h) {if (_PHC) (*_PHC)((PetscObject)h);}
17097bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h) {if (_PHD) (*_PHD)((PetscObject)h);}
171*88cf3e7dSBarry Smith #define PLogObjectMemory(p,m) {((PetscObject)(p))->mem += (m);}
17297bb86f7SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
17397bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
17497bb86f7SLois Curfman McInnes 
17597bb86f7SLois Curfman McInnes #else
17697bb86f7SLois Curfman McInnes 
17797bb86f7SLois Curfman McInnes #define PLogObjectCreate(h)
17897bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h)
17997bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
18097bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
18197bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c)
18297bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,c)
18397bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
18497bb86f7SLois Curfman McInnes #endif
18597bb86f7SLois Curfman McInnes 
18697bb86f7SLois Curfman McInnes #endif
187