xref: /petsc/include/petsclog.h (revision 0513a670233e070c0fc2d7ef3dc22f950deb2ce6)
1*0513a670SBarry Smith /* $Id: petsclog.h,v 1.97 1997/01/12 04:36:13 bsmith Exp bsmith $ */
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
19e10960a1SSatish Balay   petsc/include/FINCLUDE/petsclog.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
523e584e2eSBarry Smith #define MAT_GetColoring                         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 
881bffabb2SLois 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
104bf343e40SBarry Smith #define TS_PseudoComputeTimeStep                91
10572936c9dSBarry Smith 
10672936c9dSBarry Smith #define Petsc_Barrier                           100
10755206aebSLois Curfman McInnes 
108*0513a670SBarry Smith #define EC_SetUp                                105
109*0513a670SBarry Smith #define EC_Solve                                106
110*0513a670SBarry Smith 
11155206aebSLois Curfman McInnes #define DFVec_RefineVector                      110
11255206aebSLois Curfman McInnes #define DFVec_AssembleFullVector                111
11355206aebSLois Curfman McInnes #define DFVec_GetComponentVectors               112
11455206aebSLois Curfman McInnes #define DFVec_DrawContours                      113
11555206aebSLois Curfman McInnes 
11641debaddSBarry Smith /*
117b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
11877c4ece6SBarry Smith    for applications.  Make sure that src/plog/src/plog.c defines enough
119b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
12041debaddSBarry Smith */
12135aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1224dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
12397bb86f7SLois Curfman McInnes 
12419b02663SBarry Smith /* Global flop counter */
12519b02663SBarry Smith extern double _TotalFlops;
12619b02663SBarry Smith 
127edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */
12894a424c1SBarry Smith extern int PLogInfo(void*,char*,...);
129cfd8f56bSLois Curfman McInnes extern int PLogInfoDeactivateClass(int);
130614700edSBarry Smith extern int PLogInfoActivateClass(int);
13143a90d84SBarry Smith extern int PLogPrintInfo;  /* if 1, indicates PLogInfo() is turned on */
132614700edSBarry Smith 
133614700edSBarry Smith #if defined(PETSC_LOG)  /* --------------------------------------------*/
134614700edSBarry Smith 
135a2ce50c7SBarry Smith #define PLogFlops(n) {_TotalFlops += (n);}
13677c4ece6SBarry Smith 
13777c4ece6SBarry Smith #if defined (HAVE_MPE)
13877c4ece6SBarry Smith #include "mpe.h"
139614700edSBarry Smith #define MPEBEGIN    1000
14077c4ece6SBarry Smith extern int PLogMPEBegin();
14177c4ece6SBarry Smith extern int PLogMPEDump(char *);
142614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[];
143614700edSBarry Smith extern int PLogEventMPEActivate(int);
144905e6a2fSBarry Smith extern int PLogEventMPEDeactivate(int);
145614700edSBarry Smith #else
146c74530a3SSatish Balay #define PLogEventMPEActivate(a) 0
147c74530a3SSatish Balay #define PLogEventMPEDeactivate(a) 0
14877c4ece6SBarry Smith #endif
14977c4ece6SBarry Smith 
150614700edSBarry Smith extern int PLogEventActivate(int);
151905e6a2fSBarry Smith extern int PLogEventDeactivate(int);
152614700edSBarry Smith 
1533e584e2eSBarry Smith extern int PLogEventActivateClass(int);
1543e584e2eSBarry Smith extern int PLogEventDeactivateClass(int);
155614700edSBarry Smith 
156614700edSBarry Smith extern int PLogEventFlags[];
157b3bbe94bSBarry Smith extern int (*_PLogPLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
158b3bbe94bSBarry Smith extern int (*_PLogPLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
159b3bbe94bSBarry Smith extern int (*_PLogPHC)(PetscObject);
160b3bbe94bSBarry Smith extern int (*_PLogPHD)(PetscObject);
16177c4ece6SBarry Smith 
16277c4ece6SBarry Smith #if defined(HAVE_MPE)
16377c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
16477c4ece6SBarry Smith   { _tacky++; \
165b3bbe94bSBarry Smith    if (_PLogPLB && PLogEventFlags[e]) \
166b3bbe94bSBarry Smith      (*_PLogPLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
167614700edSBarry Smith    if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
16877c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e,0,"");\
16977c4ece6SBarry Smith   }
17077c4ece6SBarry Smith #else
17177c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
17277c4ece6SBarry Smith   { _tacky++; \
173b3bbe94bSBarry Smith    if (_PLogPLB && PLogEventFlags[e]) \
174b3bbe94bSBarry Smith      (*_PLogPLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
17577c4ece6SBarry Smith   }
17677c4ece6SBarry Smith #endif
17777c4ece6SBarry Smith 
17877c4ece6SBarry Smith #if defined(HAVE_MPE)
17977c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
180b3bbe94bSBarry Smith   if (_PLogPLE && PLogEventFlags[e]) \
181b3bbe94bSBarry Smith     (*_PLogPLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
182614700edSBarry Smith   if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
18377c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e+1,0,"");\
18477c4ece6SBarry Smith   }  _tacky--;}
18577c4ece6SBarry Smith #else
18677c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
187b3bbe94bSBarry Smith   if (_PLogPLE && PLogEventFlags[e]) \
188b3bbe94bSBarry Smith     (*_PLogPLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
18977c4ece6SBarry Smith   } _tacky--;}
19077c4ece6SBarry Smith #endif
19177c4ece6SBarry Smith 
19277c4ece6SBarry Smith 
19377c4ece6SBarry Smith #define PLogObjectParent(p,c)       {PetscValidHeader((PetscObject)c); \
19477c4ece6SBarry Smith                                      PetscValidHeader((PetscObject)p);\
19577c4ece6SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
19677c4ece6SBarry Smith #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
19777c4ece6SBarry Smith                                     PLogObjectParent(p,(d)[_i]);}
198b3bbe94bSBarry Smith #define PLogObjectCreate(h)         {if (_PLogPHC) (*_PLogPHC)((PetscObject)h);}
199b3bbe94bSBarry Smith #define PLogObjectDestroy(h)        {if (_PLogPHD) (*_PLogPHD)((PetscObject)h);}
20077c4ece6SBarry Smith #define PLogObjectMemory(p,m)       {PetscValidHeader((PetscObject)p);\
20177c4ece6SBarry Smith                                     ((PetscObject)(p))->mem += (m);}
20277c4ece6SBarry Smith extern int    PLogObjectState(PetscObject,char *,...);
20377c4ece6SBarry Smith extern int    PLogDestroy();
20477c4ece6SBarry Smith extern int    PLogStagePush(int);
20577c4ece6SBarry Smith extern int    PLogStagePop();
20677c4ece6SBarry Smith extern int    PLogStageRegister(int,char*);
207edde42fcSLois Curfman McInnes extern int    PLogPrintSummary(MPI_Comm,FILE *);
208edde42fcSLois Curfman McInnes extern int    PLogBegin();
209bc1211c7SBarry Smith extern int    PLogTraceBegin(FILE *);
210edde42fcSLois Curfman McInnes extern int    PLogAllBegin();
211bc1211c7SBarry Smith extern int    PLogSet(int (*)(int,int,PetscObject,PetscObject,PetscObject,PetscObject),
212bc1211c7SBarry Smith                       int (*)(int,int,PetscObject,PetscObject,PetscObject,PetscObject));
213edde42fcSLois Curfman McInnes extern int    PLogDump(char*);
214edde42fcSLois Curfman McInnes extern int    PLogEventRegister(int*,char*,char*);
215e0937024SBarry Smith extern double PetscGetFlops();
21677c4ece6SBarry Smith 
217693211c1SBarry Smith extern double irecv_ct, isend_ct, wait_ct, wait_any_ct, recv_ct, send_ct;
218693211c1SBarry Smith extern double irecv_len, isend_len, recv_len, send_len;
219693211c1SBarry Smith extern double wait_all_ct,allreduce_ct,sum_of_waits_ct;
220ce85283eSBarry Smith /*
221ce85283eSBarry Smith      This does not use for MPI-Uni because our src/mpiuni/mpi.h file
222ce85283eSBarry Smith    uses macros to defined the MPI operations.
22315308354SBarry Smith 
22415308354SBarry Smith      It does not work correctly from HP-UX because it processes the
22515308354SBarry Smith    macros in a way that sometimes it double counts.
226ce85283eSBarry Smith */
22715308354SBarry Smith #if !defined(PETSC_USING_MPIUNI) && !defined(PARCH_hpux)
22877a39924SBarry Smith /*
22977a39924SBarry Smith    Logging of MPI activities
23077a39924SBarry Smith */
23177a39924SBarry Smith 
23277a39924SBarry Smith #define TypeSize(buff,count,type) \
23377a39924SBarry Smith { \
23477a39924SBarry Smith   if (type == MPIU_SCALAR) { \
235ce85283eSBarry Smith     buff += (double) ((count)*sizeof(Scalar)); \
23677a39924SBarry Smith   } else if (type == MPI_INT) { \
237ce85283eSBarry Smith     buff += (double) ((count)*sizeof(int));  \
23877a39924SBarry Smith   } else { \
239ce85283eSBarry Smith     int _size; MPI_Type_size(type,&_size); buff += (double) ((count)*_size); \
24077a39924SBarry Smith   } \
24177a39924SBarry Smith }
24277a39924SBarry Smith 
24377a39924SBarry Smith #define MPI_Irecv( buf, count,  datatype, source, tag, comm, request) \
24477a39924SBarry Smith { \
24577a39924SBarry Smith   MPI_Irecv( buf, count,  datatype, source, tag, comm, request);\
24677a39924SBarry Smith   irecv_ct++; TypeSize(irecv_len,count,datatype); \
24777a39924SBarry Smith }
24815308354SBarry Smith 
24977a39924SBarry Smith #define MPI_Isend( buf, count,  datatype, dest, tag, comm, request) \
25077a39924SBarry Smith { \
25177a39924SBarry Smith   MPI_Isend( buf, count,  datatype, dest, tag, comm, request); \
252e0937024SBarry Smith   isend_ct++;   TypeSize(isend_len,count,datatype); \
25377a39924SBarry Smith }
25415308354SBarry Smith 
2550d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests) \
2560d4b0b6cSBarry Smith { \
2570d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
2580d4b0b6cSBarry Smith   irecv_ct += (double)(number); irecv_len += (double) (count*sizeof(Scalar)); \
2590d4b0b6cSBarry Smith }
2600d4b0b6cSBarry Smith 
2610d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests) \
2620d4b0b6cSBarry Smith { \
2630d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
2640d4b0b6cSBarry Smith   isend_ct += (double)(number); isend_len += (double) (count*sizeof(Scalar)); \
2650d4b0b6cSBarry Smith }
2660d4b0b6cSBarry Smith 
2670d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests) \
2680d4b0b6cSBarry Smith { \
2690d4b0b6cSBarry Smith   MPI_Start( requests);\
2700d4b0b6cSBarry Smith   isend_ct++; isend_len += (double) (count*sizeof(Scalar)); \
2710d4b0b6cSBarry Smith }
2720d4b0b6cSBarry Smith 
273ce85283eSBarry Smith #define MPI_Recv( buf, count,  datatype, source, tag, comm, status) \
274ce85283eSBarry Smith { \
275ce85283eSBarry Smith   MPI_Recv( buf, count,  datatype, source, tag, comm, status); \
276ce85283eSBarry Smith   recv_ct++; TypeSize(recv_len,count,datatype); \
277ce85283eSBarry Smith }
27815308354SBarry Smith 
27977a39924SBarry Smith #define MPI_Send( buf, count,  datatype, dest, tag, comm) \
28077a39924SBarry Smith { \
28177a39924SBarry Smith   MPI_Send( buf, count,  datatype, dest, tag, comm); \
282e0937024SBarry Smith   send_ct++;  TypeSize(send_len,count,datatype); \
28377a39924SBarry Smith }
28477a39924SBarry Smith 
28577a39924SBarry Smith #define MPI_Wait(request, status) \
28677a39924SBarry Smith ( \
287e0937024SBarry Smith   wait_ct++, sum_of_waits_ct++,\
28877a39924SBarry Smith   MPI_Wait(request, status)  \
28977a39924SBarry Smith )
29077a39924SBarry Smith 
29177a39924SBarry Smith #define MPI_Waitany(a, b, c, d) \
29277a39924SBarry Smith ( \
293e0937024SBarry Smith   wait_any_ct++, sum_of_waits_ct++,  \
29477a39924SBarry Smith   MPI_Waitany(a, b, c, d)\
29577a39924SBarry Smith )
29677a39924SBarry Smith 
29777a39924SBarry Smith #define MPI_Waitall(count, array_of_requests, array_of_statuses) \
29877a39924SBarry Smith ( \
299ce85283eSBarry Smith   wait_all_ct++, sum_of_waits_ct += (double) (count),\
30077a39924SBarry Smith   MPI_Waitall(count, array_of_requests, array_of_statuses) \
30177a39924SBarry Smith )
30277a39924SBarry Smith 
30377a39924SBarry Smith #define MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
30477a39924SBarry Smith ( \
30577a39924SBarry Smith   allreduce_ct++, \
30677a39924SBarry Smith   MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
30777a39924SBarry Smith )
3080d4b0b6cSBarry Smith #else
3090d4b0b6cSBarry Smith 
3100d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests) \
3110d4b0b6cSBarry Smith { \
3120d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
3130d4b0b6cSBarry Smith }
3140d4b0b6cSBarry Smith 
3150d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests) \
3160d4b0b6cSBarry Smith { \
3170d4b0b6cSBarry Smith   MPI_Startall( number, requests);\
3180d4b0b6cSBarry Smith }
3190d4b0b6cSBarry Smith 
3200d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests) \
3210d4b0b6cSBarry Smith { \
3220d4b0b6cSBarry Smith   MPI_Start( requests);\
3230d4b0b6cSBarry Smith }
3240d4b0b6cSBarry Smith 
32515308354SBarry Smith #endif /* ! PETSC_USING_MPIUNI && ! PARCH_hpux */
326614700edSBarry Smith 
327614700edSBarry Smith #else  /* ------------------------------------------------------------*/
328614700edSBarry Smith 
329614700edSBarry Smith #define PLogFlops(n)
330614700edSBarry Smith 
331614700edSBarry Smith #if defined (HAVE_MPE)
332614700edSBarry Smith #define MPEBEGIN    1000
333614700edSBarry Smith extern int PLogMPEBegin();
334614700edSBarry Smith extern int PLogMPEDump(char *);
33577c4ece6SBarry Smith #else
336bf343e40SBarry Smith #define PLogEventMPEActivate(a) 0
337bf343e40SBarry Smith #define PLogEventMPEDeactivate(a) 0
338614700edSBarry Smith #endif
339614700edSBarry Smith 
340bf343e40SBarry Smith #define PLogEventActivate(a) 0
341bf343e40SBarry Smith #define PLogEventDeactivate(a) 0
342614700edSBarry Smith 
343bf343e40SBarry Smith #define PLogEventActivateClass(a) 0
344bf343e40SBarry Smith #define PLogEventDeactivateClass(a) 0
34577c4ece6SBarry Smith 
346b3bbe94bSBarry Smith #define _PLogPLB                        0
347b3bbe94bSBarry Smith #define _PLogPLE                        0
348b3bbe94bSBarry Smith #define _PLogPHC                        0
349b3bbe94bSBarry Smith #define _PLogPHD                        0
350a5558d3fSBarry Smith #define PetscGetFlops()               0.0
351d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
352d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
353d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c)
354d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c)
355d7a720efSLois Curfman McInnes #define PLogObjectCreate(h)
356d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h)
357d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m)
358d7a720efSLois Curfman McInnes #define PLogDestroy()
359bf343e40SBarry Smith #define PLogStagePush(a)
360d7a720efSLois Curfman McInnes #define PLogStagePop()
361d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b)
362d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file)
363d7a720efSLois Curfman McInnes #define PLogBegin()
364bc1211c7SBarry Smith #define PLogTraceBegin(file)
365bc1211c7SBarry Smith #define PLogSet(lb,le)
366d7a720efSLois Curfman McInnes #define PLogAllBegin()
367d7a720efSLois Curfman McInnes #define PLogDump(char)
368dc4777aeSSatish Balay #define PLogEventRegister(a,b,c) 0
369d7a720efSLois Curfman McInnes #define PLogMPEBegin()
370d7a720efSLois Curfman McInnes #define PLogMPEDump(a)
3717f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
372ce6058e1SBarry Smith 
373ce6058e1SBarry Smith /* If PETSC_LOG is NOT defined, these still need to be! */
374ce6058e1SBarry Smith #define MPI_Startall_irecv( count,number,requests) \
375ce6058e1SBarry Smith { \
376ce6058e1SBarry Smith   MPI_Startall( number, requests);\
377ce6058e1SBarry Smith }
378ce6058e1SBarry Smith 
379ce6058e1SBarry Smith #define MPI_Startall_isend( count,number,requests) \
380ce6058e1SBarry Smith { \
381ce6058e1SBarry Smith   MPI_Startall( number, requests);\
382ce6058e1SBarry Smith }
383ce6058e1SBarry Smith 
384ce6058e1SBarry Smith #define MPI_Start_isend(count,  requests) \
385ce6058e1SBarry Smith { \
386ce6058e1SBarry Smith   MPI_Start( requests);\
387ce6058e1SBarry Smith }
388ce6058e1SBarry Smith #endif   /* PETSC_LOG */
3896daaf66cSBarry Smith 
3908b6d568bSLois Curfman McInnes /*MC
39119b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
39219b02663SBarry Smith 
39319b02663SBarry Smith    Input Parameter:
39419b02663SBarry Smith .  f - flop counter
39519b02663SBarry Smith 
39619b02663SBarry Smith    Synopsis:
397682ac3c9SWilliam Gropp    void PLogFlops(int f)
39819b02663SBarry Smith 
39919b02663SBarry Smith    Notes:
40019b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
40119b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
40219b02663SBarry Smith    application code.
40319b02663SBarry Smith 
40419b02663SBarry Smith    PETSc automatically logs library events if the code has been
40519b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
40619b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
40719b02663SBarry Smith    intended for logging user flops to supplement this PETSc
40819b02663SBarry Smith    information.
40919b02663SBarry Smith 
41019b02663SBarry Smith     Example of Usage:
41135aab85fSBarry Smith $     int USER_EVENT;
412b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
41319b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
41419b02663SBarry Smith $        [code segment to monitor]
41519b02663SBarry Smith $        PLogFlops(user_flops)
41619b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
41719b02663SBarry Smith 
41858cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops()
41919b02663SBarry Smith 
420edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations
42119b02663SBarry Smith M*/
42219b02663SBarry Smith 
42397bb86f7SLois Curfman McInnes 
424d7a720efSLois Curfman McInnes /*MC
42519b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
42697bb86f7SLois Curfman McInnes 
42797bb86f7SLois Curfman McInnes    Input Parameters:
42835aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
42997bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
43097bb86f7SLois Curfman McInnes 
43197bb86f7SLois Curfman McInnes    Synopsis:
432682ac3c9SWilliam Gropp    void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
43397bb86f7SLois Curfman McInnes                   PetscObject o4)
43497bb86f7SLois Curfman McInnes 
43597bb86f7SLois Curfman McInnes    Notes:
43697bb86f7SLois Curfman McInnes    You should also register each integer event with the command
43797bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
43897bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
43997bb86f7SLois Curfman McInnes 
44097bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
44197bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
44297bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
44397bb86f7SLois Curfman McInnes    to supplement this PETSc information.
44497bb86f7SLois Curfman McInnes 
44597bb86f7SLois Curfman McInnes     Example of Usage:
44635aab85fSBarry Smith $     int USER_EVENT;
4470eb211faSLois Curfman McInnes $     int user_event_flops;
448b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
44935aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
45097bb86f7SLois Curfman McInnes $        [code segment to monitor]
4510eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
45235aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
45397bb86f7SLois Curfman McInnes 
45497bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
45597bb86f7SLois Curfman McInnes 
45697bb86f7SLois Curfman McInnes .keywords: log, event, begin
45797bb86f7SLois Curfman McInnes M*/
45897bb86f7SLois Curfman McInnes 
459d7a720efSLois Curfman McInnes /*MC
46019b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
46197bb86f7SLois Curfman McInnes 
46297bb86f7SLois Curfman McInnes    Input Parameters:
46335aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
46497bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
46597bb86f7SLois Curfman McInnes 
46697bb86f7SLois Curfman McInnes    Synopsis:
467682ac3c9SWilliam Gropp    void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
46897bb86f7SLois Curfman McInnes                 PetscObject o4)
46997bb86f7SLois Curfman McInnes 
47097bb86f7SLois Curfman McInnes    Notes:
471b951964fSBarry Smith    You should also register each additional integer event with the command
47297bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
47397bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
47497bb86f7SLois Curfman McInnes 
47597bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
47697bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
47797bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
47897bb86f7SLois Curfman McInnes    to supplement this PETSc information.
47997bb86f7SLois Curfman McInnes 
48097bb86f7SLois Curfman McInnes     Example of Usage:
48135aab85fSBarry Smith $     int USER_EVENT;
4820eb211faSLois Curfman McInnes $     int user_event_flops;
483b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
48497bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
48597bb86f7SLois Curfman McInnes $        [code segment to monitor]
4860eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
48797bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
48897bb86f7SLois Curfman McInnes 
48997bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
49097bb86f7SLois Curfman McInnes 
49197bb86f7SLois Curfman McInnes .keywords: log, event, end
49297bb86f7SLois Curfman McInnes M*/
49397bb86f7SLois Curfman McInnes 
494e0937024SBarry Smith 
49597bb86f7SLois Curfman McInnes #endif
49641debaddSBarry Smith 
49777c4ece6SBarry Smith 
49877c4ece6SBarry Smith 
499