1*e0937024SBarry Smith /* $Id: plog.h,v 1.76 1996/07/13 15:14:39 curfman Exp bsmith $ */ 297bb86f7SLois Curfman McInnes 397bb86f7SLois Curfman McInnes /* 44c1da538SLois Curfman McInnes Defines high level 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 /* 12a2ce50c7SBarry Smith If you add an event here, make sure you add it to 13a2ce50c7SBarry Smith petsc/bin/petscview.cfg, 14a2ce50c7SBarry Smith petsc/bin/petscview, 15a2ce50c7SBarry Smith petsc/src/plog/src/plog.c, 16a2ce50c7SBarry Smith petsc/src/plog/src/plogmpe.c and 17a2ce50c7SBarry Smith petsc/include/FINCLUDE/plog.h!!! 1897bb86f7SLois Curfman McInnes */ 1997bb86f7SLois Curfman McInnes #define MAT_Mult 0 201ff317f7SLois Curfman McInnes #define MAT_MatrixFreeMult 1 211ff317f7SLois Curfman McInnes #define MAT_AssemblyBegin 2 221ff317f7SLois Curfman McInnes #define MAT_AssemblyEnd 3 231ff317f7SLois Curfman McInnes #define MAT_GetReordering 4 241ff317f7SLois Curfman McInnes #define MAT_MultTrans 5 251ff317f7SLois Curfman McInnes #define MAT_MultAdd 6 261ff317f7SLois Curfman McInnes #define MAT_MultTransAdd 7 271ff317f7SLois Curfman McInnes #define MAT_LUFactor 8 281ff317f7SLois Curfman McInnes #define MAT_CholeskyFactor 9 291ff317f7SLois Curfman McInnes #define MAT_LUFactorSymbolic 10 301ff317f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic 11 311ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic 12 321ff317f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic 13 331ff317f7SLois Curfman McInnes #define MAT_LUFactorNumeric 14 341ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric 15 351ff317f7SLois Curfman McInnes #define MAT_Relax 16 361ff317f7SLois Curfman McInnes #define MAT_Copy 17 371ff317f7SLois Curfman McInnes #define MAT_Convert 18 381ff317f7SLois Curfman McInnes #define MAT_Scale 19 391ff317f7SLois Curfman McInnes #define MAT_ZeroEntries 20 401ff317f7SLois Curfman McInnes #define MAT_Solve 21 411ff317f7SLois Curfman McInnes #define MAT_SolveAdd 22 421ff317f7SLois Curfman McInnes #define MAT_SolveTrans 23 431ff317f7SLois Curfman McInnes #define MAT_SolveTransAdd 24 441ff317f7SLois Curfman McInnes #define MAT_SetValues 25 451ff317f7SLois Curfman McInnes #define MAT_ForwardSolve 26 461ff317f7SLois Curfman McInnes #define MAT_BackwardSolve 27 471ff317f7SLois Curfman McInnes #define MAT_Load 28 481ff317f7SLois Curfman McInnes #define MAT_View 29 491ff317f7SLois Curfman McInnes #define MAT_ILUFactor 30 501ff317f7SLois Curfman McInnes #define MAT_GetSubMatrix 31 511ff317f7SLois Curfman McInnes #define MAT_GetSubMatrices 32 521ff317f7SLois Curfman McInnes #define MAT_GetValues 33 531ff317f7SLois Curfman McInnes #define MAT_IncreaseOverlap 34 54dd8bebb4SSatish Balay #define MAT_GetRow 35 5597bb86f7SLois Curfman McInnes 564dcbc457SBarry Smith #define VEC_Dot 40 574dcbc457SBarry Smith #define VEC_Norm 41 584dcbc457SBarry Smith #define VEC_Max 42 594dcbc457SBarry Smith #define VEC_Min 43 604dcbc457SBarry Smith #define VEC_TDot 44 614dcbc457SBarry Smith #define VEC_Scale 45 624dcbc457SBarry Smith #define VEC_Copy 46 634dcbc457SBarry Smith #define VEC_Set 47 644dcbc457SBarry Smith #define VEC_AXPY 48 654dcbc457SBarry Smith #define VEC_AYPX 49 664dcbc457SBarry Smith #define VEC_Swap 50 674dcbc457SBarry Smith #define VEC_WAXPY 51 684dcbc457SBarry Smith #define VEC_AssemblyBegin 52 694dcbc457SBarry Smith #define VEC_AssemblyEnd 53 704dcbc457SBarry Smith #define VEC_MTDot 54 714dcbc457SBarry Smith #define VEC_MDot 55 724dcbc457SBarry Smith #define VEC_MAXPY 56 734dcbc457SBarry Smith #define VEC_PMult 57 744dcbc457SBarry Smith #define VEC_SetValues 58 754dcbc457SBarry Smith #define VEC_Load 59 764dcbc457SBarry Smith #define VEC_View 60 774dcbc457SBarry Smith #define VEC_ScatterBegin 61 784dcbc457SBarry Smith #define VEC_ScatterEnd 62 79bf5bf444SLois Curfman McInnes #define VEC_SetRandom 63 8097bb86f7SLois Curfman McInnes 814dcbc457SBarry Smith #define SLES_Solve 70 824dcbc457SBarry Smith #define SLES_SetUp 71 8397bb86f7SLois Curfman McInnes 844dcbc457SBarry Smith #define KSP_GMRESOrthogonalization 72 8597bb86f7SLois Curfman McInnes 864dcbc457SBarry Smith #define PC_SetUp 75 8736058207SBarry Smith #define PC_SetUpOnBlocks 76 8832284f49SSatish Balay #define PC_Apply 77 89614700edSBarry Smith #define PC_ApplySymmetricLeft 78 90614700edSBarry Smith #define PC_ApplySymmetricRight 79 914dcbc457SBarry Smith 924dcbc457SBarry Smith #define SNES_Solve 80 934dcbc457SBarry Smith #define SNES_LineSearch 81 944dcbc457SBarry Smith #define SNES_FunctionEval 82 954dcbc457SBarry Smith #define SNES_JacobianEval 83 964dcbc457SBarry Smith #define SNES_MinimizationFunctionEval 84 974dcbc457SBarry Smith #define SNES_GradientEval 85 984dcbc457SBarry Smith #define SNES_HessianEval 86 994dcbc457SBarry Smith 100682d7d0cSBarry Smith #define TS_Step 90 10172936c9dSBarry Smith 10272936c9dSBarry Smith #define Petsc_Barrier 100 10355206aebSLois Curfman McInnes 10455206aebSLois Curfman McInnes #define DFVec_RefineVector 110 10555206aebSLois Curfman McInnes #define DFVec_AssembleFullVector 111 10655206aebSLois Curfman McInnes #define DFVec_GetComponentVectors 112 10755206aebSLois Curfman McInnes #define DFVec_DrawContours 113 10855206aebSLois Curfman McInnes 10941debaddSBarry Smith /* 110b3b1b5bfSLois Curfman McInnes Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved 11177c4ece6SBarry Smith for applications. Make sure that src/plog/src/plog.c defines enough 112b3b1b5bfSLois Curfman McInnes entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH. 11341debaddSBarry Smith */ 11435aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC 120 1154dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH 200 11697bb86f7SLois Curfman McInnes 11719b02663SBarry Smith /* Global flop counter */ 11819b02663SBarry Smith extern double _TotalFlops; 11919b02663SBarry Smith 120edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */ 12194a424c1SBarry Smith extern int PLogInfo(void*,char*,...); 122cfd8f56bSLois Curfman McInnes extern int PLogInfoDeactivateClass(int); 123614700edSBarry Smith extern int PLogInfoActivateClass(int); 124614700edSBarry Smith 125614700edSBarry Smith #if defined(PETSC_LOG) /* --------------------------------------------*/ 126614700edSBarry Smith 127a2ce50c7SBarry Smith #define PLogFlops(n) {_TotalFlops += (n);} 12877c4ece6SBarry Smith 12977c4ece6SBarry Smith #if defined (HAVE_MPE) 13077c4ece6SBarry Smith #include "mpe.h" 131614700edSBarry Smith #define MPEBEGIN 1000 13277c4ece6SBarry Smith extern int PLogMPEBegin(); 13377c4ece6SBarry Smith extern int PLogMPEDump(char *); 134614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[]; 135614700edSBarry Smith extern int PLogEventMPEActivate(int); 136614700edSBarry Smith extern int PLogEventMPEDeActivate(int); 137614700edSBarry Smith #else 138614700edSBarry Smith #define PLogEventMPEActivate(a) 139614700edSBarry Smith #define PLogEventMPEDeActivate(a) 14077c4ece6SBarry Smith #endif 14177c4ece6SBarry Smith 142614700edSBarry Smith extern int PLogEventActivate(int); 143614700edSBarry Smith extern int PLogEventDeActivate(int); 144614700edSBarry Smith 145614700edSBarry Smith extern int PLogEventActivateClass(); 146614700edSBarry Smith extern int PLogEventDeActivateClass(); 147614700edSBarry Smith 148614700edSBarry Smith extern int PLogEventFlags[]; 14977c4ece6SBarry Smith extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject); 15077c4ece6SBarry Smith extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject); 15177c4ece6SBarry Smith extern int (*_PHC)(PetscObject); 15277c4ece6SBarry Smith extern int (*_PHD)(PetscObject); 15377c4ece6SBarry Smith 15477c4ece6SBarry Smith #if defined(HAVE_MPE) 15577c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \ 15677c4ece6SBarry Smith { _tacky++; \ 157614700edSBarry Smith if (_PLB && PLogEventFlags[e]) \ 15877c4ece6SBarry Smith (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\ 159614700edSBarry Smith if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\ 16077c4ece6SBarry Smith MPE_Log_event(MPEBEGIN+2*e,0,"");\ 16177c4ece6SBarry Smith } 16277c4ece6SBarry Smith #else 16377c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \ 16477c4ece6SBarry Smith { _tacky++; \ 165614700edSBarry Smith if (_PLB && PLogEventFlags[e]) \ 16677c4ece6SBarry Smith (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\ 16777c4ece6SBarry Smith } 16877c4ece6SBarry Smith #endif 16977c4ece6SBarry Smith 17077c4ece6SBarry Smith #if defined(HAVE_MPE) 17177c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\ 172614700edSBarry Smith if (_PLE && PLogEventFlags[e]) \ 17377c4ece6SBarry Smith (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\ 174614700edSBarry Smith if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\ 17577c4ece6SBarry Smith MPE_Log_event(MPEBEGIN+2*e+1,0,"");\ 17677c4ece6SBarry Smith } _tacky--;} 17777c4ece6SBarry Smith #else 17877c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\ 179614700edSBarry Smith if (_PLE && PLogEventFlags[e]) \ 18077c4ece6SBarry Smith (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\ 18177c4ece6SBarry Smith } _tacky--;} 18277c4ece6SBarry Smith #endif 18377c4ece6SBarry Smith 18477c4ece6SBarry Smith 18577c4ece6SBarry Smith #define PLogObjectParent(p,c) {PetscValidHeader((PetscObject)c); \ 18677c4ece6SBarry Smith PetscValidHeader((PetscObject)p);\ 18777c4ece6SBarry Smith ((PetscObject)(c))->parent = (PetscObject) p;} 18877c4ece6SBarry Smith #define PLogObjectParents(p,n,d) {int _i; for ( _i=0; _i<n; _i++ ) \ 18977c4ece6SBarry Smith PLogObjectParent(p,(d)[_i]);} 19077c4ece6SBarry Smith #define PLogObjectCreate(h) {if (_PHC) (*_PHC)((PetscObject)h);} 19177c4ece6SBarry Smith #define PLogObjectDestroy(h) {if (_PHD) (*_PHD)((PetscObject)h);} 19277c4ece6SBarry Smith #define PLogObjectMemory(p,m) {PetscValidHeader((PetscObject)p);\ 19377c4ece6SBarry Smith ((PetscObject)(p))->mem += (m);} 19477c4ece6SBarry Smith extern int PLogObjectState(PetscObject,char *,...); 19577c4ece6SBarry Smith extern int PLogDestroy(); 19677c4ece6SBarry Smith extern int PLogStagePush(int); 19777c4ece6SBarry Smith extern int PLogStagePop(); 19877c4ece6SBarry Smith extern int PLogStageRegister(int,char*); 199edde42fcSLois Curfman McInnes extern int PLogPrintSummary(MPI_Comm,FILE *); 200edde42fcSLois Curfman McInnes extern int PLogBegin(); 201edde42fcSLois Curfman McInnes extern int PLogAllBegin(); 202edde42fcSLois Curfman McInnes extern int PLogDump(char*); 203edde42fcSLois Curfman McInnes extern int PLogEventRegister(int*,char*,char*); 204*e0937024SBarry Smith extern double PetscGetFlops(); 20577c4ece6SBarry Smith 20677a39924SBarry Smith #if !defined(PETSC_USING_MPIUNI) 20777a39924SBarry Smith /* 20877a39924SBarry Smith Logging of MPI activities 20977a39924SBarry Smith */ 210*e0937024SBarry Smith extern double irecv_ct,isend_ct,wait_ct,wait_any_ct,recv_ct,send_ct; 211*e0937024SBarry Smith extern double irecv_len,isend_len,recv_len,send_len; 212*e0937024SBarry Smith extern double wait_all_ct,allreduce_ct,sum_of_waits_ct; 21377a39924SBarry Smith 21477a39924SBarry Smith #define TypeSize(buff,count,type) \ 21577a39924SBarry Smith { \ 21677a39924SBarry Smith if (type == MPIU_SCALAR) { \ 217*e0937024SBarry Smith buff += (double) count*sizeof(Scalar); \ 21877a39924SBarry Smith } else if (type == MPI_INT) { \ 219*e0937024SBarry Smith buff += (double) count*sizeof(int); \ 22077a39924SBarry Smith } else { \ 221*e0937024SBarry Smith int _size; MPI_Type_size(type,&_size); buff += (double) count*_size; \ 22277a39924SBarry Smith } \ 22377a39924SBarry Smith } 22477a39924SBarry Smith 22577a39924SBarry Smith #define MPI_Irecv( buf, count, datatype, source, tag, comm, request) \ 22677a39924SBarry Smith { \ 22777a39924SBarry Smith MPI_Irecv( buf, count, datatype, source, tag, comm, request); \ 22877a39924SBarry Smith irecv_ct++; TypeSize(irecv_len,count,datatype); \ 22977a39924SBarry Smith } 23077a39924SBarry Smith 23177a39924SBarry Smith #define MPI_Recv( buf, count, datatype, source, tag, comm, status) \ 23277a39924SBarry Smith { \ 2330c4d4877SLois Curfman McInnes MPI_Recv( buf, count, datatype, source, tag, comm, status); \ 234*e0937024SBarry Smith recv_ct++; TypeSize(recv_len,count,datatype); \ 23577a39924SBarry Smith } 23677a39924SBarry Smith 23777a39924SBarry Smith #define MPI_Isend( buf, count, datatype, dest, tag, comm, request) \ 23877a39924SBarry Smith { \ 23977a39924SBarry Smith MPI_Isend( buf, count, datatype, dest, tag, comm, request); \ 240*e0937024SBarry Smith isend_ct++; TypeSize(isend_len,count,datatype); \ 24177a39924SBarry Smith } 24277a39924SBarry Smith 24377a39924SBarry Smith #define MPI_Send( buf, count, datatype, dest, tag, comm) \ 24477a39924SBarry Smith { \ 24577a39924SBarry Smith MPI_Send( buf, count, datatype, dest, tag, comm); \ 246*e0937024SBarry Smith send_ct++; TypeSize(send_len,count,datatype); \ 24777a39924SBarry Smith } 24877a39924SBarry Smith 24977a39924SBarry Smith #define MPI_Wait(request, status) \ 25077a39924SBarry Smith ( \ 251*e0937024SBarry Smith wait_ct++, sum_of_waits_ct++,\ 25277a39924SBarry Smith MPI_Wait(request, status) \ 25377a39924SBarry Smith ) 25477a39924SBarry Smith 25577a39924SBarry Smith #define MPI_Waitany(a, b, c, d) \ 25677a39924SBarry Smith ( \ 257*e0937024SBarry Smith wait_any_ct++,sum_of_waits_ct++, \ 25877a39924SBarry Smith MPI_Waitany(a, b, c, d)\ 25977a39924SBarry Smith ) 26077a39924SBarry Smith 26177a39924SBarry Smith #define MPI_Waitall(count, array_of_requests, array_of_statuses) \ 26277a39924SBarry Smith ( \ 263*e0937024SBarry Smith wait_all_ct++, sum_of_waits_ct += (double) count,\ 26477a39924SBarry Smith MPI_Waitall(count, array_of_requests, array_of_statuses) \ 26577a39924SBarry Smith ) 26677a39924SBarry Smith 26777a39924SBarry Smith #define MPI_Allreduce( sendbuf, recvbuf, count, datatype, op, comm) \ 26877a39924SBarry Smith ( \ 26977a39924SBarry Smith allreduce_ct++, \ 27077a39924SBarry Smith MPI_Allreduce( sendbuf, recvbuf, count, datatype, op, comm) \ 27177a39924SBarry Smith ) 27277a39924SBarry Smith #endif /* ! PETSC_USING_MPIUNI */ 273614700edSBarry Smith 274614700edSBarry Smith #else /* ------------------------------------------------------------*/ 275614700edSBarry Smith 276614700edSBarry Smith #define PLogFlops(n) 277614700edSBarry Smith 278614700edSBarry Smith #if defined (HAVE_MPE) 279614700edSBarry Smith #define MPEBEGIN 1000 280614700edSBarry Smith extern int PLogMPEBegin(); 281614700edSBarry Smith extern int PLogMPEDump(char *); 28277c4ece6SBarry Smith #else 283614700edSBarry Smith #define PLogEventMPEActivate(a) 284614700edSBarry Smith #define PLogEventMPEDeActivate(a) 285614700edSBarry Smith #endif 286614700edSBarry Smith 287614700edSBarry Smith #define PLogEventActivate(a) 288614700edSBarry Smith #define PLogEventDeActivate(a) 289614700edSBarry Smith 290614700edSBarry Smith #define PLogEventActivateClass() 291614700edSBarry Smith #define PLogEventDeActivateClass() 29277c4ece6SBarry Smith 2937f8359c1SLois Curfman McInnes #define _PLB 0 2947f8359c1SLois Curfman McInnes #define _PLE 0 2957f8359c1SLois Curfman McInnes #define _PHC 0 2967f8359c1SLois Curfman McInnes #define _PHD 0 297*e0937024SBarry Smith #define PetscGetFlops 0.0 298d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4) 299d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4) 300d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c) 301d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c) 302d7a720efSLois Curfman McInnes #define PLogObjectCreate(h) 303d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h) 304d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m) 305d7a720efSLois Curfman McInnes #define PLogDestroy() 306d7a720efSLois Curfman McInnes #define PLogStagePush(int) 307d7a720efSLois Curfman McInnes #define PLogStagePop() 308d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b) 309d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file) 310d7a720efSLois Curfman McInnes #define PLogBegin() 311d7a720efSLois Curfman McInnes #define PLogAllBegin() 312d7a720efSLois Curfman McInnes #define PLogDump(char) 313d7a720efSLois Curfman McInnes #define PLogEventRegister(a,b,c) 314d7a720efSLois Curfman McInnes #define PLogMPEBegin() 315d7a720efSLois Curfman McInnes #define PLogMPEDump(a) 3167f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...); 31777c4ece6SBarry Smith #endif 3186daaf66cSBarry Smith 3198b6d568bSLois Curfman McInnes /*MC 32019b02663SBarry Smith PLogFlops - Adds floating point operations to the global counter. 32119b02663SBarry Smith 32219b02663SBarry Smith Input Parameter: 32319b02663SBarry Smith . f - flop counter 32419b02663SBarry Smith 32519b02663SBarry Smith Synopsis: 326682ac3c9SWilliam Gropp void PLogFlops(int f) 32719b02663SBarry Smith 32819b02663SBarry Smith Notes: 32919b02663SBarry Smith A global counter logs all PETSc flop counts. The user can use 33019b02663SBarry Smith PLogFlops() to increment this counter to include flops for the 33119b02663SBarry Smith application code. 33219b02663SBarry Smith 33319b02663SBarry Smith PETSc automatically logs library events if the code has been 33419b02663SBarry Smith compiled with -DPETSC_LOG (which is the default), and -log, 33519b02663SBarry Smith -log_summary, or -log_all are specified. PLogFlops() is 33619b02663SBarry Smith intended for logging user flops to supplement this PETSc 33719b02663SBarry Smith information. 33819b02663SBarry Smith 33919b02663SBarry Smith Example of Usage: 34035aab85fSBarry Smith $ int USER_EVENT; 341b045bd31SSatish Balay $ PLogEventRegister(&USER_EVENT,"User event","Color:"); 34219b02663SBarry Smith $ PLogEventBegin(USER_EVENT,0,0,0,0); 34319b02663SBarry Smith $ [code segment to monitor] 34419b02663SBarry Smith $ PLogFlops(user_flops) 34519b02663SBarry Smith $ PLogEventEnd(USER_EVENT,0,0,0,0); 34619b02663SBarry Smith 34758cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops() 34819b02663SBarry Smith 349edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations 35019b02663SBarry Smith M*/ 35119b02663SBarry Smith 35297bb86f7SLois Curfman McInnes 353d7a720efSLois Curfman McInnes /*MC 35419b02663SBarry Smith PLogEventBegin - Logs the beginning of a user event. 35597bb86f7SLois Curfman McInnes 35697bb86f7SLois Curfman McInnes Input Parameters: 35735aab85fSBarry Smith . e - integer associated with the event obtained from PLogEventRegister() 35897bb86f7SLois Curfman McInnes . o1,o2,o3,o4 - objects associated with the event, or 0 35997bb86f7SLois Curfman McInnes 36097bb86f7SLois Curfman McInnes Synopsis: 361682ac3c9SWilliam Gropp void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3, 36297bb86f7SLois Curfman McInnes PetscObject o4) 36397bb86f7SLois Curfman McInnes 36497bb86f7SLois Curfman McInnes Notes: 36597bb86f7SLois Curfman McInnes You should also register each integer event with the command 36697bb86f7SLois Curfman McInnes PLogRegisterEvent(). The source code must be compiled with 36797bb86f7SLois Curfman McInnes -DPETSC_LOG, which is the default. 36897bb86f7SLois Curfman McInnes 36997bb86f7SLois Curfman McInnes PETSc automatically logs library events if the code has been 37097bb86f7SLois Curfman McInnes compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are 37197bb86f7SLois Curfman McInnes specified. PLogEventBegin() is intended for logging user events 37297bb86f7SLois Curfman McInnes to supplement this PETSc information. 37397bb86f7SLois Curfman McInnes 37497bb86f7SLois Curfman McInnes Example of Usage: 37535aab85fSBarry Smith $ int USER_EVENT; 3760eb211faSLois Curfman McInnes $ int user_event_flops; 377b045bd31SSatish Balay $ PLogEventRegister(&USER_EVENT,"User event","Color:"); 37835aab85fSBarry Smith $ PLogEventBegin(&USER_EVENT,0,0,0,0); 37997bb86f7SLois Curfman McInnes $ [code segment to monitor] 3800eb211faSLois Curfman McInnes $ PLogFlops(user_event_flops); 38135aab85fSBarry Smith $ PLogEventEnd(&USER_EVENT,0,0,0,0); 38297bb86f7SLois Curfman McInnes 38397bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops() 38497bb86f7SLois Curfman McInnes 38597bb86f7SLois Curfman McInnes .keywords: log, event, begin 38697bb86f7SLois Curfman McInnes M*/ 38797bb86f7SLois Curfman McInnes 388d7a720efSLois Curfman McInnes /*MC 38919b02663SBarry Smith PLogEventEnd - Log the end of a user event. 39097bb86f7SLois Curfman McInnes 39197bb86f7SLois Curfman McInnes Input Parameters: 39235aab85fSBarry Smith . e - integer associated with the event obtained with PLogEventRegister() 39397bb86f7SLois Curfman McInnes . o1,o2,o3,o4 - objects associated with the event, or 0 39497bb86f7SLois Curfman McInnes 39597bb86f7SLois Curfman McInnes Synopsis: 396682ac3c9SWilliam Gropp void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3, 39797bb86f7SLois Curfman McInnes PetscObject o4) 39897bb86f7SLois Curfman McInnes 39997bb86f7SLois Curfman McInnes Notes: 40097bb86f7SLois Curfman McInnes You should also register each integer event with the command 40197bb86f7SLois Curfman McInnes PLogRegisterEvent(). Source code must be compiled with 40297bb86f7SLois Curfman McInnes -DPETSC_LOG, which is the default. 40397bb86f7SLois Curfman McInnes 40497bb86f7SLois Curfman McInnes PETSc automatically logs library events if the code has been 40597bb86f7SLois Curfman McInnes compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are 40697bb86f7SLois Curfman McInnes specified. PLogEventEnd() is intended for logging user events 40797bb86f7SLois Curfman McInnes to supplement this PETSc information. 40897bb86f7SLois Curfman McInnes 40997bb86f7SLois Curfman McInnes Example of Usage: 41035aab85fSBarry Smith $ int USER_EVENT; 4110eb211faSLois Curfman McInnes $ int user_event_flops; 412b045bd31SSatish Balay $ PLogEventRegister(&USER_EVENT,"User event","Color:"); 41397bb86f7SLois Curfman McInnes $ PLogEventBegin(USER_EVENT,0,0,0,0); 41497bb86f7SLois Curfman McInnes $ [code segment to monitor] 4150eb211faSLois Curfman McInnes $ PLogFlops(user_event_flops); 41697bb86f7SLois Curfman McInnes $ PLogEventEnd(USER_EVENT,0,0,0,0); 41797bb86f7SLois Curfman McInnes 41897bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops() 41997bb86f7SLois Curfman McInnes 42097bb86f7SLois Curfman McInnes .keywords: log, event, end 42197bb86f7SLois Curfman McInnes M*/ 42297bb86f7SLois Curfman McInnes 423*e0937024SBarry Smith 42497bb86f7SLois Curfman McInnes #endif 42541debaddSBarry Smith 42677c4ece6SBarry Smith 42777c4ece6SBarry Smith 428