xref: /petsc/include/petsclog.h (revision ec181fdcfda41fc770db9c4ca52069c471409a89)
1*ec181fdcSSatish Balay /* $Id: plog.h,v 1.50 1996/02/26 02:57:21 balay Exp balay $ */
297bb86f7SLois Curfman McInnes 
397bb86f7SLois Curfman McInnes /*
44c1da538SLois 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 /*
12c43cb918SSatish Balay   If you add an event here, make sure you add to petsc/bin/petscview.cfg,
13c43cb918SSatish Balay   petsc/bin/petscview  and petsc/src/sys/src/plog.c!!
1497bb86f7SLois Curfman McInnes */
1597bb86f7SLois Curfman McInnes #define MAT_Mult                                0
161ff317f7SLois Curfman McInnes #define MAT_MatrixFreeMult                      1
171ff317f7SLois Curfman McInnes #define MAT_AssemblyBegin                       2
181ff317f7SLois Curfman McInnes #define MAT_AssemblyEnd                         3
191ff317f7SLois Curfman McInnes #define MAT_GetReordering                       4
201ff317f7SLois Curfman McInnes #define MAT_MultTrans                           5
211ff317f7SLois Curfman McInnes #define MAT_MultAdd                             6
221ff317f7SLois Curfman McInnes #define MAT_MultTransAdd                        7
231ff317f7SLois Curfman McInnes #define MAT_LUFactor                            8
241ff317f7SLois Curfman McInnes #define MAT_CholeskyFactor                      9
251ff317f7SLois Curfman McInnes #define MAT_LUFactorSymbolic                    10
261ff317f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic                   11
271ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic              12
281ff317f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic    13
291ff317f7SLois Curfman McInnes #define MAT_LUFactorNumeric                     14
301ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric               15
311ff317f7SLois Curfman McInnes #define MAT_Relax                               16
321ff317f7SLois Curfman McInnes #define MAT_Copy                                17
331ff317f7SLois Curfman McInnes #define MAT_Convert                             18
341ff317f7SLois Curfman McInnes #define MAT_Scale                               19
351ff317f7SLois Curfman McInnes #define MAT_ZeroEntries                         20
361ff317f7SLois Curfman McInnes #define MAT_Solve                               21
371ff317f7SLois Curfman McInnes #define MAT_SolveAdd                            22
381ff317f7SLois Curfman McInnes #define MAT_SolveTrans                          23
391ff317f7SLois Curfman McInnes #define MAT_SolveTransAdd                       24
401ff317f7SLois Curfman McInnes #define MAT_SetValues                           25
411ff317f7SLois Curfman McInnes #define MAT_ForwardSolve                        26
421ff317f7SLois Curfman McInnes #define MAT_BackwardSolve                       27
431ff317f7SLois Curfman McInnes #define MAT_Load                                28
441ff317f7SLois Curfman McInnes #define MAT_View                                29
451ff317f7SLois Curfman McInnes #define MAT_ILUFactor                           30
461ff317f7SLois Curfman McInnes #define MAT_GetSubMatrix                        31
471ff317f7SLois Curfman McInnes #define MAT_GetSubMatrices                      32
481ff317f7SLois Curfman McInnes #define MAT_GetValues                           33
491ff317f7SLois Curfman McInnes #define MAT_IncreaseOverlap                     34
50dd8bebb4SSatish Balay #define MAT_GetRow                              35
5197bb86f7SLois Curfman McInnes 
524dcbc457SBarry Smith #define VEC_Dot                                 40
534dcbc457SBarry Smith #define VEC_Norm                                41
544dcbc457SBarry Smith #define VEC_Max                                 42
554dcbc457SBarry Smith #define VEC_Min                                 43
564dcbc457SBarry Smith #define VEC_TDot                                44
574dcbc457SBarry Smith #define VEC_Scale                               45
584dcbc457SBarry Smith #define VEC_Copy                                46
594dcbc457SBarry Smith #define VEC_Set                                 47
604dcbc457SBarry Smith #define VEC_AXPY                                48
614dcbc457SBarry Smith #define VEC_AYPX                                49
624dcbc457SBarry Smith #define VEC_Swap                                50
634dcbc457SBarry Smith #define VEC_WAXPY                               51
644dcbc457SBarry Smith #define VEC_AssemblyBegin                       52
654dcbc457SBarry Smith #define VEC_AssemblyEnd                         53
664dcbc457SBarry Smith #define VEC_MTDot                               54
674dcbc457SBarry Smith #define VEC_MDot                                55
684dcbc457SBarry Smith #define VEC_MAXPY                               56
694dcbc457SBarry Smith #define VEC_PMult                               57
704dcbc457SBarry Smith #define VEC_SetValues                           58
714dcbc457SBarry Smith #define VEC_Load                                59
724dcbc457SBarry Smith #define VEC_View                                60
734dcbc457SBarry Smith #define VEC_ScatterBegin                        61
744dcbc457SBarry Smith #define VEC_ScatterEnd                          62
75bf5bf444SLois Curfman McInnes #define VEC_SetRandom                           63
7697bb86f7SLois Curfman McInnes 
774dcbc457SBarry Smith #define SLES_Solve                              70
784dcbc457SBarry Smith #define SLES_SetUp                              71
7997bb86f7SLois Curfman McInnes 
804dcbc457SBarry Smith #define KSP_GMRESOrthogonalization              72
814dcbc457SBarry Smith #define KSP_Solve                               73
8297bb86f7SLois Curfman McInnes 
834dcbc457SBarry Smith #define PC_SetUp                                75
844dcbc457SBarry Smith #define PC_Apply                                76
859f0e5d82SLois Curfman McInnes #define PC_ApplySymmLeft                        77
869f0e5d82SLois Curfman McInnes #define PC_ApplySymmRight                       78
874dcbc457SBarry Smith 
884dcbc457SBarry Smith #define SNES_Solve                              80
894dcbc457SBarry Smith #define SNES_LineSearch                         81
904dcbc457SBarry Smith #define SNES_FunctionEval                       82
914dcbc457SBarry Smith #define SNES_JacobianEval                       83
924dcbc457SBarry Smith #define SNES_MinimizationFunctionEval           84
934dcbc457SBarry Smith #define SNES_GradientEval                       85
944dcbc457SBarry Smith #define SNES_HessianEval                        86
954dcbc457SBarry Smith 
96682d7d0cSBarry Smith #define TS_Step                                 90
9741debaddSBarry Smith /*
98b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
99b3b1b5bfSLois Curfman McInnes    for applications.  Make sure that src/sys/src/plog.c defines enough
100b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
10141debaddSBarry Smith */
10235aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1034dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
10497bb86f7SLois Curfman McInnes 
10519b02663SBarry Smith /* Global flop counter */
10619b02663SBarry Smith extern double _TotalFlops;
10719b02663SBarry Smith #if defined(PETSC_LOG)
10819b02663SBarry Smith #define PLogFlops(n) {_TotalFlops += n;}
10919b02663SBarry Smith #else
11019b02663SBarry Smith #define PLogFlops(n)
11119b02663SBarry Smith #endif
11219b02663SBarry Smith 
1136daaf66cSBarry Smith 
11419b02663SBarry Smith /*M
11519b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
1166daaf66cSBarry Smith                You must include "plog.h" to use this function.
11719b02663SBarry Smith 
11819b02663SBarry Smith    Input Parameter:
11919b02663SBarry Smith .  f - flop counter
12019b02663SBarry Smith 
12119b02663SBarry Smith    Synopsis:
12219b02663SBarry Smith    PLogFlops(int f)
12319b02663SBarry Smith 
12419b02663SBarry Smith    Notes:
12519b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
12619b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
12719b02663SBarry Smith    application code.
12819b02663SBarry Smith 
12919b02663SBarry Smith    PETSc automatically logs library events if the code has been
13019b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
13119b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
13219b02663SBarry Smith    intended for logging user flops to supplement this PETSc
13319b02663SBarry Smith    information.
13419b02663SBarry Smith 
13519b02663SBarry Smith     Example of Usage:
13635aab85fSBarry Smith $     int USER_EVENT;
13735aab85fSBarry Smith $     PLogEventRegister(&USER_EVENT,"User event");
13819b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
13919b02663SBarry Smith $     [code segment to monitor]
14019b02663SBarry Smith $     PLogFlops(user_flops)
14119b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
14219b02663SBarry Smith 
14319b02663SBarry Smith .seealso:  PLogEventRegister(), PLogEventBegin(), PLogEventEnd()
14419b02663SBarry Smith 
14519b02663SBarry Smith .keywords:  Petsc, log, flops, floating point operations
14619b02663SBarry Smith M*/
14719b02663SBarry Smith 
14819b02663SBarry Smith extern int PLogPrint(MPI_Comm,FILE *);
14919b02663SBarry Smith extern int PLogBegin();
15019b02663SBarry Smith extern int PLogAllBegin();
151*ec181fdcSSatish Balay extern int PLogDump(char*);
152*ec181fdcSSatish Balay 
153*ec181fdcSSatish Balay #if defined (HAVE_MPE)
1540601ba50SSatish Balay extern int PLogUpshotBegin();
1550601ba50SSatish Balay extern int PLogAllUpshotBegin();
156*ec181fdcSSatish Balay #endif
15719b02663SBarry Smith 
15897bb86f7SLois Curfman McInnes #if defined(PETSC_LOG)
15997bb86f7SLois Curfman McInnes 
16097bb86f7SLois Curfman McInnes extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
16197bb86f7SLois Curfman McInnes extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
16297bb86f7SLois Curfman McInnes extern int (*_PHC)(PetscObject);
16397bb86f7SLois Curfman McInnes extern int (*_PHD)(PetscObject);
16435aab85fSBarry Smith extern int PLogEventRegister(int*,char*);
16597bb86f7SLois Curfman McInnes 
16697bb86f7SLois Curfman McInnes /*M
16719b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
16897bb86f7SLois Curfman McInnes 
16997bb86f7SLois Curfman McInnes    Input Parameters:
17035aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
17197bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
17297bb86f7SLois Curfman McInnes 
17397bb86f7SLois Curfman McInnes    Synopsis:
17497bb86f7SLois Curfman McInnes    PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
17597bb86f7SLois Curfman McInnes                   PetscObject o4)
17697bb86f7SLois Curfman McInnes 
17797bb86f7SLois Curfman McInnes    Notes:
17897bb86f7SLois Curfman McInnes    You should also register each integer event with the command
17997bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
18097bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
18197bb86f7SLois Curfman McInnes 
18297bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
18397bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
18497bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
18597bb86f7SLois Curfman McInnes    to supplement this PETSc information.
18697bb86f7SLois Curfman McInnes 
18797bb86f7SLois Curfman McInnes     Example of Usage:
18835aab85fSBarry Smith $     int USER_EVENT;
1890eb211faSLois Curfman McInnes $     int user_event_flops;
19035aab85fSBarry Smith $     PLogEventRegister(&USER_EVENT,"User event");
19135aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
19297bb86f7SLois Curfman McInnes $        [code segment to monitor]
1930eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
19435aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
19597bb86f7SLois Curfman McInnes 
19697bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
19797bb86f7SLois Curfman McInnes 
19897bb86f7SLois Curfman McInnes .keywords: log, event, begin
19997bb86f7SLois Curfman McInnes M*/
20097bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0;\
20197bb86f7SLois Curfman McInnes           { _tacky++;if (_PLB) (*_PLB)(e,_tacky,(PetscObject)o1,\
20297bb86f7SLois Curfman McInnes            (PetscObject)o2,(PetscObject)o3,(PetscObject)o4);};
20397bb86f7SLois Curfman McInnes 
20497bb86f7SLois Curfman McInnes /*M
20519b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
20697bb86f7SLois Curfman McInnes 
20797bb86f7SLois Curfman McInnes    Input Parameters:
20835aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
20997bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
21097bb86f7SLois Curfman McInnes 
21197bb86f7SLois Curfman McInnes    Synopsis:
21297bb86f7SLois Curfman McInnes    PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
21397bb86f7SLois Curfman McInnes                 PetscObject o4)
21497bb86f7SLois Curfman McInnes 
21597bb86f7SLois Curfman McInnes    Notes:
21697bb86f7SLois Curfman McInnes    You should also register each integer event with the command
21797bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
21897bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
21997bb86f7SLois Curfman McInnes 
22097bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
22197bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
22297bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
22397bb86f7SLois Curfman McInnes    to supplement this PETSc information.
22497bb86f7SLois Curfman McInnes 
22597bb86f7SLois Curfman McInnes     Example of Usage:
22635aab85fSBarry Smith $     int USER_EVENT;
2270eb211faSLois Curfman McInnes $     int user_event_flops;
22835aab85fSBarry Smith $     PLogEventRegister(&USER_EVENT,"User event");
22997bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
23097bb86f7SLois Curfman McInnes $        [code segment to monitor]
2310eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
23297bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
23397bb86f7SLois Curfman McInnes 
23497bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
23597bb86f7SLois Curfman McInnes 
23697bb86f7SLois Curfman McInnes .keywords: log, event, end
23797bb86f7SLois Curfman McInnes M*/
238416022c9SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {if (_PLE) (*_PLE)(e,_tacky,(PetscObject)o1,\
239416022c9SBarry Smith                                     (PetscObject)o2,(PetscObject)o3,(PetscObject)o4);}\
240416022c9SBarry Smith                                     _tacky--;}
241464493b3SBarry Smith #define PLogObjectParent(p,c)       {PETSCVALIDHEADER((PetscObject)c); \
242464493b3SBarry Smith                                      PETSCVALIDHEADER((PetscObject)p);\
243bfce26a3SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
24497bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
24597bb86f7SLois Curfman McInnes                                     PLogObjectParent(p,(d)[_i]);}
24697bb86f7SLois Curfman McInnes #define PLogObjectCreate(h)         {if (_PHC) (*_PHC)((PetscObject)h);}
24797bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h)        {if (_PHD) (*_PHD)((PetscObject)h);}
2486ac32965SLois Curfman McInnes #define PLogObjectMemory(p,m)       {PETSCVALIDHEADER((PetscObject)p);\
2496ac32965SLois Curfman McInnes                                     ((PetscObject)(p))->mem += (m);}
25097bb86f7SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
25197bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
252c5d91301SLois Curfman McInnes extern int PLogDestroy();
253ba7af9b1SBarry Smith extern int PLogStagePush(int);
254ba7af9b1SBarry Smith extern int PLogStagePop();
2554b0e389bSBarry Smith extern int PLogStageRegister(int,char*);
25697bb86f7SLois Curfman McInnes 
25797bb86f7SLois Curfman McInnes #else
25897bb86f7SLois Curfman McInnes 
25997bb86f7SLois Curfman McInnes #define PLogObjectCreate(h)
26097bb86f7SLois Curfman McInnes #define PLogObjectDestroy(h)
261a311837eSLois Curfman McInnes #define PLogObjectMemory(p,m)
26297bb86f7SLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
26397bb86f7SLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
26497bb86f7SLois Curfman McInnes #define PLogObjectParent(p,c)
26597bb86f7SLois Curfman McInnes #define PLogObjectParents(p,n,c)
26697bb86f7SLois Curfman McInnes extern int PLogInfo(PetscObject,char*,...);
2678b23fa05SBarry Smith extern int PLogDestroy();
268ba7af9b1SBarry Smith extern int PLogStagePush(int);
269ba7af9b1SBarry Smith extern int PLogStagePop();
2704b0e389bSBarry Smith extern int PLogStageRegister(int,char*);
27197bb86f7SLois Curfman McInnes #endif
27297bb86f7SLois Curfman McInnes 
27397bb86f7SLois Curfman McInnes #endif
27441debaddSBarry Smith 
275