1f8402805SBarry Smith! 2f8402805SBarry Smith! 3f8402805SBarry Smith! Description: Demonstrates how users can augment the PETSc profiling by 4f8402805SBarry Smith! nserting their own event logging. 5f8402805SBarry Smith! 6f8402805SBarry Smith! ----------------------------------------------------------------------- 7f8402805SBarry Smith#include <petsc/finclude/petscsys.h> 8f8402805SBarry Smith#include <petsc/finclude/petsclog.h> 9*c5e229c2SMartin Diehlprogram main 10f8402805SBarry Smith use petscsys 11f8402805SBarry Smith implicit none 12f8402805SBarry Smith 13f8402805SBarry Smith! 14f8402805SBarry Smith! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15f8402805SBarry Smith! Variable declarations 16f8402805SBarry Smith! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 17f8402805SBarry Smith! 18f8402805SBarry Smith PetscLogEvent USER_EVENT1, USER_EVENT2 19f8402805SBarry Smith PetscLogEvent USER_EVENT3, USER_EVENT4 20f8402805SBarry Smith PetscLogEvent USER_EVENT5, USER_EVENT6 21f8402805SBarry Smith PetscLogEvent USER_EVENT7, USER_EVENT8 22f8402805SBarry Smith PetscLogEvent USER_EVENT9 23f8402805SBarry Smith PetscClassId classid 24f8402805SBarry Smith integer imax 25f8402805SBarry Smith PetscErrorCode ierr 26f8402805SBarry Smith parameter(imax=10000) 27f8402805SBarry Smith PetscLogDouble onefp 28f8402805SBarry Smith parameter(onefp=1.0d0) 29f8402805SBarry Smith PetscReal onereal, tenreal 30f8402805SBarry Smith parameter(onereal=1.0, tenreal=10.0) 31f8402805SBarry Smith PetscInt n 32f8402805SBarry Smith! 33f8402805SBarry Smith! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 34f8402805SBarry Smith! Beginning of program 35f8402805SBarry Smith! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 36f8402805SBarry Smith 37d8606c27SBarry Smith PetscCallA(PetscInitialize(ierr)) 38f8402805SBarry Smith 39f8402805SBarry Smith! 40f8402805SBarry Smith! Create a new user-defined event. 41f8402805SBarry Smith! - Note that PetscLogEventRegister() returns to the user a unique 42f8402805SBarry Smith! integer event number, which should then be used for profiling 43f8402805SBarry Smith! the event via PetscLogEventBegin() and PetscLogEventEnd(). 44f8402805SBarry Smith! - The user can also optionally log floating point operations 45f8402805SBarry Smith! with the routine PetscLogFlops(). 46f8402805SBarry Smith! 47f8402805SBarry Smith classid = 0 48f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 1', classid, USER_EVENT1, ierr)) 49f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 2', classid, USER_EVENT2, ierr)) 50f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 3', classid, USER_EVENT3, ierr)) 51f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 4', classid, USER_EVENT4, ierr)) 52f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 5', classid, USER_EVENT5, ierr)) 53f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 6', classid, USER_EVENT6, ierr)) 54f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 7', classid, USER_EVENT7, ierr)) 55f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 8', classid, USER_EVENT8, ierr)) 56f8402805SBarry Smith PetscCallA(PetscLogEventRegister('Event 9', classid, USER_EVENT9, ierr)) 57f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT1, ierr)) 58f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 59f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 60f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT1, ierr)) 61f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT2, ierr)) 62f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 63f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 64f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT2, ierr)) 65f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT3, ierr)) 66f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 67f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 68f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT3, ierr)) 69f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT4, ierr)) 70f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 71f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 72f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT4, ierr)) 73f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT5, ierr)) 74f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 75f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 76f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT5, ierr)) 77f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT6, ierr)) 78f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 79f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 80f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT6, ierr)) 81f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT7, ierr)) 82f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 83f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 84f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT7, ierr)) 85f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT8, ierr)) 86f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 87f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 88f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT8, ierr)) 89f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT9, ierr)) 90f8402805SBarry Smith PetscCallA(PetscLogFlops(imax*onefp, ierr)) 91f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 92f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT9, ierr)) 93f8402805SBarry Smith! 94f8402805SBarry Smith! We disable the logging of an event. 95da81f932SPierre Jolivet! - Note that the user can activate/deactivate both user-defined 96f8402805SBarry Smith! events and predefined PETSc events. 97f8402805SBarry Smith! 98f8402805SBarry Smith PetscCallA(PetscLogEventDeactivate(USER_EVENT1, ierr)) 99f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT1, ierr)) 100f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 101f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT1, ierr)) 102f8402805SBarry Smith! 103f8402805SBarry Smith! We next enable the logging of an event 104f8402805SBarry Smith! 105f8402805SBarry Smith PetscCallA(PetscLogEventActivate(USER_EVENT1, ierr)) 106f8402805SBarry Smith PetscCallA(PetscLogEventBegin(USER_EVENT1, ierr)) 107f8402805SBarry Smith PetscCallA(PetscSleep(onereal, ierr)) 108f8402805SBarry Smith PetscCallA(PetscLogEventEnd(USER_EVENT1, ierr)) 109f8402805SBarry Smith 110f8402805SBarry Smith PetscCallA(PetscInfo('PETSc info message\n'//'Another line\n', ierr)) 111ccfd86f1SBarry Smith PetscCallA(PetscOptionsAllUsed(PETSC_NULL_OPTIONS, n, ierr)) 112f8402805SBarry Smith PetscCallA(PetscFinalize(ierr)) 113f8402805SBarry Smith 114f8402805SBarry Smithend 115f8402805SBarry Smith 116f8402805SBarry Smith! 117f8402805SBarry Smith!/*TEST 118f8402805SBarry Smith! 119f8402805SBarry Smith! test: 1203886731fSPierre Jolivet! output_file: output/empty.out 121f8402805SBarry Smith! 122f8402805SBarry Smith!TEST*/ 123