xref: /petsc/include/petsclog.h (revision 477943449e2864a77f1dd32f813783b66ec5aa87)
1*47794344SBarry Smith /* $Id: petsclog.h,v 1.103 1997/03/06 21:38:32 balay 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 
11*47794344SBarry Smith typedef double PLogDouble;
12*47794344SBarry Smith 
1397bb86f7SLois Curfman McInnes /*
147588ac45SBarry Smith   Lists all PETSc events that are logged/profiled.
157588ac45SBarry Smith 
16a2ce50c7SBarry Smith   If you add an event here, make sure you add it to
17a2ce50c7SBarry Smith   petsc/bin/petscview.cfg,
18a2ce50c7SBarry Smith   petsc/bin/petscview,
19a2ce50c7SBarry Smith   petsc/src/plog/src/plog.c,
20a2ce50c7SBarry Smith   petsc/src/plog/src/plogmpe.c and
21e10960a1SSatish Balay   petsc/include/FINCLUDE/petsclog.h!!!
2297bb86f7SLois Curfman McInnes */
2397bb86f7SLois Curfman McInnes #define MAT_Mult                                0
241ff317f7SLois Curfman McInnes #define MAT_MatrixFreeMult                      1
251ff317f7SLois Curfman McInnes #define MAT_AssemblyBegin                       2
261ff317f7SLois Curfman McInnes #define MAT_AssemblyEnd                         3
271ff317f7SLois Curfman McInnes #define MAT_GetReordering                       4
281ff317f7SLois Curfman McInnes #define MAT_MultTrans                           5
291ff317f7SLois Curfman McInnes #define MAT_MultAdd                             6
301ff317f7SLois Curfman McInnes #define MAT_MultTransAdd                        7
311ff317f7SLois Curfman McInnes #define MAT_LUFactor                            8
321ff317f7SLois Curfman McInnes #define MAT_CholeskyFactor                      9
331ff317f7SLois Curfman McInnes #define MAT_LUFactorSymbolic                    10
341ff317f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic                   11
351ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic              12
361ff317f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic    13
371ff317f7SLois Curfman McInnes #define MAT_LUFactorNumeric                     14
381ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric               15
391ff317f7SLois Curfman McInnes #define MAT_Relax                               16
401ff317f7SLois Curfman McInnes #define MAT_Copy                                17
411ff317f7SLois Curfman McInnes #define MAT_Convert                             18
421ff317f7SLois Curfman McInnes #define MAT_Scale                               19
431ff317f7SLois Curfman McInnes #define MAT_ZeroEntries                         20
441ff317f7SLois Curfman McInnes #define MAT_Solve                               21
451ff317f7SLois Curfman McInnes #define MAT_SolveAdd                            22
461ff317f7SLois Curfman McInnes #define MAT_SolveTrans                          23
471ff317f7SLois Curfman McInnes #define MAT_SolveTransAdd                       24
481ff317f7SLois Curfman McInnes #define MAT_SetValues                           25
491ff317f7SLois Curfman McInnes #define MAT_ForwardSolve                        26
501ff317f7SLois Curfman McInnes #define MAT_BackwardSolve                       27
511ff317f7SLois Curfman McInnes #define MAT_Load                                28
521ff317f7SLois Curfman McInnes #define MAT_View                                29
531ff317f7SLois Curfman McInnes #define MAT_ILUFactor                           30
543e584e2eSBarry Smith #define MAT_GetColoring                         31
551ff317f7SLois Curfman McInnes #define MAT_GetSubMatrices                      32
561ff317f7SLois Curfman McInnes #define MAT_GetValues                           33
571ff317f7SLois Curfman McInnes #define MAT_IncreaseOverlap                     34
58dd8bebb4SSatish Balay #define MAT_GetRow                              35
5997bb86f7SLois Curfman McInnes 
604dcbc457SBarry Smith #define VEC_Dot                                 40
614dcbc457SBarry Smith #define VEC_Norm                                41
624dcbc457SBarry Smith #define VEC_Max                                 42
634dcbc457SBarry Smith #define VEC_Min                                 43
644dcbc457SBarry Smith #define VEC_TDot                                44
654dcbc457SBarry Smith #define VEC_Scale                               45
664dcbc457SBarry Smith #define VEC_Copy                                46
674dcbc457SBarry Smith #define VEC_Set                                 47
684dcbc457SBarry Smith #define VEC_AXPY                                48
694dcbc457SBarry Smith #define VEC_AYPX                                49
704dcbc457SBarry Smith #define VEC_Swap                                50
714dcbc457SBarry Smith #define VEC_WAXPY                               51
724dcbc457SBarry Smith #define VEC_AssemblyBegin                       52
734dcbc457SBarry Smith #define VEC_AssemblyEnd                         53
744dcbc457SBarry Smith #define VEC_MTDot                               54
754dcbc457SBarry Smith #define VEC_MDot                                55
764dcbc457SBarry Smith #define VEC_MAXPY                               56
774dcbc457SBarry Smith #define VEC_PMult                               57
784dcbc457SBarry Smith #define VEC_SetValues                           58
794dcbc457SBarry Smith #define VEC_Load                                59
804dcbc457SBarry Smith #define VEC_View                                60
814dcbc457SBarry Smith #define VEC_ScatterBegin                        61
824dcbc457SBarry Smith #define VEC_ScatterEnd                          62
83bf5bf444SLois Curfman McInnes #define VEC_SetRandom                           63
8497bb86f7SLois Curfman McInnes 
854dcbc457SBarry Smith #define SLES_Solve                              70
864dcbc457SBarry Smith #define SLES_SetUp                              71
8797bb86f7SLois Curfman McInnes 
884dcbc457SBarry Smith #define KSP_GMRESOrthogonalization              72
8997bb86f7SLois Curfman McInnes 
901bffabb2SLois Curfman McInnes #define PC_ModifySubMatrices                    74
914dcbc457SBarry Smith #define PC_SetUp                                75
9236058207SBarry Smith #define PC_SetUpOnBlocks                        76
9332284f49SSatish Balay #define PC_Apply                                77
94614700edSBarry Smith #define PC_ApplySymmetricLeft                   78
95614700edSBarry Smith #define PC_ApplySymmetricRight                  79
964dcbc457SBarry Smith 
974dcbc457SBarry Smith #define SNES_Solve                              80
984dcbc457SBarry Smith #define SNES_LineSearch                         81
994dcbc457SBarry Smith #define SNES_FunctionEval                       82
1004dcbc457SBarry Smith #define SNES_JacobianEval                       83
1014dcbc457SBarry Smith #define SNES_MinimizationFunctionEval           84
1024dcbc457SBarry Smith #define SNES_GradientEval                       85
1034dcbc457SBarry Smith #define SNES_HessianEval                        86
1044dcbc457SBarry Smith 
105682d7d0cSBarry Smith #define TS_Step                                 90
106bf343e40SBarry Smith #define TS_PseudoComputeTimeStep                91
10772936c9dSBarry Smith 
10872936c9dSBarry Smith #define Petsc_Barrier                           100
10955206aebSLois Curfman McInnes 
1100513a670SBarry Smith #define EC_SetUp                                105
1110513a670SBarry Smith #define EC_Solve                                106
1120513a670SBarry Smith 
11355206aebSLois Curfman McInnes #define DFVec_RefineVector                      110
11455206aebSLois Curfman McInnes #define DFVec_AssembleFullVector                111
11555206aebSLois Curfman McInnes #define DFVec_GetComponentVectors               112
11655206aebSLois Curfman McInnes #define DFVec_DrawContours                      113
11755206aebSLois Curfman McInnes 
11841debaddSBarry Smith /*
119b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
12077c4ece6SBarry Smith    for applications.  Make sure that src/plog/src/plog.c defines enough
121b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
12241debaddSBarry Smith */
12335aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1244dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
12597bb86f7SLois Curfman McInnes 
12619b02663SBarry Smith /* Global flop counter */
127*47794344SBarry Smith extern PLogDouble _TotalFlops;
12819b02663SBarry Smith 
129edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */
13094a424c1SBarry Smith extern int PLogInfo(void*,char*,...);
131cfd8f56bSLois Curfman McInnes extern int PLogInfoDeactivateClass(int);
132614700edSBarry Smith extern int PLogInfoActivateClass(int);
13343a90d84SBarry Smith extern int PLogPrintInfo;  /* if 1, indicates PLogInfo() is turned on */
134614700edSBarry Smith 
135614700edSBarry Smith #if defined(PETSC_LOG)  /* --------------------------------------------*/
136614700edSBarry Smith 
137a2ce50c7SBarry Smith #define PLogFlops(n) {_TotalFlops += (n);}
13877c4ece6SBarry Smith 
13977c4ece6SBarry Smith #if defined (HAVE_MPE)
14077c4ece6SBarry Smith #include "mpe.h"
141614700edSBarry Smith #define MPEBEGIN    1000
14277c4ece6SBarry Smith extern int PLogMPEBegin();
14377c4ece6SBarry Smith extern int PLogMPEDump(char *);
144614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[];
145614700edSBarry Smith extern int PLogEventMPEActivate(int);
146905e6a2fSBarry Smith extern int PLogEventMPEDeactivate(int);
147614700edSBarry Smith #else
148c74530a3SSatish Balay #define PLogEventMPEActivate(a) 0
149c74530a3SSatish Balay #define PLogEventMPEDeactivate(a) 0
15077c4ece6SBarry Smith #endif
15177c4ece6SBarry Smith 
152614700edSBarry Smith extern int PLogEventActivate(int);
153905e6a2fSBarry Smith extern int PLogEventDeactivate(int);
154614700edSBarry Smith 
1553e584e2eSBarry Smith extern int PLogEventActivateClass(int);
1563e584e2eSBarry Smith extern int PLogEventDeactivateClass(int);
157614700edSBarry Smith 
158614700edSBarry Smith extern int PLogEventFlags[];
159b3bbe94bSBarry Smith extern int (*_PLogPLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
160b3bbe94bSBarry Smith extern int (*_PLogPLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
161b3bbe94bSBarry Smith extern int (*_PLogPHC)(PetscObject);
162b3bbe94bSBarry Smith extern int (*_PLogPHD)(PetscObject);
16377c4ece6SBarry Smith 
16477c4ece6SBarry Smith #if defined(HAVE_MPE)
16577c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
16677c4ece6SBarry Smith   { _tacky++; \
167b3bbe94bSBarry Smith    if (_PLogPLB && PLogEventFlags[e]) \
168b3bbe94bSBarry Smith      (*_PLogPLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
169614700edSBarry Smith    if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
17077c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e,0,"");\
17177c4ece6SBarry Smith   }
17277c4ece6SBarry Smith #else
17377c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
17477c4ece6SBarry Smith   { _tacky++; \
175b3bbe94bSBarry Smith    if (_PLogPLB && PLogEventFlags[e]) \
176b3bbe94bSBarry Smith      (*_PLogPLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
17777c4ece6SBarry Smith   }
17877c4ece6SBarry Smith #endif
17977c4ece6SBarry Smith 
18077c4ece6SBarry Smith #if defined(HAVE_MPE)
18177c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
182b3bbe94bSBarry Smith   if (_PLogPLE && PLogEventFlags[e]) \
183b3bbe94bSBarry Smith     (*_PLogPLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
184614700edSBarry Smith   if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
18577c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e+1,0,"");\
18677c4ece6SBarry Smith   }  _tacky--;}
18777c4ece6SBarry Smith #else
18877c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
189b3bbe94bSBarry Smith   if (_PLogPLE && PLogEventFlags[e]) \
190b3bbe94bSBarry Smith     (*_PLogPLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
19177c4ece6SBarry Smith   } _tacky--;}
19277c4ece6SBarry Smith #endif
19377c4ece6SBarry Smith 
19477c4ece6SBarry Smith 
19577c4ece6SBarry Smith #define PLogObjectParent(p,c)       {PetscValidHeader((PetscObject)c); \
19677c4ece6SBarry Smith                                      PetscValidHeader((PetscObject)p);\
19777c4ece6SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
19877c4ece6SBarry Smith #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
19977c4ece6SBarry Smith                                     PLogObjectParent(p,(d)[_i]);}
200b3bbe94bSBarry Smith #define PLogObjectCreate(h)         {if (_PLogPHC) (*_PLogPHC)((PetscObject)h);}
201b3bbe94bSBarry Smith #define PLogObjectDestroy(h)        {if (_PLogPHD) (*_PLogPHD)((PetscObject)h);}
20277c4ece6SBarry Smith #define PLogObjectMemory(p,m)       {PetscValidHeader((PetscObject)p);\
20377c4ece6SBarry Smith                                     ((PetscObject)(p))->mem += (m);}
20477c4ece6SBarry Smith extern int        PLogObjectState(PetscObject,char *,...);
20577c4ece6SBarry Smith extern int        PLogDestroy();
20677c4ece6SBarry Smith extern int        PLogStagePush(int);
20777c4ece6SBarry Smith extern int        PLogStagePop();
20877c4ece6SBarry Smith extern int        PLogStageRegister(int,char*);
2093044e3d5SSatish Balay extern int        PLogPrintSummary(MPI_Comm,char *);
210edde42fcSLois Curfman McInnes extern int        PLogBegin();
211bc1211c7SBarry Smith extern int        PLogTraceBegin(FILE *);
212edde42fcSLois Curfman McInnes extern int        PLogAllBegin();
213bc1211c7SBarry Smith extern int        PLogSet(int (*)(int,int,PetscObject,PetscObject,PetscObject,PetscObject),
214bc1211c7SBarry Smith                           int (*)(int,int,PetscObject,PetscObject,PetscObject,PetscObject));
215edde42fcSLois Curfman McInnes extern int        PLogDump(char*);
216edde42fcSLois Curfman McInnes extern int        PLogEventRegister(int*,char*,char*);
217*47794344SBarry Smith extern PLogDouble PetscGetFlops();
21877c4ece6SBarry Smith 
219*47794344SBarry Smith extern PLogDouble irecv_ct, isend_ct, wait_ct, wait_any_ct, recv_ct, send_ct;
220*47794344SBarry Smith extern PLogDouble irecv_len, isend_len, recv_len, send_len;
221*47794344SBarry Smith extern PLogDouble wait_all_ct,allreduce_ct,sum_of_waits_ct;
222ce85283eSBarry Smith /*
22384cb2905SBarry Smith      This does not work for MPI-Uni because our src/mpiuni/mpi.h file
224ce85283eSBarry Smith    uses macros to defined the MPI operations.
22515308354SBarry Smith 
22615308354SBarry Smith      It does not work correctly from HP-UX because it processes the
22715308354SBarry Smith    macros in a way that sometimes it double counts.
2287c1e34a4SSatish Balay 
2297c1e34a4SSatish Balay      It does not work with Windows NT because winmpich lacks MPI_Type_size()
230ce85283eSBarry Smith */
231a1f2733dSSatish Balay #if !defined(PETSC_USING_MPIUNI) && !defined(PARCH_hpux) && !defined (PARCH_nt)
23277a39924SBarry Smith /*
23377a39924SBarry Smith    Logging of MPI activities
23477a39924SBarry Smith */
23577a39924SBarry Smith 
23677a39924SBarry Smith #define TypeSize(buff,count,type)                                            \
23777a39924SBarry Smith {                                                                            \
23877a39924SBarry Smith   if (type == MPIU_SCALAR) {                                                 \
239*47794344SBarry Smith     buff += (PLogDouble) ((count)*sizeof(Scalar));                               \
24077a39924SBarry Smith   } else if (type == MPI_INT) {                                              \
241*47794344SBarry Smith     buff += (PLogDouble) ((count)*sizeof(int));                                  \
24277a39924SBarry Smith   } else {                                                                   \
243*47794344SBarry Smith     int _size; MPI_Type_size(type,&_size); buff += (PLogDouble) ((count)*_size); \
24477a39924SBarry Smith   }                                                                          \
24577a39924SBarry Smith }
24677a39924SBarry Smith 
24777a39924SBarry Smith #define MPI_Irecv( buf, count,  datatype, source, tag, comm, request)        \
24877a39924SBarry Smith {                                                                            \
24977a39924SBarry Smith   MPI_Irecv( buf, count,  datatype, source, tag, comm, request);             \
25077a39924SBarry Smith   irecv_ct++; TypeSize(irecv_len,count,datatype);                            \
25177a39924SBarry Smith }
25215308354SBarry Smith 
25377a39924SBarry Smith #define MPI_Isend( buf, count,  datatype, dest, tag, comm, request)          \
25477a39924SBarry Smith {                                                                            \
25577a39924SBarry Smith   MPI_Isend( buf, count,  datatype, dest, tag, comm, request);               \
256e0937024SBarry Smith   isend_ct++;   TypeSize(isend_len,count,datatype);                          \
25777a39924SBarry Smith }
25815308354SBarry Smith 
2590d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests)                            \
2600d4b0b6cSBarry Smith {                                                                             \
2610d4b0b6cSBarry Smith   MPI_Startall( number, requests);                                            \
262*47794344SBarry Smith   irecv_ct += (PLogDouble)(number); irecv_len += (PLogDouble) (count*sizeof(Scalar)); \
2630d4b0b6cSBarry Smith }
2640d4b0b6cSBarry Smith 
2650d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests)                            \
2660d4b0b6cSBarry Smith {                                                                             \
2670d4b0b6cSBarry Smith   MPI_Startall( number, requests);                                            \
268*47794344SBarry Smith   isend_ct += (PLogDouble)(number); isend_len += (PLogDouble) (count*sizeof(Scalar)); \
2690d4b0b6cSBarry Smith }
2700d4b0b6cSBarry Smith 
2710d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests)                                     \
2720d4b0b6cSBarry Smith {                                                                             \
2730d4b0b6cSBarry Smith   MPI_Start( requests);                                                       \
274*47794344SBarry Smith   isend_ct++; isend_len += (PLogDouble) (count*sizeof(Scalar));                   \
2750d4b0b6cSBarry Smith }
2760d4b0b6cSBarry Smith 
277ce85283eSBarry Smith #define MPI_Recv( buf, count,  datatype, source, tag, comm, status)           \
278ce85283eSBarry Smith {                                                                             \
279ce85283eSBarry Smith   MPI_Recv( buf, count,  datatype, source, tag, comm, status);                \
280ce85283eSBarry Smith   recv_ct++; TypeSize(recv_len,count,datatype);                               \
281ce85283eSBarry Smith }
28215308354SBarry Smith 
28377a39924SBarry Smith #define MPI_Send( buf, count,  datatype, dest, tag, comm)                     \
28477a39924SBarry Smith {                                                                             \
28577a39924SBarry Smith   MPI_Send( buf, count,  datatype, dest, tag, comm);                          \
286e0937024SBarry Smith   send_ct++;  TypeSize(send_len,count,datatype);                              \
28777a39924SBarry Smith }
28877a39924SBarry Smith 
28977a39924SBarry Smith #define MPI_Wait(request, status) \
29077a39924SBarry Smith (                                 \
291e0937024SBarry Smith   wait_ct++, sum_of_waits_ct++,   \
29277a39924SBarry Smith   MPI_Wait(request, status)       \
29377a39924SBarry Smith )
29477a39924SBarry Smith 
29577a39924SBarry Smith #define MPI_Waitany(a, b, c, d)     \
29677a39924SBarry Smith (                                   \
297e0937024SBarry Smith   wait_any_ct++, sum_of_waits_ct++, \
29877a39924SBarry Smith   MPI_Waitany(a, b, c, d)           \
29977a39924SBarry Smith )
30077a39924SBarry Smith 
30177a39924SBarry Smith #define MPI_Waitall(count, array_of_requests, array_of_statuses) \
30277a39924SBarry Smith (                                                                \
303*47794344SBarry Smith   wait_all_ct++, sum_of_waits_ct += (PLogDouble) (count),            \
30477a39924SBarry Smith   MPI_Waitall(count, array_of_requests, array_of_statuses)       \
30577a39924SBarry Smith )
30677a39924SBarry Smith 
30777a39924SBarry Smith #define MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
30877a39924SBarry Smith (                                                                    \
30977a39924SBarry Smith   allreduce_ct++,                                                    \
31077a39924SBarry Smith   MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm)       \
31177a39924SBarry Smith )
3120d4b0b6cSBarry Smith #else
3130d4b0b6cSBarry Smith 
3140d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests) \
3150d4b0b6cSBarry Smith {                                                  \
3160d4b0b6cSBarry Smith   MPI_Startall( number, requests);                 \
3170d4b0b6cSBarry Smith }
3180d4b0b6cSBarry Smith 
3190d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests) \
3200d4b0b6cSBarry Smith {                                                  \
3210d4b0b6cSBarry Smith   MPI_Startall( number, requests);                 \
3220d4b0b6cSBarry Smith }
3230d4b0b6cSBarry Smith 
3240d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests) \
3250d4b0b6cSBarry Smith {                                         \
3260d4b0b6cSBarry Smith   MPI_Start( requests);                   \
3270d4b0b6cSBarry Smith }
3280d4b0b6cSBarry Smith 
32915308354SBarry Smith #endif /* ! PETSC_USING_MPIUNI && ! PARCH_hpux */
330614700edSBarry Smith 
331614700edSBarry Smith #else  /* ------------------------------------------------------------*/
332614700edSBarry Smith 
333614700edSBarry Smith #define PLogFlops(n)
334614700edSBarry Smith 
335614700edSBarry Smith #if defined (HAVE_MPE)
336614700edSBarry Smith #define MPEBEGIN    1000
337614700edSBarry Smith extern int PLogMPEBegin();
338614700edSBarry Smith extern int PLogMPEDump(char *);
33977c4ece6SBarry Smith #else
340bf343e40SBarry Smith #define PLogEventMPEActivate(a)   0
341bf343e40SBarry Smith #define PLogEventMPEDeactivate(a) 0
342614700edSBarry Smith #endif
343614700edSBarry Smith 
344bf343e40SBarry Smith #define PLogEventActivate(a)   0
345bf343e40SBarry Smith #define PLogEventDeactivate(a) 0
346614700edSBarry Smith 
347bf343e40SBarry Smith #define PLogEventActivateClass(a)   0
348bf343e40SBarry Smith #define PLogEventDeactivateClass(a) 0
34977c4ece6SBarry Smith 
350b3bbe94bSBarry Smith #define _PLogPLB                        0
351b3bbe94bSBarry Smith #define _PLogPLE                        0
352b3bbe94bSBarry Smith #define _PLogPHC                        0
353b3bbe94bSBarry Smith #define _PLogPHD                        0
354a5558d3fSBarry Smith #define PetscGetFlops()               0.0
355d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
356d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
357d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c)
358d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c)
359d7a720efSLois Curfman McInnes #define PLogObjectCreate(h)
360d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h)
361d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m)
362d7a720efSLois Curfman McInnes #define PLogDestroy()
363bf343e40SBarry Smith #define PLogStagePush(a)
364d7a720efSLois Curfman McInnes #define PLogStagePop()
365d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b)
366d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file)
367d7a720efSLois Curfman McInnes #define PLogBegin()
368974088aaSSatish Balay #define PLogTraceBegin(file)            0
369bc1211c7SBarry Smith #define PLogSet(lb,le)
370d7a720efSLois Curfman McInnes #define PLogAllBegin()
371d7a720efSLois Curfman McInnes #define PLogDump(char)
372dc4777aeSSatish Balay #define PLogEventRegister(a,b,c)        0
373d7a720efSLois Curfman McInnes #define PLogMPEBegin()
374d7a720efSLois Curfman McInnes #define PLogMPEDump(a)
3757f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
376ce6058e1SBarry Smith 
377ce6058e1SBarry Smith /* If PETSC_LOG is NOT defined, these still need to be! */
378ce6058e1SBarry Smith #define MPI_Startall_irecv( count,number,requests) \
379ce6058e1SBarry Smith {                                                  \
380ce6058e1SBarry Smith   MPI_Startall( number, requests);                 \
381ce6058e1SBarry Smith }
382ce6058e1SBarry Smith 
383ce6058e1SBarry Smith #define MPI_Startall_isend( count,number,requests) \
384ce6058e1SBarry Smith {                                                  \
385ce6058e1SBarry Smith   MPI_Startall( number, requests);                 \
386ce6058e1SBarry Smith }
387ce6058e1SBarry Smith 
388ce6058e1SBarry Smith #define MPI_Start_isend(count,  requests) \
389ce6058e1SBarry Smith {                                         \
390ce6058e1SBarry Smith   MPI_Start( requests);                   \
391ce6058e1SBarry Smith }
392ce6058e1SBarry Smith #endif   /* PETSC_LOG */
3936daaf66cSBarry Smith 
3948b6d568bSLois Curfman McInnes /*MC
39519b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
39619b02663SBarry Smith 
39719b02663SBarry Smith    Input Parameter:
39819b02663SBarry Smith .  f - flop counter
39919b02663SBarry Smith 
40019b02663SBarry Smith    Synopsis:
401682ac3c9SWilliam Gropp    void PLogFlops(int f)
40219b02663SBarry Smith 
40319b02663SBarry Smith    Notes:
40419b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
40519b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
40619b02663SBarry Smith    application code.
40719b02663SBarry Smith 
40819b02663SBarry Smith    PETSc automatically logs library events if the code has been
40919b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
41019b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
41119b02663SBarry Smith    intended for logging user flops to supplement this PETSc
41219b02663SBarry Smith    information.
41319b02663SBarry Smith 
41419b02663SBarry Smith     Example of Usage:
41535aab85fSBarry Smith $     int USER_EVENT;
416b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
41719b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
41819b02663SBarry Smith $        [code segment to monitor]
41919b02663SBarry Smith $        PLogFlops(user_flops)
42019b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
42119b02663SBarry Smith 
42258cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops()
42319b02663SBarry Smith 
424edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations
42519b02663SBarry Smith M*/
42619b02663SBarry Smith 
42797bb86f7SLois Curfman McInnes 
428d7a720efSLois Curfman McInnes /*MC
42919b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
43097bb86f7SLois Curfman McInnes 
43197bb86f7SLois Curfman McInnes    Input Parameters:
43235aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
43397bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
43497bb86f7SLois Curfman McInnes 
43597bb86f7SLois Curfman McInnes    Synopsis:
436682ac3c9SWilliam Gropp    void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
43797bb86f7SLois Curfman McInnes                   PetscObject o4)
43897bb86f7SLois Curfman McInnes 
43997bb86f7SLois Curfman McInnes    Notes:
44097bb86f7SLois Curfman McInnes    You should also register each integer event with the command
44197bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
44297bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
44397bb86f7SLois Curfman McInnes 
44497bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
44597bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
44697bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
44797bb86f7SLois Curfman McInnes    to supplement this PETSc information.
44897bb86f7SLois Curfman McInnes 
44997bb86f7SLois Curfman McInnes     Example of Usage:
45035aab85fSBarry Smith $     int USER_EVENT;
4510eb211faSLois Curfman McInnes $     int user_event_flops;
452b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
45335aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
45497bb86f7SLois Curfman McInnes $        [code segment to monitor]
4550eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
45635aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
45797bb86f7SLois Curfman McInnes 
45897bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
45997bb86f7SLois Curfman McInnes 
46097bb86f7SLois Curfman McInnes .keywords: log, event, begin
46197bb86f7SLois Curfman McInnes M*/
46297bb86f7SLois Curfman McInnes 
463d7a720efSLois Curfman McInnes /*MC
46419b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
46597bb86f7SLois Curfman McInnes 
46697bb86f7SLois Curfman McInnes    Input Parameters:
46735aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
46897bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
46997bb86f7SLois Curfman McInnes 
47097bb86f7SLois Curfman McInnes    Synopsis:
471682ac3c9SWilliam Gropp    void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
47297bb86f7SLois Curfman McInnes                 PetscObject o4)
47397bb86f7SLois Curfman McInnes 
47497bb86f7SLois Curfman McInnes    Notes:
475b951964fSBarry Smith    You should also register each additional integer event with the command
47697bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
47797bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
47897bb86f7SLois Curfman McInnes 
47997bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
48097bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
48197bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
48297bb86f7SLois Curfman McInnes    to supplement this PETSc information.
48397bb86f7SLois Curfman McInnes 
48497bb86f7SLois Curfman McInnes     Example of Usage:
48535aab85fSBarry Smith $     int USER_EVENT;
4860eb211faSLois Curfman McInnes $     int user_event_flops;
487b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
48897bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
48997bb86f7SLois Curfman McInnes $        [code segment to monitor]
4900eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
49197bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
49297bb86f7SLois Curfman McInnes 
49397bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
49497bb86f7SLois Curfman McInnes 
49597bb86f7SLois Curfman McInnes .keywords: log, event, end
49697bb86f7SLois Curfman McInnes M*/
49797bb86f7SLois Curfman McInnes 
498e0937024SBarry Smith 
49997bb86f7SLois Curfman McInnes #endif
50041debaddSBarry Smith 
50177c4ece6SBarry Smith 
50277c4ece6SBarry Smith 
50384cb2905SBarry Smith 
50484cb2905SBarry Smith 
50584cb2905SBarry Smith 
506