xref: /petsc/include/petsclog.h (revision 4ad0fe8a5ba1e73220d02c5ce77a686758540188)
1*4ad0fe8aSBarry Smith /* $Id: petsclog.h,v 1.108 1997/07/23 18:22:46 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 
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,
182ee1dbe0SBarry 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
107*4ad0fe8aSBarry Smith /*
108*4ad0fe8aSBarry Smith    Time spent by processors synchronousing for reduction
109*4ad0fe8aSBarry Smith    and then performing it.
110*4ad0fe8aSBarry Smith */
111*4ad0fe8aSBarry Smith #define MPI_ReduceSync                          101
112*4ad0fe8aSBarry Smith #define MPI_ReduceComp                          102
11355206aebSLois Curfman McInnes 
1140513a670SBarry Smith #define EC_SetUp                                105
1150513a670SBarry Smith #define EC_Solve                                106
1160513a670SBarry Smith 
11755206aebSLois Curfman McInnes #define DFVec_RefineVector                      110
11855206aebSLois Curfman McInnes #define DFVec_AssembleFullVector                111
11955206aebSLois Curfman McInnes #define DFVec_GetComponentVectors               112
12055206aebSLois Curfman McInnes #define DFVec_DrawContours                      113
12155206aebSLois Curfman McInnes 
12241debaddSBarry Smith /*
123b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
12477c4ece6SBarry Smith    for applications.  Make sure that src/plog/src/plog.c defines enough
125b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
12641debaddSBarry Smith */
12735aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1284dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
12997bb86f7SLois Curfman McInnes 
13019b02663SBarry Smith /* Global flop counter */
13147794344SBarry Smith extern PLogDouble _TotalFlops;
13219b02663SBarry Smith 
133edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */
13494a424c1SBarry Smith extern int PLogInfo(void*,char*,...);
135cfd8f56bSLois Curfman McInnes extern int PLogInfoDeactivateClass(int);
136614700edSBarry Smith extern int PLogInfoActivateClass(int);
13743a90d84SBarry Smith extern int PLogPrintInfo;  /* if 1, indicates PLogInfo() is turned on */
138614700edSBarry Smith 
139614700edSBarry Smith #if defined(PETSC_LOG)  /* --------------------------------------------*/
140614700edSBarry Smith 
141a2ce50c7SBarry Smith #define PLogFlops(n) {_TotalFlops += (n);}
14277c4ece6SBarry Smith 
14377c4ece6SBarry Smith #if defined (HAVE_MPE)
14477c4ece6SBarry Smith #include "mpe.h"
145614700edSBarry Smith #define MPEBEGIN    1000
14677c4ece6SBarry Smith extern int PLogMPEBegin();
14777c4ece6SBarry Smith extern int PLogMPEDump(char *);
148614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[];
149614700edSBarry Smith extern int PLogEventMPEActivate(int);
150905e6a2fSBarry Smith extern int PLogEventMPEDeactivate(int);
151614700edSBarry Smith #else
152c74530a3SSatish Balay #define PLogEventMPEActivate(a) 0
153c74530a3SSatish Balay #define PLogEventMPEDeactivate(a) 0
15477c4ece6SBarry Smith #endif
15577c4ece6SBarry Smith 
156614700edSBarry Smith extern int PLogEventActivate(int);
157905e6a2fSBarry Smith extern int PLogEventDeactivate(int);
158614700edSBarry Smith 
1593e584e2eSBarry Smith extern int PLogEventActivateClass(int);
1603e584e2eSBarry Smith extern int PLogEventDeactivateClass(int);
161614700edSBarry Smith 
162614700edSBarry Smith extern int PLogEventFlags[];
163b3bbe94bSBarry Smith extern int (*_PLogPLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
164b3bbe94bSBarry Smith extern int (*_PLogPLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
165b3bbe94bSBarry Smith extern int (*_PLogPHC)(PetscObject);
166b3bbe94bSBarry Smith extern int (*_PLogPHD)(PetscObject);
16777c4ece6SBarry Smith 
16877c4ece6SBarry Smith #if defined(HAVE_MPE)
169a1b5d808SSatish Balay #define PLogEventBegin(e,o1,o2,o3,o4)  \
17056cd22aeSBarry Smith   {  \
171b3bbe94bSBarry Smith    if (_PLogPLB && PLogEventFlags[e]) \
17256cd22aeSBarry Smith      (*_PLogPLB)(e,0,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
17356cd22aeSBarry Smith    if (UseMPE && PLogEventMPEFlags[e])\
17477c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e,0,"");\
17577c4ece6SBarry Smith   }
17677c4ece6SBarry Smith #else
177a1b5d808SSatish Balay #define PLogEventBegin(e,o1,o2,o3,o4)  \
17856cd22aeSBarry Smith   {  \
179b3bbe94bSBarry Smith    if (_PLogPLB && PLogEventFlags[e]) \
18056cd22aeSBarry Smith      (*_PLogPLB)(e,0,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
18177c4ece6SBarry Smith   }
18277c4ece6SBarry Smith #endif
18377c4ece6SBarry Smith 
18477c4ece6SBarry Smith #if defined(HAVE_MPE)
18577c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
186b3bbe94bSBarry Smith   if (_PLogPLE && PLogEventFlags[e]) \
18756cd22aeSBarry Smith     (*_PLogPLE)(e,0,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
18856cd22aeSBarry Smith   if (UseMPE && PLogEventMPEFlags[e])\
18977c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e+1,0,"");\
190a1b5d808SSatish Balay   }
19177c4ece6SBarry Smith #else
19277c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
193b3bbe94bSBarry Smith   if (_PLogPLE && PLogEventFlags[e]) \
19456cd22aeSBarry Smith     (*_PLogPLE)(e,0,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
195a1b5d808SSatish Balay   }
19677c4ece6SBarry Smith #endif
19777c4ece6SBarry Smith 
19877c4ece6SBarry Smith 
19977c4ece6SBarry Smith #define PLogObjectParent(p,c)       {PetscValidHeader((PetscObject)c); \
20077c4ece6SBarry Smith                                      PetscValidHeader((PetscObject)p);\
20177c4ece6SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
20277c4ece6SBarry Smith #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
20377c4ece6SBarry Smith                                     PLogObjectParent(p,(d)[_i]);}
204b3bbe94bSBarry Smith #define PLogObjectCreate(h)         {if (_PLogPHC) (*_PLogPHC)((PetscObject)h);}
205b3bbe94bSBarry Smith #define PLogObjectDestroy(h)        {if (_PLogPHD) (*_PLogPHD)((PetscObject)h);}
20677c4ece6SBarry Smith #define PLogObjectMemory(p,m)       {PetscValidHeader((PetscObject)p);\
20777c4ece6SBarry Smith                                     ((PetscObject)(p))->mem += (m);}
20877c4ece6SBarry Smith extern int        PLogObjectState(PetscObject,char *,...);
20977c4ece6SBarry Smith extern int        PLogDestroy();
21077c4ece6SBarry Smith extern int        PLogStagePush(int);
21177c4ece6SBarry Smith extern int        PLogStagePop();
21277c4ece6SBarry Smith extern int        PLogStageRegister(int,char*);
2133044e3d5SSatish Balay extern int        PLogPrintSummary(MPI_Comm,char *);
214edde42fcSLois Curfman McInnes extern int        PLogBegin();
215bc1211c7SBarry Smith extern int        PLogTraceBegin(FILE *);
216edde42fcSLois Curfman McInnes extern int        PLogAllBegin();
217bc1211c7SBarry Smith extern int        PLogSet(int (*)(int,int,PetscObject,PetscObject,PetscObject,PetscObject),
218bc1211c7SBarry Smith                           int (*)(int,int,PetscObject,PetscObject,PetscObject,PetscObject));
219edde42fcSLois Curfman McInnes extern int        PLogDump(char*);
220edde42fcSLois Curfman McInnes extern int        PLogEventRegister(int*,char*,char*);
22147794344SBarry Smith extern PLogDouble PetscGetFlops();
22277c4ece6SBarry Smith 
22347794344SBarry Smith extern PLogDouble irecv_ct, isend_ct, wait_ct, wait_any_ct, recv_ct, send_ct;
22447794344SBarry Smith extern PLogDouble irecv_len, isend_len, recv_len, send_len;
22547794344SBarry Smith extern PLogDouble wait_all_ct,allreduce_ct,sum_of_waits_ct;
226ce85283eSBarry Smith /*
22784cb2905SBarry Smith      This does not work for MPI-Uni because our src/mpiuni/mpi.h file
228ce85283eSBarry Smith    uses macros to defined the MPI operations.
22915308354SBarry Smith 
23015308354SBarry Smith      It does not work correctly from HP-UX because it processes the
23115308354SBarry Smith    macros in a way that sometimes it double counts.
2327c1e34a4SSatish Balay 
2337c1e34a4SSatish Balay      It does not work with Windows NT because winmpich lacks MPI_Type_size()
234ce85283eSBarry Smith */
235a1f2733dSSatish Balay #if !defined(PETSC_USING_MPIUNI) && !defined(PARCH_hpux) && !defined (PARCH_nt)
23677a39924SBarry Smith /*
23777a39924SBarry Smith    Logging of MPI activities
23877a39924SBarry Smith */
23977a39924SBarry Smith 
24077a39924SBarry Smith #define TypeSize(buff,count,type)                                                \
24177a39924SBarry Smith {                                                                                \
24277a39924SBarry Smith   if (type == MPIU_SCALAR) {                                                     \
24347794344SBarry Smith     buff += (PLogDouble) ((count)*sizeof(Scalar));                               \
24477a39924SBarry Smith   } else if (type == MPI_INT) {                                                  \
24547794344SBarry Smith     buff += (PLogDouble) ((count)*sizeof(int));                                  \
24677a39924SBarry Smith   } else {                                                                       \
24747794344SBarry Smith     int _size; MPI_Type_size(type,&_size); buff += (PLogDouble) ((count)*_size); \
24877a39924SBarry Smith   }                                                                              \
24977a39924SBarry Smith }
25077a39924SBarry Smith 
25177a39924SBarry Smith #define MPI_Irecv( buf, count,  datatype, source, tag, comm, request)        \
25277a39924SBarry Smith {                                                                            \
25377a39924SBarry Smith   MPI_Irecv( buf, count,  datatype, source, tag, comm, request);             \
25477a39924SBarry Smith   irecv_ct++; TypeSize(irecv_len,count,datatype);                            \
25577a39924SBarry Smith }
25615308354SBarry Smith 
25777a39924SBarry Smith #define MPI_Isend( buf, count,  datatype, dest, tag, comm, request)          \
25877a39924SBarry Smith {                                                                            \
25977a39924SBarry Smith   MPI_Isend( buf, count,  datatype, dest, tag, comm, request);               \
260e0937024SBarry Smith   isend_ct++;   TypeSize(isend_len,count,datatype);                          \
26177a39924SBarry Smith }
26215308354SBarry Smith 
2630d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests)                                    \
2640d4b0b6cSBarry Smith {                                                                                     \
2650d4b0b6cSBarry Smith   MPI_Startall( number, requests);                                                    \
26647794344SBarry Smith   irecv_ct += (PLogDouble)(number); irecv_len += (PLogDouble) (count*sizeof(Scalar)); \
2670d4b0b6cSBarry Smith }
2680d4b0b6cSBarry Smith 
2690d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests)                                    \
2700d4b0b6cSBarry Smith {                                                                                     \
2710d4b0b6cSBarry Smith   MPI_Startall( number, requests);                                                    \
27247794344SBarry Smith   isend_ct += (PLogDouble)(number); isend_len += (PLogDouble) (count*sizeof(Scalar)); \
2730d4b0b6cSBarry Smith }
2740d4b0b6cSBarry Smith 
2750d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests)                                     \
2760d4b0b6cSBarry Smith {                                                                             \
2770d4b0b6cSBarry Smith   MPI_Start( requests);                                                       \
27847794344SBarry Smith   isend_ct++; isend_len += (PLogDouble) (count*sizeof(Scalar));               \
2790d4b0b6cSBarry Smith }
2800d4b0b6cSBarry Smith 
281ce85283eSBarry Smith #define MPI_Recv( buf, count,  datatype, source, tag, comm, status)           \
282ce85283eSBarry Smith {                                                                             \
283ce85283eSBarry Smith   MPI_Recv( buf, count,  datatype, source, tag, comm, status);                \
284ce85283eSBarry Smith   recv_ct++; TypeSize(recv_len,count,datatype);                               \
285ce85283eSBarry Smith }
28615308354SBarry Smith 
28777a39924SBarry Smith #define MPI_Send( buf, count,  datatype, dest, tag, comm)                     \
28877a39924SBarry Smith {                                                                             \
28977a39924SBarry Smith   MPI_Send( buf, count,  datatype, dest, tag, comm);                          \
290e0937024SBarry Smith   send_ct++;  TypeSize(send_len,count,datatype);                              \
29177a39924SBarry Smith }
29277a39924SBarry Smith 
29377a39924SBarry Smith #define MPI_Wait(request, status) \
29477a39924SBarry Smith (                                 \
295e0937024SBarry Smith   wait_ct++, sum_of_waits_ct++,   \
29677a39924SBarry Smith   MPI_Wait(request, status)       \
29777a39924SBarry Smith )
29877a39924SBarry Smith 
29977a39924SBarry Smith #define MPI_Waitany(a, b, c, d)     \
30077a39924SBarry Smith (                                   \
301e0937024SBarry Smith   wait_any_ct++, sum_of_waits_ct++, \
30277a39924SBarry Smith   MPI_Waitany(a, b, c, d)           \
30377a39924SBarry Smith )
30477a39924SBarry Smith 
30577a39924SBarry Smith #define MPI_Waitall(count, array_of_requests, array_of_statuses) \
30677a39924SBarry Smith (                                                                \
30747794344SBarry Smith   wait_all_ct++, sum_of_waits_ct += (PLogDouble) (count),        \
30877a39924SBarry Smith   MPI_Waitall(count, array_of_requests, array_of_statuses)       \
30977a39924SBarry Smith )
31077a39924SBarry Smith 
31177a39924SBarry Smith #define MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm) \
31277a39924SBarry Smith (                                                                    \
31377a39924SBarry Smith   allreduce_ct++,                                                    \
31477a39924SBarry Smith   MPI_Allreduce( sendbuf,  recvbuf, count, datatype, op, comm)       \
31577a39924SBarry Smith )
3160d4b0b6cSBarry Smith #else
3170d4b0b6cSBarry Smith 
3180d4b0b6cSBarry Smith #define MPI_Startall_irecv( count,number,requests) \
3190d4b0b6cSBarry Smith {                                                  \
3200d4b0b6cSBarry Smith   MPI_Startall( number, requests);                 \
3210d4b0b6cSBarry Smith }
3220d4b0b6cSBarry Smith 
3230d4b0b6cSBarry Smith #define MPI_Startall_isend( count,number,requests) \
3240d4b0b6cSBarry Smith {                                                  \
3250d4b0b6cSBarry Smith   MPI_Startall( number, requests);                 \
3260d4b0b6cSBarry Smith }
3270d4b0b6cSBarry Smith 
3280d4b0b6cSBarry Smith #define MPI_Start_isend(count,  requests) \
3290d4b0b6cSBarry Smith {                                         \
3300d4b0b6cSBarry Smith   MPI_Start( requests);                   \
3310d4b0b6cSBarry Smith }
3320d4b0b6cSBarry Smith 
33315308354SBarry Smith #endif /* ! PETSC_USING_MPIUNI && ! PARCH_hpux */
334614700edSBarry Smith 
335614700edSBarry Smith #else  /* ------------------------------------------------------------*/
336614700edSBarry Smith 
337614700edSBarry Smith #define PLogFlops(n)
338614700edSBarry Smith 
339614700edSBarry Smith #if defined (HAVE_MPE)
340614700edSBarry Smith #define MPEBEGIN    1000
341614700edSBarry Smith extern int PLogMPEBegin();
342614700edSBarry Smith extern int PLogMPEDump(char *);
34377c4ece6SBarry Smith #else
344bf343e40SBarry Smith #define PLogEventMPEActivate(a)   0
345bf343e40SBarry Smith #define PLogEventMPEDeactivate(a) 0
346614700edSBarry Smith #endif
347614700edSBarry Smith 
348bf343e40SBarry Smith #define PLogEventActivate(a)   0
349bf343e40SBarry Smith #define PLogEventDeactivate(a) 0
350614700edSBarry Smith 
351bf343e40SBarry Smith #define PLogEventActivateClass(a)   0
352bf343e40SBarry Smith #define PLogEventDeactivateClass(a) 0
35377c4ece6SBarry Smith 
354b3bbe94bSBarry Smith #define _PLogPLB                        0
355b3bbe94bSBarry Smith #define _PLogPLE                        0
356b3bbe94bSBarry Smith #define _PLogPHC                        0
357b3bbe94bSBarry Smith #define _PLogPHD                        0
358a5558d3fSBarry Smith #define PetscGetFlops()               0.0
359d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
360d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
361d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c)
362d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c)
363d7a720efSLois Curfman McInnes #define PLogObjectCreate(h)
364d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h)
365d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m)
366d7a720efSLois Curfman McInnes #define PLogDestroy()
367bf343e40SBarry Smith #define PLogStagePush(a)
368d7a720efSLois Curfman McInnes #define PLogStagePop()
369d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b)
370d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file)
371d7a720efSLois Curfman McInnes #define PLogBegin()
372974088aaSSatish Balay #define PLogTraceBegin(file)            0
373bc1211c7SBarry Smith #define PLogSet(lb,le)
374d7a720efSLois Curfman McInnes #define PLogAllBegin()
375d7a720efSLois Curfman McInnes #define PLogDump(char)
376dc4777aeSSatish Balay #define PLogEventRegister(a,b,c)        0
377d7a720efSLois Curfman McInnes #define PLogMPEBegin()
378d7a720efSLois Curfman McInnes #define PLogMPEDump(a)
3797f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
380ce6058e1SBarry Smith 
381ce6058e1SBarry Smith /* If PETSC_LOG is NOT defined, these still need to be! */
382ce6058e1SBarry Smith #define MPI_Startall_irecv( count,number,requests) \
383ce6058e1SBarry Smith {                                                  \
384ce6058e1SBarry Smith   MPI_Startall( number, requests);                 \
385ce6058e1SBarry Smith }
386ce6058e1SBarry Smith 
387ce6058e1SBarry Smith #define MPI_Startall_isend( count,number,requests) \
388ce6058e1SBarry Smith {                                                  \
389ce6058e1SBarry Smith   MPI_Startall( number, requests);                 \
390ce6058e1SBarry Smith }
391ce6058e1SBarry Smith 
392ce6058e1SBarry Smith #define MPI_Start_isend(count,  requests) \
393ce6058e1SBarry Smith {                                         \
394ce6058e1SBarry Smith   MPI_Start( requests);                   \
395ce6058e1SBarry Smith }
396ce6058e1SBarry Smith #endif   /* PETSC_LOG */
3976daaf66cSBarry Smith 
3988b6d568bSLois Curfman McInnes /*MC
39919b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
40019b02663SBarry Smith 
40119b02663SBarry Smith    Input Parameter:
40219b02663SBarry Smith .  f - flop counter
40319b02663SBarry Smith 
40419b02663SBarry Smith    Synopsis:
405682ac3c9SWilliam Gropp    void PLogFlops(int f)
40619b02663SBarry Smith 
40719b02663SBarry Smith    Notes:
40819b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
40919b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
41019b02663SBarry Smith    application code.
41119b02663SBarry Smith 
41219b02663SBarry Smith    PETSc automatically logs library events if the code has been
41319b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
41419b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
41519b02663SBarry Smith    intended for logging user flops to supplement this PETSc
41619b02663SBarry Smith    information.
41719b02663SBarry Smith 
41819b02663SBarry Smith     Example of Usage:
41935aab85fSBarry Smith $     int USER_EVENT;
420b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
42119b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
42219b02663SBarry Smith $        [code segment to monitor]
42319b02663SBarry Smith $        PLogFlops(user_flops)
42419b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
42519b02663SBarry Smith 
42658cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops()
42719b02663SBarry Smith 
428edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations
42919b02663SBarry Smith M*/
43019b02663SBarry Smith 
43197bb86f7SLois Curfman McInnes 
432d7a720efSLois Curfman McInnes /*MC
43319b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
43497bb86f7SLois Curfman McInnes 
43597bb86f7SLois Curfman McInnes    Input Parameters:
43635aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
43797bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
43897bb86f7SLois Curfman McInnes 
43997bb86f7SLois Curfman McInnes    Synopsis:
440682ac3c9SWilliam Gropp    void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
44197bb86f7SLois Curfman McInnes                   PetscObject o4)
44297bb86f7SLois Curfman McInnes 
44397bb86f7SLois Curfman McInnes    Notes:
44497bb86f7SLois Curfman McInnes    You should also register each integer event with the command
44597bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
44697bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
44797bb86f7SLois Curfman McInnes 
44897bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
44997bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
45097bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
45197bb86f7SLois Curfman McInnes    to supplement this PETSc information.
45297bb86f7SLois Curfman McInnes 
45397bb86f7SLois Curfman McInnes     Example of Usage:
45435aab85fSBarry Smith $     int USER_EVENT;
4550eb211faSLois Curfman McInnes $     int user_event_flops;
456b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
45735aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
45897bb86f7SLois Curfman McInnes $        [code segment to monitor]
4590eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
46035aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
46197bb86f7SLois Curfman McInnes 
46297bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
46397bb86f7SLois Curfman McInnes 
46497bb86f7SLois Curfman McInnes .keywords: log, event, begin
46597bb86f7SLois Curfman McInnes M*/
46697bb86f7SLois Curfman McInnes 
467d7a720efSLois Curfman McInnes /*MC
46819b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
46997bb86f7SLois Curfman McInnes 
47097bb86f7SLois Curfman McInnes    Input Parameters:
47135aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
47297bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
47397bb86f7SLois Curfman McInnes 
47497bb86f7SLois Curfman McInnes    Synopsis:
475682ac3c9SWilliam Gropp    void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
47697bb86f7SLois Curfman McInnes                 PetscObject o4)
47797bb86f7SLois Curfman McInnes 
47897bb86f7SLois Curfman McInnes    Notes:
479b951964fSBarry Smith    You should also register each additional integer event with the command
48097bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
48197bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
48297bb86f7SLois Curfman McInnes 
48397bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
48497bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
48597bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
48697bb86f7SLois Curfman McInnes    to supplement this PETSc information.
48797bb86f7SLois Curfman McInnes 
48897bb86f7SLois Curfman McInnes     Example of Usage:
48935aab85fSBarry Smith $     int USER_EVENT;
4900eb211faSLois Curfman McInnes $     int user_event_flops;
491b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
49297bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
49397bb86f7SLois Curfman McInnes $        [code segment to monitor]
4940eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
49597bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
49697bb86f7SLois Curfman McInnes 
49797bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
49897bb86f7SLois Curfman McInnes 
49997bb86f7SLois Curfman McInnes .keywords: log, event, end
50097bb86f7SLois Curfman McInnes M*/
50197bb86f7SLois Curfman McInnes 
502e0937024SBarry Smith 
50397bb86f7SLois Curfman McInnes #endif
50441debaddSBarry Smith 
50577c4ece6SBarry Smith 
50677c4ece6SBarry Smith 
50784cb2905SBarry Smith 
50884cb2905SBarry Smith 
50984cb2905SBarry Smith 
510