xref: /petsc/include/petsclog.h (revision 1bffabb283b211d4c74def52ef5a5b0c3b233280)
1*1bffabb2SLois Curfman McInnes /* $Id: plog.h,v 1.83 1996/08/17 14:38:45 bsmith Exp curfman $ */
297bb86f7SLois Curfman McInnes 
397bb86f7SLois Curfman McInnes /*
47588ac45SBarry Smith     Defines profile/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 /*
127588ac45SBarry Smith   Lists all PETSc events that are logged/profiled.
137588ac45SBarry Smith 
14a2ce50c7SBarry Smith   If you add an event here, make sure you add it to
15a2ce50c7SBarry Smith   petsc/bin/petscview.cfg,
16a2ce50c7SBarry Smith   petsc/bin/petscview,
17a2ce50c7SBarry Smith   petsc/src/plog/src/plog.c,
18a2ce50c7SBarry Smith   petsc/src/plog/src/plogmpe.c and
19a2ce50c7SBarry Smith   petsc/include/FINCLUDE/plog.h!!!
2097bb86f7SLois Curfman McInnes */
2197bb86f7SLois Curfman McInnes #define MAT_Mult                                0
221ff317f7SLois Curfman McInnes #define MAT_MatrixFreeMult                      1
231ff317f7SLois Curfman McInnes #define MAT_AssemblyBegin                       2
241ff317f7SLois Curfman McInnes #define MAT_AssemblyEnd                         3
251ff317f7SLois Curfman McInnes #define MAT_GetReordering                       4
261ff317f7SLois Curfman McInnes #define MAT_MultTrans                           5
271ff317f7SLois Curfman McInnes #define MAT_MultAdd                             6
281ff317f7SLois Curfman McInnes #define MAT_MultTransAdd                        7
291ff317f7SLois Curfman McInnes #define MAT_LUFactor                            8
301ff317f7SLois Curfman McInnes #define MAT_CholeskyFactor                      9
311ff317f7SLois Curfman McInnes #define MAT_LUFactorSymbolic                    10
321ff317f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic                   11
331ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic              12
341ff317f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic    13
351ff317f7SLois Curfman McInnes #define MAT_LUFactorNumeric                     14
361ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric               15
371ff317f7SLois Curfman McInnes #define MAT_Relax                               16
381ff317f7SLois Curfman McInnes #define MAT_Copy                                17
391ff317f7SLois Curfman McInnes #define MAT_Convert                             18
401ff317f7SLois Curfman McInnes #define MAT_Scale                               19
411ff317f7SLois Curfman McInnes #define MAT_ZeroEntries                         20
421ff317f7SLois Curfman McInnes #define MAT_Solve                               21
431ff317f7SLois Curfman McInnes #define MAT_SolveAdd                            22
441ff317f7SLois Curfman McInnes #define MAT_SolveTrans                          23
451ff317f7SLois Curfman McInnes #define MAT_SolveTransAdd                       24
461ff317f7SLois Curfman McInnes #define MAT_SetValues                           25
471ff317f7SLois Curfman McInnes #define MAT_ForwardSolve                        26
481ff317f7SLois Curfman McInnes #define MAT_BackwardSolve                       27
491ff317f7SLois Curfman McInnes #define MAT_Load                                28
501ff317f7SLois Curfman McInnes #define MAT_View                                29
511ff317f7SLois Curfman McInnes #define MAT_ILUFactor                           30
52905e6a2fSBarry Smith 
531ff317f7SLois Curfman McInnes #define MAT_GetSubMatrices                      32
541ff317f7SLois Curfman McInnes #define MAT_GetValues                           33
551ff317f7SLois Curfman McInnes #define MAT_IncreaseOverlap                     34
56dd8bebb4SSatish Balay #define MAT_GetRow                              35
5797bb86f7SLois Curfman McInnes 
584dcbc457SBarry Smith #define VEC_Dot                                 40
594dcbc457SBarry Smith #define VEC_Norm                                41
604dcbc457SBarry Smith #define VEC_Max                                 42
614dcbc457SBarry Smith #define VEC_Min                                 43
624dcbc457SBarry Smith #define VEC_TDot                                44
634dcbc457SBarry Smith #define VEC_Scale                               45
644dcbc457SBarry Smith #define VEC_Copy                                46
654dcbc457SBarry Smith #define VEC_Set                                 47
664dcbc457SBarry Smith #define VEC_AXPY                                48
674dcbc457SBarry Smith #define VEC_AYPX                                49
684dcbc457SBarry Smith #define VEC_Swap                                50
694dcbc457SBarry Smith #define VEC_WAXPY                               51
704dcbc457SBarry Smith #define VEC_AssemblyBegin                       52
714dcbc457SBarry Smith #define VEC_AssemblyEnd                         53
724dcbc457SBarry Smith #define VEC_MTDot                               54
734dcbc457SBarry Smith #define VEC_MDot                                55
744dcbc457SBarry Smith #define VEC_MAXPY                               56
754dcbc457SBarry Smith #define VEC_PMult                               57
764dcbc457SBarry Smith #define VEC_SetValues                           58
774dcbc457SBarry Smith #define VEC_Load                                59
784dcbc457SBarry Smith #define VEC_View                                60
794dcbc457SBarry Smith #define VEC_ScatterBegin                        61
804dcbc457SBarry Smith #define VEC_ScatterEnd                          62
81bf5bf444SLois Curfman McInnes #define VEC_SetRandom                           63
8297bb86f7SLois Curfman McInnes 
834dcbc457SBarry Smith #define SLES_Solve                              70
844dcbc457SBarry Smith #define SLES_SetUp                              71
8597bb86f7SLois Curfman McInnes 
864dcbc457SBarry Smith #define KSP_GMRESOrthogonalization              72
8797bb86f7SLois Curfman McInnes 
88*1bffabb2SLois Curfman McInnes #define PC_ModifySubMatrices                    74
894dcbc457SBarry Smith #define PC_SetUp                                75
9036058207SBarry Smith #define PC_SetUpOnBlocks                        76
9132284f49SSatish Balay #define PC_Apply                                77
92614700edSBarry Smith #define PC_ApplySymmetricLeft                   78
93614700edSBarry Smith #define PC_ApplySymmetricRight                  79
944dcbc457SBarry Smith 
954dcbc457SBarry Smith #define SNES_Solve                              80
964dcbc457SBarry Smith #define SNES_LineSearch                         81
974dcbc457SBarry Smith #define SNES_FunctionEval                       82
984dcbc457SBarry Smith #define SNES_JacobianEval                       83
994dcbc457SBarry Smith #define SNES_MinimizationFunctionEval           84
1004dcbc457SBarry Smith #define SNES_GradientEval                       85
1014dcbc457SBarry Smith #define SNES_HessianEval                        86
1024dcbc457SBarry Smith 
103682d7d0cSBarry Smith #define TS_Step                                 90
10472936c9dSBarry Smith 
10572936c9dSBarry Smith #define Petsc_Barrier                           100
10655206aebSLois Curfman McInnes 
10755206aebSLois Curfman McInnes #define DFVec_RefineVector                      110
10855206aebSLois Curfman McInnes #define DFVec_AssembleFullVector                111
10955206aebSLois Curfman McInnes #define DFVec_GetComponentVectors               112
11055206aebSLois Curfman McInnes #define DFVec_DrawContours                      113
11155206aebSLois Curfman McInnes 
11241debaddSBarry Smith /*
113b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
11477c4ece6SBarry Smith    for applications.  Make sure that src/plog/src/plog.c defines enough
115b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
11641debaddSBarry Smith */
11735aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1184dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
11997bb86f7SLois Curfman McInnes 
12019b02663SBarry Smith /* Global flop counter */
12119b02663SBarry Smith extern double _TotalFlops;
12219b02663SBarry Smith 
123edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */
12494a424c1SBarry Smith extern int PLogInfo(void*,char*,...);
125cfd8f56bSLois Curfman McInnes extern int PLogInfoDeactivateClass(int);
126614700edSBarry Smith extern int PLogInfoActivateClass(int);
127614700edSBarry Smith 
128614700edSBarry Smith #if defined(PETSC_LOG)  /* --------------------------------------------*/
129614700edSBarry Smith 
130a2ce50c7SBarry Smith #define PLogFlops(n) {_TotalFlops += (n);}
13177c4ece6SBarry Smith 
13277c4ece6SBarry Smith #if defined (HAVE_MPE)
13377c4ece6SBarry Smith #include "mpe.h"
134614700edSBarry Smith #define MPEBEGIN    1000
13577c4ece6SBarry Smith extern int PLogMPEBegin();
13677c4ece6SBarry Smith extern int PLogMPEDump(char *);
137614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[];
138614700edSBarry Smith extern int PLogEventMPEActivate(int);
139905e6a2fSBarry Smith extern int PLogEventMPEDeactivate(int);
140614700edSBarry Smith #else
141614700edSBarry Smith #define PLogEventMPEActivate(a)
142905e6a2fSBarry Smith #define PLogEventMPEDeactivate(a)
14377c4ece6SBarry Smith #endif
14477c4ece6SBarry Smith 
145614700edSBarry Smith extern int PLogEventActivate(int);
146905e6a2fSBarry Smith extern int PLogEventDeactivate(int);
147614700edSBarry Smith 
148614700edSBarry Smith extern int PLogEventActivateClass();
149905e6a2fSBarry Smith extern int PLogEventDeactivateClass();
150614700edSBarry Smith 
151614700edSBarry Smith extern int PLogEventFlags[];
15277c4ece6SBarry Smith extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
15377c4ece6SBarry Smith extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
15477c4ece6SBarry Smith extern int (*_PHC)(PetscObject);
15577c4ece6SBarry Smith extern int (*_PHD)(PetscObject);
15677c4ece6SBarry Smith 
15777c4ece6SBarry Smith #if defined(HAVE_MPE)
15877c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
15977c4ece6SBarry Smith   { _tacky++; \
160614700edSBarry Smith    if (_PLB && PLogEventFlags[e]) \
16177c4ece6SBarry Smith      (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
162614700edSBarry Smith    if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
16377c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e,0,"");\
16477c4ece6SBarry Smith   }
16577c4ece6SBarry Smith #else
16677c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
16777c4ece6SBarry Smith   { _tacky++; \
168614700edSBarry Smith    if (_PLB && PLogEventFlags[e]) \
16977c4ece6SBarry Smith      (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
17077c4ece6SBarry Smith   }
17177c4ece6SBarry Smith #endif
17277c4ece6SBarry Smith 
17377c4ece6SBarry Smith #if defined(HAVE_MPE)
17477c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
175614700edSBarry Smith   if (_PLE && PLogEventFlags[e]) \
17677c4ece6SBarry Smith     (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
177614700edSBarry Smith   if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
17877c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e+1,0,"");\
17977c4ece6SBarry Smith   }  _tacky--;}
18077c4ece6SBarry Smith #else
18177c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
182614700edSBarry Smith   if (_PLE && PLogEventFlags[e]) \
18377c4ece6SBarry Smith     (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
18477c4ece6SBarry Smith   } _tacky--;}
18577c4ece6SBarry Smith #endif
18677c4ece6SBarry Smith 
18777c4ece6SBarry Smith 
18877c4ece6SBarry Smith #define PLogObjectParent(p,c)       {PetscValidHeader((PetscObject)c); \
18977c4ece6SBarry Smith                                      PetscValidHeader((PetscObject)p);\
19077c4ece6SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
19177c4ece6SBarry Smith #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
19277c4ece6SBarry Smith                                     PLogObjectParent(p,(d)[_i]);}
19377c4ece6SBarry Smith #define PLogObjectCreate(h)         {if (_PHC) (*_PHC)((PetscObject)h);}
19477c4ece6SBarry Smith #define PLogObjectDestroy(h)        {if (_PHD) (*_PHD)((PetscObject)h);}
19577c4ece6SBarry Smith #define PLogObjectMemory(p,m)       {PetscValidHeader((PetscObject)p);\
19677c4ece6SBarry Smith                                     ((PetscObject)(p))->mem += (m);}
19777c4ece6SBarry Smith extern int    PLogObjectState(PetscObject,char *,...);
19877c4ece6SBarry Smith extern int    PLogDestroy();
19977c4ece6SBarry Smith extern int    PLogStagePush(int);
20077c4ece6SBarry Smith extern int    PLogStagePop();
20177c4ece6SBarry Smith extern int    PLogStageRegister(int,char*);
202edde42fcSLois Curfman McInnes extern int    PLogPrintSummary(MPI_Comm,FILE *);
203edde42fcSLois Curfman McInnes extern int    PLogBegin();
204edde42fcSLois Curfman McInnes extern int    PLogAllBegin();
205edde42fcSLois Curfman McInnes extern int    PLogDump(char*);
206edde42fcSLois Curfman McInnes extern int    PLogEventRegister(int*,char*,char*);
207e0937024SBarry Smith extern double PetscGetFlops();
20877c4ece6SBarry Smith 
209693211c1SBarry Smith extern double irecv_ct, isend_ct, wait_ct, wait_any_ct, recv_ct, send_ct;
210693211c1SBarry Smith extern double irecv_len, isend_len, recv_len, send_len;
211693211c1SBarry Smith extern double wait_all_ct,allreduce_ct,sum_of_waits_ct;
212ce85283eSBarry Smith /*
213ce85283eSBarry Smith      This does not use for MPI-Uni because our src/mpiuni/mpi.h file
214ce85283eSBarry Smith    uses macros to defined the MPI operations.
21515308354SBarry Smith 
21615308354SBarry Smith      It does not work correctly from HP-UX because it processes the
21715308354SBarry Smith    macros in a way that sometimes it double counts.
218ce85283eSBarry Smith */
21915308354SBarry Smith #if !defined(PETSC_USING_MPIUNI) && !defined(PARCH_hpux)
22077a39924SBarry Smith /*
22177a39924SBarry Smith    Logging of MPI activities
22277a39924SBarry Smith */
22377a39924SBarry Smith 
22477a39924SBarry Smith #define TypeSize(buff,count,type) \
22577a39924SBarry Smith { \
22677a39924SBarry Smith   if (type == MPIU_SCALAR) { \
227ce85283eSBarry Smith     buff += (double) ((count)*sizeof(Scalar)); \
22877a39924SBarry Smith   } else if (type == MPI_INT) { \
229ce85283eSBarry Smith     buff += (double) ((count)*sizeof(int));  \
23077a39924SBarry Smith   } else { \
231ce85283eSBarry Smith     int _size; MPI_Type_size(type,&_size); buff += (double) ((count)*_size); \
23277a39924SBarry Smith   } \
23377a39924SBarry Smith }
23477a39924SBarry Smith 
23577a39924SBarry Smith #define MPI_Irecv( buf, count,  datatype, source, tag, comm, request) \
23677a39924SBarry Smith { \
23777a39924SBarry Smith   MPI_Irecv( buf, count,  datatype, source, tag, comm, request);\
23877a39924SBarry Smith   irecv_ct++; TypeSize(irecv_len,count,datatype); \
23977a39924SBarry Smith }
24015308354SBarry Smith 
24177a39924SBarry Smith #define MPI_Isend( buf, count,  datatype, dest, tag, comm, request) \
24277a39924SBarry Smith { \
24377a39924SBarry Smith   MPI_Isend( buf, count,  datatype, dest, tag, comm, request); \
244e0937024SBarry Smith   isend_ct++;   TypeSize(isend_len,count,datatype); \
24577a39924SBarry Smith }
24615308354SBarry Smith 
2470d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests) \
2480d4b0b6cSBarry Smith { \
2490d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
2500d4b0b6cSBarry Smith   irecv_ct += (double)(number); irecv_len += (double) (count*sizeof(Scalar)); \
2510d4b0b6cSBarry Smith }
2520d4b0b6cSBarry Smith 
2530d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests) \
2540d4b0b6cSBarry Smith { \
2550d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
2560d4b0b6cSBarry Smith   isend_ct += (double)(number); isend_len += (double) (count*sizeof(Scalar)); \
2570d4b0b6cSBarry Smith }
2580d4b0b6cSBarry Smith 
2590d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests) \
2600d4b0b6cSBarry Smith { \
2610d4b0b6cSBarry Smith   MPI_Start( requests);\
2620d4b0b6cSBarry Smith   isend_ct++; isend_len += (double) (count*sizeof(Scalar)); \
2630d4b0b6cSBarry Smith }
2640d4b0b6cSBarry Smith 
265ce85283eSBarry Smith #define MPI_Recv( buf, count,  datatype, source, tag, comm, status) \
266ce85283eSBarry Smith { \
267ce85283eSBarry Smith   MPI_Recv( buf, count,  datatype, source, tag, comm, status); \
268ce85283eSBarry Smith   recv_ct++; TypeSize(recv_len,count,datatype); \
269ce85283eSBarry Smith }
27015308354SBarry Smith 
27177a39924SBarry Smith #define MPI_Send( buf, count,  datatype, dest, tag, comm) \
27277a39924SBarry Smith { \
27377a39924SBarry Smith   MPI_Send( buf, count,  datatype, dest, tag, comm); \
274e0937024SBarry Smith   send_ct++;  TypeSize(send_len,count,datatype); \
27577a39924SBarry Smith }
27677a39924SBarry Smith 
27777a39924SBarry Smith #define MPI_Wait(request, status) \
27877a39924SBarry Smith ( \
279e0937024SBarry Smith   wait_ct++, sum_of_waits_ct++,\
28077a39924SBarry Smith   MPI_Wait(request, status)  \
28177a39924SBarry Smith )
28277a39924SBarry Smith 
28377a39924SBarry Smith #define MPI_Waitany(a, b, c, d) \
28477a39924SBarry Smith ( \
285e0937024SBarry Smith   wait_any_ct++, sum_of_waits_ct++,  \
28677a39924SBarry Smith   MPI_Waitany(a, b, c, d)\
28777a39924SBarry Smith )
28877a39924SBarry Smith 
28977a39924SBarry Smith #define MPI_Waitall(count, array_of_requests, array_of_statuses) \
29077a39924SBarry Smith ( \
291ce85283eSBarry Smith   wait_all_ct++, sum_of_waits_ct += (double) (count),\
29277a39924SBarry Smith   MPI_Waitall(count, array_of_requests, array_of_statuses) \
29377a39924SBarry Smith )
29477a39924SBarry Smith 
29577a39924SBarry Smith #define MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
29677a39924SBarry Smith ( \
29777a39924SBarry Smith   allreduce_ct++, \
29877a39924SBarry Smith   MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
29977a39924SBarry Smith )
3000d4b0b6cSBarry Smith #else
3010d4b0b6cSBarry Smith 
3020d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests) \
3030d4b0b6cSBarry Smith { \
3040d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
3050d4b0b6cSBarry Smith }
3060d4b0b6cSBarry Smith 
3070d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests) \
3080d4b0b6cSBarry Smith { \
3090d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
3100d4b0b6cSBarry Smith }
3110d4b0b6cSBarry Smith 
3120d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests) \
3130d4b0b6cSBarry Smith { \
3140d4b0b6cSBarry Smith   MPI_Start( requests);\
3150d4b0b6cSBarry Smith }
3160d4b0b6cSBarry Smith 
31715308354SBarry Smith #endif /* ! PETSC_USING_MPIUNI && ! PARCH_hpux */
318614700edSBarry Smith 
319614700edSBarry Smith #else  /* ------------------------------------------------------------*/
320614700edSBarry Smith 
321614700edSBarry Smith #define PLogFlops(n)
322614700edSBarry Smith 
323614700edSBarry Smith #if defined (HAVE_MPE)
324614700edSBarry Smith #define MPEBEGIN    1000
325614700edSBarry Smith extern int PLogMPEBegin();
326614700edSBarry Smith extern int PLogMPEDump(char *);
32777c4ece6SBarry Smith #else
328614700edSBarry Smith #define PLogEventMPEActivate(a)
329905e6a2fSBarry Smith #define PLogEventMPEDeactivate(a)
330614700edSBarry Smith #endif
331614700edSBarry Smith 
332614700edSBarry Smith #define PLogEventActivate(a)
333905e6a2fSBarry Smith #define PLogEventDeactivate(a)
334614700edSBarry Smith 
335614700edSBarry Smith #define PLogEventActivateClass()
336905e6a2fSBarry Smith #define PLogEventDeactivateClass()
33777c4ece6SBarry Smith 
3387f8359c1SLois Curfman McInnes #define _PLB                          0
3397f8359c1SLois Curfman McInnes #define _PLE                          0
3407f8359c1SLois Curfman McInnes #define _PHC                          0
3417f8359c1SLois Curfman McInnes #define _PHD                          0
342e0937024SBarry Smith #define PetscGetFlops                 0.0
343d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
344d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
345d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c)
346d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c)
347d7a720efSLois Curfman McInnes #define PLogObjectCreate(h)
348d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h)
349d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m)
350d7a720efSLois Curfman McInnes #define PLogDestroy()
351d7a720efSLois Curfman McInnes #define PLogStagePush(int)
352d7a720efSLois Curfman McInnes #define PLogStagePop()
353d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b)
354d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file)
355d7a720efSLois Curfman McInnes #define PLogBegin()
356d7a720efSLois Curfman McInnes #define PLogAllBegin()
357d7a720efSLois Curfman McInnes #define PLogDump(char)
358d7a720efSLois Curfman McInnes #define PLogEventRegister(a,b,c)
359d7a720efSLois Curfman McInnes #define PLogMPEBegin()
360d7a720efSLois Curfman McInnes #define PLogMPEDump(a)
3617f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
36277c4ece6SBarry Smith #endif
3636daaf66cSBarry Smith 
3648b6d568bSLois Curfman McInnes /*MC
36519b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
36619b02663SBarry Smith 
36719b02663SBarry Smith    Input Parameter:
36819b02663SBarry Smith .  f - flop counter
36919b02663SBarry Smith 
37019b02663SBarry Smith    Synopsis:
371682ac3c9SWilliam Gropp    void PLogFlops(int f)
37219b02663SBarry Smith 
37319b02663SBarry Smith    Notes:
37419b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
37519b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
37619b02663SBarry Smith    application code.
37719b02663SBarry Smith 
37819b02663SBarry Smith    PETSc automatically logs library events if the code has been
37919b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
38019b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
38119b02663SBarry Smith    intended for logging user flops to supplement this PETSc
38219b02663SBarry Smith    information.
38319b02663SBarry Smith 
38419b02663SBarry Smith     Example of Usage:
38535aab85fSBarry Smith $     int USER_EVENT;
386b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
38719b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
38819b02663SBarry Smith $        [code segment to monitor]
38919b02663SBarry Smith $        PLogFlops(user_flops)
39019b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
39119b02663SBarry Smith 
39258cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops()
39319b02663SBarry Smith 
394edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations
39519b02663SBarry Smith M*/
39619b02663SBarry Smith 
39797bb86f7SLois Curfman McInnes 
398d7a720efSLois Curfman McInnes /*MC
39919b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
40097bb86f7SLois Curfman McInnes 
40197bb86f7SLois Curfman McInnes    Input Parameters:
40235aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
40397bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
40497bb86f7SLois Curfman McInnes 
40597bb86f7SLois Curfman McInnes    Synopsis:
406682ac3c9SWilliam Gropp    void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
40797bb86f7SLois Curfman McInnes                   PetscObject o4)
40897bb86f7SLois Curfman McInnes 
40997bb86f7SLois Curfman McInnes    Notes:
41097bb86f7SLois Curfman McInnes    You should also register each integer event with the command
41197bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
41297bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
41397bb86f7SLois Curfman McInnes 
41497bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
41597bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
41697bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
41797bb86f7SLois Curfman McInnes    to supplement this PETSc information.
41897bb86f7SLois Curfman McInnes 
41997bb86f7SLois Curfman McInnes     Example of Usage:
42035aab85fSBarry Smith $     int USER_EVENT;
4210eb211faSLois Curfman McInnes $     int user_event_flops;
422b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
42335aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
42497bb86f7SLois Curfman McInnes $        [code segment to monitor]
4250eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
42635aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
42797bb86f7SLois Curfman McInnes 
42897bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
42997bb86f7SLois Curfman McInnes 
43097bb86f7SLois Curfman McInnes .keywords: log, event, begin
43197bb86f7SLois Curfman McInnes M*/
43297bb86f7SLois Curfman McInnes 
433d7a720efSLois Curfman McInnes /*MC
43419b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
43597bb86f7SLois Curfman McInnes 
43697bb86f7SLois Curfman McInnes    Input Parameters:
43735aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
43897bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
43997bb86f7SLois Curfman McInnes 
44097bb86f7SLois Curfman McInnes    Synopsis:
441682ac3c9SWilliam Gropp    void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
44297bb86f7SLois Curfman McInnes                 PetscObject o4)
44397bb86f7SLois Curfman McInnes 
44497bb86f7SLois Curfman McInnes    Notes:
44597bb86f7SLois Curfman McInnes    You should also register each integer event with the command
44697bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
44797bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
44897bb86f7SLois Curfman McInnes 
44997bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
45097bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
45197bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
45297bb86f7SLois Curfman McInnes    to supplement this PETSc information.
45397bb86f7SLois Curfman McInnes 
45497bb86f7SLois Curfman McInnes     Example of Usage:
45535aab85fSBarry Smith $     int USER_EVENT;
4560eb211faSLois Curfman McInnes $     int user_event_flops;
457b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
45897bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
45997bb86f7SLois Curfman McInnes $        [code segment to monitor]
4600eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
46197bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
46297bb86f7SLois Curfman McInnes 
46397bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
46497bb86f7SLois Curfman McInnes 
46597bb86f7SLois Curfman McInnes .keywords: log, event, end
46697bb86f7SLois Curfman McInnes M*/
46797bb86f7SLois Curfman McInnes 
468e0937024SBarry Smith 
46997bb86f7SLois Curfman McInnes #endif
47041debaddSBarry Smith 
47177c4ece6SBarry Smith 
47277c4ece6SBarry Smith 
473