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