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