Actual source code: ex3f.F

  1: !
  2: !    "$Id: ex3f.F,v 1.15 2001/01/15 21:44:21 bsmith Exp $";
  3: !
  4: !   Description: Demonstrates how users can augment the PETSc profiling by
  5: !                nserting their own event logging.
  6: !
  7: !/*T
  8: !   Concepts: PetscLog^user-defined event profiling (basic example);
  9: !   Concepts: PetscLog^activating/deactivating events for profiling (basic example);
 10: !   Processors: n
 11: !T*/
 12: ! -----------------------------------------------------------------------

 14:       program main
 15:       implicit none

 17: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 18: !                    Include files
 19: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 20: !
 21: !  The following include statements are required for using PetscLog Routines
 22: !
 23:  #include include/finclude/petsc.h
 24:  #include include/finclude/petsclog.h
 25: !
 26: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 27: !                   Variable declarations
 28: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 29: !
 30:       integer USER_EVENT1,USER_EVENT2,USER_EVENT3,USER_EVENT4
 31:       integer USER_EVENT8,USER_EVENT9
 32:       integer USER_EVENT5,USER_EVENT6,USER_EVENT7,imax,ierr
 33:       parameter (imax = 10000)
 34: !
 35: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 36: !                 Beginning of program
 37: ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 39:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 41: !
 42: !     Create a new user-defined event.
 43: !      - Note that PetscLogEventRegister() returns to the user a unique
 44: !        integer event number, which should then be used for profiling
 45: !        the event via PetscLogEventBegin() and PetscLogEventEnd().
 46: !      - The user can also optionally log floating point operations
 47: !        with the routine PetscLogFlops().
 48: !
 49:       call PetscLogEventRegister(USER_EVENT1,'Event 1',0,ierr)
 50:       call PetscLogEventRegister(USER_EVENT2,'Event 2',0,ierr)
 51:       call PetscLogEventRegister(USER_EVENT3,'Event 3',0,ierr)
 52:       call PetscLogEventRegister(USER_EVENT4,'Event 4',0,ierr)
 53:       call PetscLogEventRegister(USER_EVENT5,'Event 5',0,ierr)
 54:       call PetscLogEventRegister(USER_EVENT6,'Event 6',0,ierr)
 55:       call PetscLogEventRegister(USER_EVENT7,'Event 7',0,ierr)
 56:       call PetscLogEventRegister(USER_EVENT8,'Event 8',0,ierr)
 57:       call PetscLogEventRegister(USER_EVENT9,'Event 9',0,ierr)
 58:       call PetscLogEventBegin(USER_EVENT1,ierr)
 59:       call PetscLogFlops(imax,ierr)
 60:       call PetscSleep(1,ierr)
 61:       call PetscLogEventEnd(USER_EVENT1,ierr)
 62:       call PetscLogEventBegin(USER_EVENT2,ierr)
 63:       call PetscLogFlops(imax,ierr)
 64:       call PetscSleep(1,ierr)
 65:       call PetscLogEventEnd(USER_EVENT2,ierr)
 66:       call PetscLogEventBegin(USER_EVENT3,ierr)
 67:       call PetscLogFlops(imax,ierr)
 68:       call PetscSleep(1,ierr)
 69:       call PetscLogEventEnd(USER_EVENT3,ierr)
 70:       call PetscLogEventBegin(USER_EVENT4,ierr)
 71:       call PetscLogFlops(imax,ierr)
 72:       call PetscSleep(1,ierr)
 73:       call PetscLogEventEnd(USER_EVENT4,ierr)
 74:       call PetscLogEventBegin(USER_EVENT5,ierr)
 75:       call PetscLogFlops(imax,ierr)
 76:       call PetscSleep(1,ierr)
 77:       call PetscLogEventEnd(USER_EVENT5,ierr)
 78:       call PetscLogEventBegin(USER_EVENT6,ierr)
 79:       call PetscLogFlops(imax,ierr)
 80:       call PetscSleep(1,ierr)
 81:       call PetscLogEventEnd(USER_EVENT6,ierr)
 82:       call PetscLogEventBegin(USER_EVENT7,ierr)
 83:       call PetscLogFlops(imax,ierr)
 84:       call PetscSleep(1,ierr)
 85:       call PetscLogEventEnd(USER_EVENT7,ierr)
 86:       call PetscLogEventBegin(USER_EVENT8,ierr)
 87:       call PetscLogFlops(imax,ierr)
 88:       call PetscSleep(1,ierr)
 89:       call PetscLogEventEnd(USER_EVENT8,ierr)
 90:       call PetscLogEventBegin(USER_EVENT9,ierr)
 91:       call PetscLogFlops(imax,ierr)
 92:       call PetscSleep(1,ierr)
 93:       call PetscLogEventEnd(USER_EVENT9,ierr)
 94: !
 95: !    We disable the logging of an event.
 96: !      - Note that the user can activate/deactive both user-defined
 97: !        events and predefined PETSc events.
 98: !
 99:       call PetscLogEventDeactivate(USER_EVENT1,ierr)
100:       call PetscLogEventBegin(USER_EVENT1,ierr)
101:       call PetscSleep(1,ierr)
102:       call PetscLogEventEnd(USER_EVENT1,ierr)
103: !
104: !    We next enable the logging of an event
105: !
106:       call PetscLogEventActivate(USER_EVENT1,ierr)
107:       call PetscLogEventBegin(USER_EVENT1,ierr)
108:       call PetscSleep(1,ierr)
109:       call PetscLogEventEnd(USER_EVENT1,ierr)

111:       call PetscFinalize(ierr)

113:       end