xref: /petsc/include/petsclog.h (revision 97bb86f703153049af9d2ecdb7ac4165d3154956)
1*97bb86f7SLois Curfman McInnes /* $Id: plog.h,v 1.21 1995/07/12 15:32:21 curfman Exp $ */
2*97bb86f7SLois Curfman McInnes 
3*97bb86f7SLois Curfman McInnes /*
4*97bb86f7SLois Curfman McInnes     Defines high level logging in Petsc.
5*97bb86f7SLois Curfman McInnes */
6*97bb86f7SLois Curfman McInnes 
7*97bb86f7SLois Curfman McInnes #if !defined(__PLOG_PACKAGE)
8*97bb86f7SLois Curfman McInnes #define __PLOG_PACKAGE
9*97bb86f7SLois Curfman McInnes #include "petsc.h"
10*97bb86f7SLois Curfman McInnes 
11*97bb86f7SLois Curfman McInnes /*
12*97bb86f7SLois Curfman McInnes     If you add it here, make sure you add to petsc/bin/tkreview!
13*97bb86f7SLois Curfman McInnes   and in src/sys/src/plog.c
14*97bb86f7SLois Curfman McInnes */
15*97bb86f7SLois Curfman McInnes #define MAT_Mult                                0
16*97bb86f7SLois Curfman McInnes #define MAT_BeginAssembly                       1
17*97bb86f7SLois Curfman McInnes #define MAT_EndAssembly                         2
18*97bb86f7SLois Curfman McInnes #define MAT_GetReordering                       3
19*97bb86f7SLois Curfman McInnes #define MAT_MultTrans                           4
20*97bb86f7SLois Curfman McInnes #define MAT_MultAdd                             5
21*97bb86f7SLois Curfman McInnes #define MAT_MultTransAdd                        6
22*97bb86f7SLois Curfman McInnes #define MAT_LUFactor                            7
23*97bb86f7SLois Curfman McInnes #define MAT_CholeskyFactor                      8
24*97bb86f7SLois Curfman McInnes #define MAT_LUFactorSymbolic                    9
25*97bb86f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic                   10
26*97bb86f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic              11
27*97bb86f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic    12
28*97bb86f7SLois Curfman McInnes #define MAT_LUFactorNumeric                     13
29*97bb86f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric               14
30*97bb86f7SLois Curfman McInnes #define MAT_Relax                               15
31*97bb86f7SLois Curfman McInnes #define MAT_Copy                                16
32*97bb86f7SLois Curfman McInnes #define MAT_Convert                             17
33*97bb86f7SLois Curfman McInnes #define MAT_Scale                               18
34*97bb86f7SLois Curfman McInnes #define MAT_ZeroEntries                         19
35*97bb86f7SLois Curfman McInnes #define MAT_Solve                               20
36*97bb86f7SLois Curfman McInnes #define MAT_SolveAdd                            21
37*97bb86f7SLois Curfman McInnes #define MAT_SolveTrans                          22
38*97bb86f7SLois Curfman McInnes #define MAT_SolveTransAdd                       23
39*97bb86f7SLois Curfman McInnes #define MAT_SetValues                           24
40*97bb86f7SLois Curfman McInnes 
41*97bb86f7SLois Curfman McInnes #define VEC_Dot                                 30
42*97bb86f7SLois Curfman McInnes #define VEC_Norm                                31
43*97bb86f7SLois Curfman McInnes #define VEC_ASum                                32
44*97bb86f7SLois Curfman McInnes #define VEC_AMax                                33
45*97bb86f7SLois Curfman McInnes #define VEC_Max                                 34
46*97bb86f7SLois Curfman McInnes #define VEC_Min                                 35
47*97bb86f7SLois Curfman McInnes #define VEC_TDot                                36
48*97bb86f7SLois Curfman McInnes #define VEC_Scale                               37
49*97bb86f7SLois Curfman McInnes #define VEC_Copy                                38
50*97bb86f7SLois Curfman McInnes #define VEC_Set                                 39
51*97bb86f7SLois Curfman McInnes #define VEC_AXPY                                40
52*97bb86f7SLois Curfman McInnes #define VEC_AYPX                                41
53*97bb86f7SLois Curfman McInnes #define VEC_Swap                                42
54*97bb86f7SLois Curfman McInnes #define VEC_WAXPY                               43
55*97bb86f7SLois Curfman McInnes #define VEC_BeginAssembly                       44
56*97bb86f7SLois Curfman McInnes #define VEC_EndAssembly                         45
57*97bb86f7SLois Curfman McInnes #define VEC_MTDot                               46
58*97bb86f7SLois Curfman McInnes #define VEC_MDot                                47
59*97bb86f7SLois Curfman McInnes #define VEC_MAXPY                               48
60*97bb86f7SLois Curfman McInnes #define VEC_PMult                               49
61*97bb86f7SLois Curfman McInnes 
62*97bb86f7SLois Curfman McInnes #define SLES_Solve                              55
63*97bb86f7SLois Curfman McInnes #define PC_SetUp                                56
64*97bb86f7SLois Curfman McInnes #define PC_Apply                                57
65*97bb86f7SLois Curfman McInnes #define SLES_SetUp                              58
66*97bb86f7SLois Curfman McInnes 
67*97bb86f7SLois Curfman McInnes #define SNES_Solve                              60
68*97bb86f7SLois Curfman McInnes #define SNES_LineSearch                         61
69*97bb86f7SLois Curfman McInnes #define SNES_FunctionEval                       62
70*97bb86f7SLois Curfman McInnes #define SNES_JacobianEval                       63
71*97bb86f7SLois Curfman McInnes 
72*97bb86f7SLois Curfman McInnes /* event numbers 70 to 89 are reserved for applications */
73*97bb86f7SLois Curfman McInnes 
74*97bb86f7SLois Curfman McInnes #if defined(PETSC_LOG)
75*97bb86f7SLois Curfman McInnes 
76*97bb86f7SLois Curfman McInnes extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
77*97bb86f7SLois Curfman McInnes extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
78*97bb86f7SLois Curfman McInnes extern int (*_PHC)(PetscObject);
79*97bb86f7SLois Curfman McInnes extern int (*_PHD)(PetscObject);
80*97bb86f7SLois Curfman McInnes extern int PLogEventRegister(int,char*);
81*97bb86f7SLois Curfman McInnes 
82*97bb86f7SLois Curfman McInnes /*M
83*97bb86f7SLois Curfman McInnes    PLogEventBegin - Logs the beginning of a user event.  Note that
84*97bb86f7SLois Curfman McInnes    pinclude/plog.h must be included in the user's code to employ
85*97bb86f7SLois Curfman McInnes    this function.
86*97bb86f7SLois Curfman McInnes 
87*97bb86f7SLois Curfman McInnes    Input Parameters:
88*97bb86f7SLois Curfman McInnes .  e - integer associated with the event (69 < e < 89)
89*97bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
90*97bb86f7SLois Curfman McInnes 
91*97bb86f7SLois Curfman McInnes    Synopsis:
92*97bb86f7SLois Curfman McInnes    PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
93*97bb86f7SLois Curfman McInnes                   PetscObject o4)
94*97bb86f7SLois Curfman McInnes 
95*97bb86f7SLois Curfman McInnes    Notes:
96*97bb86f7SLois Curfman McInnes    You should also register each integer event with the command
97*97bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
98*97bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
99*97bb86f7SLois Curfman McInnes 
100*97bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
101*97bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
102*97bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
103*97bb86f7SLois Curfman McInnes    to supplement this PETSc information.
104*97bb86f7SLois Curfman McInnes 
105*97bb86f7SLois Curfman McInnes     Example of Usage:
106*97bb86f7SLois Curfman McInnes $     #define USER_EVENT 75
107*97bb86f7SLois Curfman McInnes $     PLogEventRegister(USER_EVENT,"User event");
108*97bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
109*97bb86f7SLois Curfman McInnes $     [code segment to monitor]
110*97bb86f7SLois Curfman McInnes $     PLogFlops(user_flops)
111*97bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
112*97bb86f7SLois Curfman McInnes 
113*97bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
114*97bb86f7SLois Curfman McInnes 
115*97bb86f7SLois Curfman McInnes .keywords: log, event, begin
116*97bb86f7SLois Curfman McInnes M*/
117*97bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0;\
118*97bb86f7SLois Curfman McInnes           { _tacky++;if (_PLB) (*_PLB)(e,_tacky,(PetscObject)o1,\
119*97bb86f7SLois Curfman McInnes            (PetscObject)o2,(PetscObject)o3,(PetscObject)o4);};
120*97bb86f7SLois Curfman McInnes 
121*97bb86f7SLois Curfman McInnes /*M
122*97bb86f7SLois Curfman McInnes    PLogEventEnd - Log the end of a user event.  Note that
123*97bb86f7SLois Curfman McInnes    pinclude/plog.h must be included in the user's code to employ
124*97bb86f7SLois Curfman McInnes    this function.
125*97bb86f7SLois Curfman McInnes 
126*97bb86f7SLois Curfman McInnes    Input Parameters:
127*97bb86f7SLois Curfman McInnes .  e - integer associated with the event (69 < e < 89)
128*97bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
129*97bb86f7SLois Curfman McInnes 
130*97bb86f7SLois Curfman McInnes    Synopsis:
131*97bb86f7SLois Curfman McInnes    PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
132*97bb86f7SLois Curfman McInnes                 PetscObject o4)
133*97bb86f7SLois Curfman McInnes 
134*97bb86f7SLois Curfman McInnes    Notes:
135*97bb86f7SLois Curfman McInnes    You should also register each integer event with the command
136*97bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
137*97bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
138*97bb86f7SLois Curfman McInnes 
139*97bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
140*97bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
141*97bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
142*97bb86f7SLois Curfman McInnes    to supplement this PETSc information.
143*97bb86f7SLois Curfman McInnes 
144*97bb86f7SLois Curfman McInnes     Example of Usage:
145*97bb86f7SLois Curfman McInnes $     #define USER_EVENT 75
146*97bb86f7SLois Curfman McInnes $     PLogEventRegister(USER_EVENT,"User event");
147*97bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
148*97bb86f7SLois Curfman McInnes $     [code segment to monitor]
149*97bb86f7SLois Curfman McInnes $     PLogFlops(user_flops)
150*97bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
151*97bb86f7SLois Curfman McInnes 
152*97bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
153*97bb86f7SLois Curfman McInnes 
154*97bb86f7SLois Curfman McInnes .keywords: log, event, end
155*97bb86f7SLois Curfman McInnes M*/
156*97bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4) \
157*97bb86f7SLois Curfman McInnes           { if (_PLE) (*_PLE)(e,_tacky,(PetscObject)o1,(PetscObject)o2,\
158*97bb86f7SLois Curfman McInnes                              (PetscObject)o3,(PetscObject)o4);} _tacky--;}
159*97bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c) {((PetscObject)(c))->parent = (PetscObject) p;}
160*97bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,d) {int _i; for ( _i=0; _i<n; _i++ ) \
161*97bb86f7SLois Curfman McInnes           PLogObjectParent(p,(d)[_i]);}
162*97bb86f7SLois Curfman McInnes #define PLogObjectCreate(h) {if (_PHC) (*_PHC)((PetscObject)h);}
163*97bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h) {if (_PHD) (*_PHD)((PetscObject)h);}
164*97bb86f7SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
165*97bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
166*97bb86f7SLois Curfman McInnes 
167*97bb86f7SLois Curfman McInnes #else
168*97bb86f7SLois Curfman McInnes 
169*97bb86f7SLois Curfman McInnes #define PLogObjectCreate(h)
170*97bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h)
171*97bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
172*97bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
173*97bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c)
174*97bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,c)
175*97bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
176*97bb86f7SLois Curfman McInnes #endif
177*97bb86f7SLois Curfman McInnes 
178*97bb86f7SLois Curfman McInnes #endif
179