xref: /petsc/include/petsclog.h (revision 7588ac453a7d7d872c5aec6f94f91e06c2178d20)
1*7588ac45SBarry Smith /* $Id: plog.h,v 1.78 1996/08/04 23:09:47 bsmith Exp bsmith $ */
297bb86f7SLois Curfman McInnes 
397bb86f7SLois Curfman McInnes /*
4*7588ac45SBarry 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 /*
12*7588ac45SBarry Smith   Lists all PETSc events that are logged/profiled.
13*7588ac45SBarry 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
521ff317f7SLois Curfman McInnes #define MAT_GetSubMatrix                        31
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 
884dcbc457SBarry Smith #define PC_SetUp                                75
8936058207SBarry Smith #define PC_SetUpOnBlocks                        76
9032284f49SSatish Balay #define PC_Apply                                77
91614700edSBarry Smith #define PC_ApplySymmetricLeft                   78
92614700edSBarry Smith #define PC_ApplySymmetricRight                  79
934dcbc457SBarry Smith 
944dcbc457SBarry Smith #define SNES_Solve                              80
954dcbc457SBarry Smith #define SNES_LineSearch                         81
964dcbc457SBarry Smith #define SNES_FunctionEval                       82
974dcbc457SBarry Smith #define SNES_JacobianEval                       83
984dcbc457SBarry Smith #define SNES_MinimizationFunctionEval           84
994dcbc457SBarry Smith #define SNES_GradientEval                       85
1004dcbc457SBarry Smith #define SNES_HessianEval                        86
1014dcbc457SBarry Smith 
102682d7d0cSBarry Smith #define TS_Step                                 90
10372936c9dSBarry Smith 
10472936c9dSBarry Smith #define Petsc_Barrier                           100
10555206aebSLois Curfman McInnes 
10655206aebSLois Curfman McInnes #define DFVec_RefineVector                      110
10755206aebSLois Curfman McInnes #define DFVec_AssembleFullVector                111
10855206aebSLois Curfman McInnes #define DFVec_GetComponentVectors               112
10955206aebSLois Curfman McInnes #define DFVec_DrawContours                      113
11055206aebSLois Curfman McInnes 
11141debaddSBarry Smith /*
112b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
11377c4ece6SBarry Smith    for applications.  Make sure that src/plog/src/plog.c defines enough
114b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
11541debaddSBarry Smith */
11635aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1174dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
11897bb86f7SLois Curfman McInnes 
11919b02663SBarry Smith /* Global flop counter */
12019b02663SBarry Smith extern double _TotalFlops;
12119b02663SBarry Smith 
122edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */
12394a424c1SBarry Smith extern int PLogInfo(void*,char*,...);
124cfd8f56bSLois Curfman McInnes extern int PLogInfoDeactivateClass(int);
125614700edSBarry Smith extern int PLogInfoActivateClass(int);
126614700edSBarry Smith 
127614700edSBarry Smith #if defined(PETSC_LOG)  /* --------------------------------------------*/
128614700edSBarry Smith 
129a2ce50c7SBarry Smith #define PLogFlops(n) {_TotalFlops += (n);}
13077c4ece6SBarry Smith 
13177c4ece6SBarry Smith #if defined (HAVE_MPE)
13277c4ece6SBarry Smith #include "mpe.h"
133614700edSBarry Smith #define MPEBEGIN    1000
13477c4ece6SBarry Smith extern int PLogMPEBegin();
13577c4ece6SBarry Smith extern int PLogMPEDump(char *);
136614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[];
137614700edSBarry Smith extern int PLogEventMPEActivate(int);
138614700edSBarry Smith extern int PLogEventMPEDeActivate(int);
139614700edSBarry Smith #else
140614700edSBarry Smith #define PLogEventMPEActivate(a)
141614700edSBarry Smith #define PLogEventMPEDeActivate(a)
14277c4ece6SBarry Smith #endif
14377c4ece6SBarry Smith 
144614700edSBarry Smith extern int PLogEventActivate(int);
145614700edSBarry Smith extern int PLogEventDeActivate(int);
146614700edSBarry Smith 
147614700edSBarry Smith extern int PLogEventActivateClass();
148614700edSBarry Smith extern int PLogEventDeActivateClass();
149614700edSBarry Smith 
150614700edSBarry Smith extern int PLogEventFlags[];
15177c4ece6SBarry Smith extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
15277c4ece6SBarry Smith extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
15377c4ece6SBarry Smith extern int (*_PHC)(PetscObject);
15477c4ece6SBarry Smith extern int (*_PHD)(PetscObject);
15577c4ece6SBarry Smith 
15677c4ece6SBarry Smith #if defined(HAVE_MPE)
15777c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
15877c4ece6SBarry Smith   { _tacky++; \
159614700edSBarry Smith    if (_PLB && PLogEventFlags[e]) \
16077c4ece6SBarry Smith      (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
161614700edSBarry Smith    if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
16277c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e,0,"");\
16377c4ece6SBarry Smith   }
16477c4ece6SBarry Smith #else
16577c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
16677c4ece6SBarry Smith   { _tacky++; \
167614700edSBarry Smith    if (_PLB && PLogEventFlags[e]) \
16877c4ece6SBarry Smith      (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
16977c4ece6SBarry Smith   }
17077c4ece6SBarry Smith #endif
17177c4ece6SBarry Smith 
17277c4ece6SBarry Smith #if defined(HAVE_MPE)
17377c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
174614700edSBarry Smith   if (_PLE && PLogEventFlags[e]) \
17577c4ece6SBarry Smith     (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
176614700edSBarry Smith   if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
17777c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e+1,0,"");\
17877c4ece6SBarry Smith   }  _tacky--;}
17977c4ece6SBarry Smith #else
18077c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
181614700edSBarry Smith   if (_PLE && PLogEventFlags[e]) \
18277c4ece6SBarry Smith     (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
18377c4ece6SBarry Smith   } _tacky--;}
18477c4ece6SBarry Smith #endif
18577c4ece6SBarry Smith 
18677c4ece6SBarry Smith 
18777c4ece6SBarry Smith #define PLogObjectParent(p,c)       {PetscValidHeader((PetscObject)c); \
18877c4ece6SBarry Smith                                      PetscValidHeader((PetscObject)p);\
18977c4ece6SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
19077c4ece6SBarry Smith #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
19177c4ece6SBarry Smith                                     PLogObjectParent(p,(d)[_i]);}
19277c4ece6SBarry Smith #define PLogObjectCreate(h)         {if (_PHC) (*_PHC)((PetscObject)h);}
19377c4ece6SBarry Smith #define PLogObjectDestroy(h)        {if (_PHD) (*_PHD)((PetscObject)h);}
19477c4ece6SBarry Smith #define PLogObjectMemory(p,m)       {PetscValidHeader((PetscObject)p);\
19577c4ece6SBarry Smith                                     ((PetscObject)(p))->mem += (m);}
19677c4ece6SBarry Smith extern int    PLogObjectState(PetscObject,char *,...);
19777c4ece6SBarry Smith extern int    PLogDestroy();
19877c4ece6SBarry Smith extern int    PLogStagePush(int);
19977c4ece6SBarry Smith extern int    PLogStagePop();
20077c4ece6SBarry Smith extern int    PLogStageRegister(int,char*);
201edde42fcSLois Curfman McInnes extern int    PLogPrintSummary(MPI_Comm,FILE *);
202edde42fcSLois Curfman McInnes extern int    PLogBegin();
203edde42fcSLois Curfman McInnes extern int    PLogAllBegin();
204edde42fcSLois Curfman McInnes extern int    PLogDump(char*);
205edde42fcSLois Curfman McInnes extern int    PLogEventRegister(int*,char*,char*);
206e0937024SBarry Smith extern double PetscGetFlops();
20777c4ece6SBarry Smith 
208ce85283eSBarry Smith /*
209ce85283eSBarry Smith      This does not use for MPI-Uni because our src/mpiuni/mpi.h file
210ce85283eSBarry Smith    uses macros to defined the MPI operations.
211ce85283eSBarry Smith */
212*7588ac45SBarry Smith #if !defined(PETSC_USING_MPIUNI)
21377a39924SBarry Smith /*
21477a39924SBarry Smith    Logging of MPI activities
21577a39924SBarry Smith */
216e0937024SBarry Smith extern double irecv_ct,   isend_ct,    wait_ct,       wait_any_ct, recv_ct, send_ct;
217e0937024SBarry Smith extern double irecv_len,  isend_len,   recv_len,      send_len;
218e0937024SBarry Smith extern double wait_all_ct,allreduce_ct,sum_of_waits_ct;
21977a39924SBarry Smith 
22077a39924SBarry Smith #define TypeSize(buff,count,type) \
22177a39924SBarry Smith { \
22277a39924SBarry Smith   if (type == MPIU_SCALAR) { \
223ce85283eSBarry Smith     buff += (double) ((count)*sizeof(Scalar)); \
22477a39924SBarry Smith   } else if (type == MPI_INT) { \
225ce85283eSBarry Smith     buff += (double) ((count)*sizeof(int));  \
22677a39924SBarry Smith   } else { \
227ce85283eSBarry Smith     int _size; MPI_Type_size(type,&_size); buff += (double) ((count)*_size); \
22877a39924SBarry Smith   } \
22977a39924SBarry Smith }
23077a39924SBarry Smith 
231ce85283eSBarry Smith #if defined(PARCH_hpux)
232ce85283eSBarry Smith /*
233ce85283eSBarry Smith     This is a tacky fix. The CPP on HP-UX scans the macros twice
234ce85283eSBarry Smith   thus it double counted the send/receive operations.
235ce85283eSBarry Smith */
236ce85283eSBarry Smith #define MPI_Irecv( buf, count,  datatype, source, tag, comm, request) \
237ce85283eSBarry Smith { \
238ce85283eSBarry Smith   MPI_Irecv( buf, count,  datatype, source, tag, comm, request);\
239ce85283eSBarry Smith   irecv_ct += .5; TypeSize(irecv_len,.5*count,datatype); \
240ce85283eSBarry Smith }
241ce85283eSBarry Smith #define MPI_Isend( buf, count,  datatype, dest, tag, comm, request) \
242ce85283eSBarry Smith { \
243ce85283eSBarry Smith   MPI_Isend( buf, count,  datatype, dest, tag, comm, request); \
244ce85283eSBarry Smith   isend_ct += .5;   TypeSize(isend_len,.5*count,datatype); \
245ce85283eSBarry Smith }
246ce85283eSBarry Smith #define MPI_Recv( buf, count,  datatype, source, tag, comm, status) \
247ce85283eSBarry Smith { \
248ce85283eSBarry Smith   MPI_Recv( buf, count,  datatype, source, tag, comm, status); \
249ce85283eSBarry Smith   recv_ct += .5; TypeSize(recv_len,.5*count,datatype); \
250ce85283eSBarry Smith }
251ce85283eSBarry Smith #define MPI_Send( buf, count,  datatype, dest, tag, comm) \
252ce85283eSBarry Smith { \
253ce85283eSBarry Smith   MPI_Send( buf, count,  datatype, dest, tag, comm); \
254ce85283eSBarry Smith   send_ct += .5;  TypeSize(send_len,.5*count,datatype); \
255ce85283eSBarry Smith }
256ce85283eSBarry Smith #else
25777a39924SBarry Smith #define MPI_Irecv( buf, count,  datatype, source, tag, comm, request) \
25877a39924SBarry Smith { \
25977a39924SBarry Smith   MPI_Irecv( buf, count,  datatype, source, tag, comm, request);\
26077a39924SBarry Smith   irecv_ct++; TypeSize(irecv_len,count,datatype); \
26177a39924SBarry Smith }
26277a39924SBarry Smith #define MPI_Isend( buf, count,  datatype, dest, tag, comm, request) \
26377a39924SBarry Smith { \
26477a39924SBarry Smith   MPI_Isend( buf, count,  datatype, dest, tag, comm, request); \
265e0937024SBarry Smith   isend_ct++;   TypeSize(isend_len,count,datatype); \
26677a39924SBarry Smith }
267ce85283eSBarry Smith #define MPI_Recv( buf, count,  datatype, source, tag, comm, status) \
268ce85283eSBarry Smith { \
269ce85283eSBarry Smith   MPI_Recv( buf, count,  datatype, source, tag, comm, status); \
270ce85283eSBarry Smith   recv_ct++; TypeSize(recv_len,count,datatype); \
271ce85283eSBarry Smith }
27277a39924SBarry Smith #define MPI_Send( buf, count,  datatype, dest, tag, comm) \
27377a39924SBarry Smith { \
27477a39924SBarry Smith   MPI_Send( buf, count,  datatype, dest, tag, comm); \
275e0937024SBarry Smith   send_ct++;  TypeSize(send_len,count,datatype); \
27677a39924SBarry Smith }
277ce85283eSBarry Smith #endif
27877a39924SBarry Smith 
27977a39924SBarry Smith #define MPI_Wait(request, status) \
28077a39924SBarry Smith ( \
281e0937024SBarry Smith   wait_ct++, sum_of_waits_ct++,\
28277a39924SBarry Smith   MPI_Wait(request, status)  \
28377a39924SBarry Smith )
28477a39924SBarry Smith 
28577a39924SBarry Smith #define MPI_Waitany(a, b, c, d) \
28677a39924SBarry Smith ( \
287e0937024SBarry Smith   wait_any_ct++, sum_of_waits_ct++,  \
28877a39924SBarry Smith   MPI_Waitany(a, b, c, d)\
28977a39924SBarry Smith )
29077a39924SBarry Smith 
29177a39924SBarry Smith #define MPI_Waitall(count, array_of_requests, array_of_statuses) \
29277a39924SBarry Smith ( \
293ce85283eSBarry Smith   wait_all_ct++, sum_of_waits_ct += (double) (count),\
29477a39924SBarry Smith   MPI_Waitall(count, array_of_requests, array_of_statuses) \
29577a39924SBarry Smith )
29677a39924SBarry Smith 
29777a39924SBarry Smith #define MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
29877a39924SBarry Smith ( \
29977a39924SBarry Smith   allreduce_ct++, \
30077a39924SBarry Smith   MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
30177a39924SBarry Smith )
30277a39924SBarry Smith #endif /* ! PETSC_USING_MPIUNI */
303614700edSBarry Smith 
304614700edSBarry Smith #else  /* ------------------------------------------------------------*/
305614700edSBarry Smith 
306614700edSBarry Smith #define PLogFlops(n)
307614700edSBarry Smith 
308614700edSBarry Smith #if defined (HAVE_MPE)
309614700edSBarry Smith #define MPEBEGIN    1000
310614700edSBarry Smith extern int PLogMPEBegin();
311614700edSBarry Smith extern int PLogMPEDump(char *);
31277c4ece6SBarry Smith #else
313614700edSBarry Smith #define PLogEventMPEActivate(a)
314614700edSBarry Smith #define PLogEventMPEDeActivate(a)
315614700edSBarry Smith #endif
316614700edSBarry Smith 
317614700edSBarry Smith #define PLogEventActivate(a)
318614700edSBarry Smith #define PLogEventDeActivate(a)
319614700edSBarry Smith 
320614700edSBarry Smith #define PLogEventActivateClass()
321614700edSBarry Smith #define PLogEventDeActivateClass()
32277c4ece6SBarry Smith 
3237f8359c1SLois Curfman McInnes #define _PLB                          0
3247f8359c1SLois Curfman McInnes #define _PLE                          0
3257f8359c1SLois Curfman McInnes #define _PHC                          0
3267f8359c1SLois Curfman McInnes #define _PHD                          0
327e0937024SBarry Smith #define PetscGetFlops                 0.0
328d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
329d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
330d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c)
331d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c)
332d7a720efSLois Curfman McInnes #define PLogObjectCreate(h)
333d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h)
334d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m)
335d7a720efSLois Curfman McInnes #define PLogDestroy()
336d7a720efSLois Curfman McInnes #define PLogStagePush(int)
337d7a720efSLois Curfman McInnes #define PLogStagePop()
338d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b)
339d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file)
340d7a720efSLois Curfman McInnes #define PLogBegin()
341d7a720efSLois Curfman McInnes #define PLogAllBegin()
342d7a720efSLois Curfman McInnes #define PLogDump(char)
343d7a720efSLois Curfman McInnes #define PLogEventRegister(a,b,c)
344d7a720efSLois Curfman McInnes #define PLogMPEBegin()
345d7a720efSLois Curfman McInnes #define PLogMPEDump(a)
3467f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
34777c4ece6SBarry Smith #endif
3486daaf66cSBarry Smith 
3498b6d568bSLois Curfman McInnes /*MC
35019b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
35119b02663SBarry Smith 
35219b02663SBarry Smith    Input Parameter:
35319b02663SBarry Smith .  f - flop counter
35419b02663SBarry Smith 
35519b02663SBarry Smith    Synopsis:
356682ac3c9SWilliam Gropp    void PLogFlops(int f)
35719b02663SBarry Smith 
35819b02663SBarry Smith    Notes:
35919b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
36019b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
36119b02663SBarry Smith    application code.
36219b02663SBarry Smith 
36319b02663SBarry Smith    PETSc automatically logs library events if the code has been
36419b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
36519b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
36619b02663SBarry Smith    intended for logging user flops to supplement this PETSc
36719b02663SBarry Smith    information.
36819b02663SBarry Smith 
36919b02663SBarry Smith     Example of Usage:
37035aab85fSBarry Smith $     int USER_EVENT;
371b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
37219b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
37319b02663SBarry Smith $        [code segment to monitor]
37419b02663SBarry Smith $        PLogFlops(user_flops)
37519b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
37619b02663SBarry Smith 
37758cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops()
37819b02663SBarry Smith 
379edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations
38019b02663SBarry Smith M*/
38119b02663SBarry Smith 
38297bb86f7SLois Curfman McInnes 
383d7a720efSLois Curfman McInnes /*MC
38419b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
38597bb86f7SLois Curfman McInnes 
38697bb86f7SLois Curfman McInnes    Input Parameters:
38735aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
38897bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
38997bb86f7SLois Curfman McInnes 
39097bb86f7SLois Curfman McInnes    Synopsis:
391682ac3c9SWilliam Gropp    void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
39297bb86f7SLois Curfman McInnes                   PetscObject o4)
39397bb86f7SLois Curfman McInnes 
39497bb86f7SLois Curfman McInnes    Notes:
39597bb86f7SLois Curfman McInnes    You should also register each integer event with the command
39697bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
39797bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
39897bb86f7SLois Curfman McInnes 
39997bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
40097bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
40197bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
40297bb86f7SLois Curfman McInnes    to supplement this PETSc information.
40397bb86f7SLois Curfman McInnes 
40497bb86f7SLois Curfman McInnes     Example of Usage:
40535aab85fSBarry Smith $     int USER_EVENT;
4060eb211faSLois Curfman McInnes $     int user_event_flops;
407b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
40835aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
40997bb86f7SLois Curfman McInnes $        [code segment to monitor]
4100eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
41135aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
41297bb86f7SLois Curfman McInnes 
41397bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
41497bb86f7SLois Curfman McInnes 
41597bb86f7SLois Curfman McInnes .keywords: log, event, begin
41697bb86f7SLois Curfman McInnes M*/
41797bb86f7SLois Curfman McInnes 
418d7a720efSLois Curfman McInnes /*MC
41919b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
42097bb86f7SLois Curfman McInnes 
42197bb86f7SLois Curfman McInnes    Input Parameters:
42235aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
42397bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
42497bb86f7SLois Curfman McInnes 
42597bb86f7SLois Curfman McInnes    Synopsis:
426682ac3c9SWilliam Gropp    void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
42797bb86f7SLois Curfman McInnes                 PetscObject o4)
42897bb86f7SLois Curfman McInnes 
42997bb86f7SLois Curfman McInnes    Notes:
43097bb86f7SLois Curfman McInnes    You should also register each integer event with the command
43197bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
43297bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
43397bb86f7SLois Curfman McInnes 
43497bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
43597bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
43697bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
43797bb86f7SLois Curfman McInnes    to supplement this PETSc information.
43897bb86f7SLois Curfman McInnes 
43997bb86f7SLois Curfman McInnes     Example of Usage:
44035aab85fSBarry Smith $     int USER_EVENT;
4410eb211faSLois Curfman McInnes $     int user_event_flops;
442b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
44397bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
44497bb86f7SLois Curfman McInnes $        [code segment to monitor]
4450eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
44697bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
44797bb86f7SLois Curfman McInnes 
44897bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
44997bb86f7SLois Curfman McInnes 
45097bb86f7SLois Curfman McInnes .keywords: log, event, end
45197bb86f7SLois Curfman McInnes M*/
45297bb86f7SLois Curfman McInnes 
453e0937024SBarry Smith 
45497bb86f7SLois Curfman McInnes #endif
45541debaddSBarry Smith 
45677c4ece6SBarry Smith 
45777c4ece6SBarry Smith 
458