xref: /petsc/src/sys/tutorials/ex3f90.F90 (revision 2dfe29262b4468d5fbb057f165946753e529c684)
1*2dfe2926SJacob Faibussowitsch!
2*2dfe2926SJacob Faibussowitsch!
3*2dfe2926SJacob Faibussowitsch!   Description: Demonstrates how users can augment the PETSc profiling by
4*2dfe2926SJacob Faibussowitsch!                inserting their own event logging.
5*2dfe2926SJacob Faibussowitsch!
6*2dfe2926SJacob Faibussowitsch!/*T
7*2dfe2926SJacob Faibussowitsch!   Concepts: PetscLog^user-defined event profiling (basic example);
8*2dfe2926SJacob Faibussowitsch!   Concepts: PetscLog^activating/deactivating events for profiling (basic example);
9*2dfe2926SJacob Faibussowitsch!   Processors: n
10*2dfe2926SJacob Faibussowitsch!T*/
11*2dfe2926SJacob Faibussowitsch! -----------------------------------------------------------------------
12*2dfe2926SJacob Faibussowitsch
13*2dfe2926SJacob Faibussowitsch      program SchoolDay
14*2dfe2926SJacob Faibussowitsch#include <petsc/finclude/petscsys.h>
15*2dfe2926SJacob Faibussowitsch#include <petsc/finclude/petsclog.h>
16*2dfe2926SJacob Faibussowitsch      use petscmpi  ! or mpi or mpi_f08
17*2dfe2926SJacob Faibussowitsch      use petscsys
18*2dfe2926SJacob Faibussowitsch      implicit none
19*2dfe2926SJacob Faibussowitsch
20*2dfe2926SJacob Faibussowitsch!====================================================================
21*2dfe2926SJacob Faibussowitsch!     Local Variables
22*2dfe2926SJacob Faibussowitsch
23*2dfe2926SJacob Faibussowitsch      ! Settings:
24*2dfe2926SJacob Faibussowitsch      integer, parameter        :: verbose=0               ! 0: silent, >=1 : increasing amount of debugging output
25*2dfe2926SJacob Faibussowitsch      integer, parameter        :: msgLen = 30             ! number of reals which is sent with MPI_Isend
26*2dfe2926SJacob Faibussowitsch      PetscReal, parameter      :: second=0.1;             ! time is sped up by a factor 10
27*2dfe2926SJacob Faibussowitsch
28*2dfe2926SJacob Faibussowitsch      ! Codes
29*2dfe2926SJacob Faibussowitsch      integer, parameter        :: BOY=1, GIRL=2, TEACHER=0
30*2dfe2926SJacob Faibussowitsch      PetscMPIInt, parameter    :: tagMsg   = 1200;
31*2dfe2926SJacob Faibussowitsch
32*2dfe2926SJacob Faibussowitsch      ! Timers
33*2dfe2926SJacob Faibussowitsch      PetscLogEvent :: Morning,  Afternoon
34*2dfe2926SJacob Faibussowitsch      PetscLogEvent :: PlayBall, SkipRope
35*2dfe2926SJacob Faibussowitsch      PetscLogEvent :: TidyClass
36*2dfe2926SJacob Faibussowitsch      PetscLogEvent :: Lessons,  CorrectHomework
37*2dfe2926SJacob Faibussowitsch      PetscClassId classid
38*2dfe2926SJacob Faibussowitsch
39*2dfe2926SJacob Faibussowitsch      ! Petsc-stuff
40*2dfe2926SJacob Faibussowitsch      PetscErrorCode            :: ierr
41*2dfe2926SJacob Faibussowitsch
42*2dfe2926SJacob Faibussowitsch      ! MPI-stuff
43*2dfe2926SJacob Faibussowitsch      PetscMPIInt              :: rank, size
44*2dfe2926SJacob Faibussowitsch      PetscReal, allocatable    :: message(:,:)
45*2dfe2926SJacob Faibussowitsch      integer                   :: item, maxItem
46*2dfe2926SJacob Faibussowitsch      integer4                  :: status(MPI_STATUS_SIZE)
47*2dfe2926SJacob Faibussowitsch      PetscMPIInt                  req
48*2dfe2926SJacob Faibussowitsch
49*2dfe2926SJacob Faibussowitsch      ! Own stuff
50*2dfe2926SJacob Faibussowitsch      integer4                  :: role                 ! is this process a BOY, a GIRL or a TEACHER?
51*2dfe2926SJacob Faibussowitsch      integer4                  :: i, j
52*2dfe2926SJacob Faibussowitsch      integer4,parameter        :: one=1
53*2dfe2926SJacob Faibussowitsch!====================================================================
54*2dfe2926SJacob Faibussowitsch!     Initializations
55*2dfe2926SJacob Faibussowitsch      call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
56*2dfe2926SJacob Faibussowitsch      if (ierr .ne. 0) then
57*2dfe2926SJacob Faibussowitsch        print*,'Unable to initialize PETSc'
58*2dfe2926SJacob Faibussowitsch        stop
59*2dfe2926SJacob Faibussowitsch      endif
60*2dfe2926SJacob Faibussowitsch      call MPI_Comm_size(PETSC_COMM_WORLD, size,ierr)
61*2dfe2926SJacob Faibussowitsch      call MPI_Comm_rank(PETSC_COMM_WORLD, rank,ierr)
62*2dfe2926SJacob Faibussowitsch
63*2dfe2926SJacob Faibussowitsch      if (rank==0) then
64*2dfe2926SJacob Faibussowitsch         role = TEACHER
65*2dfe2926SJacob Faibussowitsch      else if (rank<0.4*size) then
66*2dfe2926SJacob Faibussowitsch         role = GIRL
67*2dfe2926SJacob Faibussowitsch      else
68*2dfe2926SJacob Faibussowitsch         role = BOY
69*2dfe2926SJacob Faibussowitsch      end if
70*2dfe2926SJacob Faibussowitsch
71*2dfe2926SJacob Faibussowitsch      allocate(message(msgLen,msglen))
72*2dfe2926SJacob Faibussowitsch      do i = 1,msgLen
73*2dfe2926SJacob Faibussowitsch         do j  = 1,msgLen
74*2dfe2926SJacob Faibussowitsch            message(i,j) = 10.0*j + i*1.0/(rank+one)
75*2dfe2926SJacob Faibussowitsch         end do
76*2dfe2926SJacob Faibussowitsch      end do
77*2dfe2926SJacob Faibussowitsch!
78*2dfe2926SJacob Faibussowitsch!====================================================================
79*2dfe2926SJacob Faibussowitsch!     Create new user-defined events
80*2dfe2926SJacob Faibussowitsch      classid = 0
81*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Morning',         classid, Morning,   ierr)
82*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Afternoon',       classid, Afternoon, ierr)
83*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Play Ball',       classid, PlayBall,  ierr)
84*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Skip Rope',       classid, SkipRope,  ierr)
85*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Tidy Classroom',  classid, TidyClass, ierr)
86*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Lessons',         classid, Lessons,   ierr)
87*2dfe2926SJacob Faibussowitsch      call PetscLogEventRegister('Correct Homework',classid,CorrectHomework,          &
88*2dfe2926SJacob Faibussowitsch     &                                                            ierr)
89*2dfe2926SJacob Faibussowitsch      if (verbose>=1) then
90*2dfe2926SJacob Faibussowitsch      print '(a,i0,a)','[',rank,'] SchoolDay events have been defined'
91*2dfe2926SJacob Faibussowitsch      endif
92*2dfe2926SJacob Faibussowitsch
93*2dfe2926SJacob Faibussowitsch!====================================================================
94*2dfe2926SJacob Faibussowitsch!     Go through the school day
95*2dfe2926SJacob Faibussowitsch      call PetscLogEventBegin(Morning,ierr)
96*2dfe2926SJacob Faibussowitsch
97*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(190000d0,ierr)
98*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.5*second,ierr)
99*2dfe2926SJacob Faibussowitsch
100*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(Lessons,ierr)
101*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(23000d0,ierr)
102*2dfe2926SJacob Faibussowitsch         call PetscSleep(1*second, ierr)
103*2dfe2926SJacob Faibussowitsch         if (size>1) then
104*2dfe2926SJacob Faibussowitsch         call MPI_Isend( message, msgLen, MPI_DOUBLE_PRECISION,                             &
105*2dfe2926SJacob Faibussowitsch     &                        mod(rank+1,size),                                             &
106*2dfe2926SJacob Faibussowitsch     &                        tagMsg+rank, PETSC_COMM_WORLD, req, ierr)
107*2dfe2926SJacob Faibussowitsch         call  MPI_Recv( message, msgLen, MPI_DOUBLE_PRECISION,                             &
108*2dfe2926SJacob Faibussowitsch     &                       mod(rank-1+size,size),                                         &
109*2dfe2926SJacob Faibussowitsch     &                  tagMsg+mod(rank-1+size,size), PETSC_COMM_WORLD,                     &
110*2dfe2926SJacob Faibussowitsch     &        status, ierr)
111*2dfe2926SJacob Faibussowitsch         call MPI_Wait(req,MPI_STATUS_IGNORE,ierr)
112*2dfe2926SJacob Faibussowitsch         end if
113*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(Lessons,ierr)
114*2dfe2926SJacob Faibussowitsch
115*2dfe2926SJacob Faibussowitsch         if (role==TEACHER) then
116*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(TidyClass,ierr)
117*2dfe2926SJacob Faibussowitsch            call PetscLogFlops(600000d0,ierr)
118*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.6*second, ierr)
119*2dfe2926SJacob Faibussowitsch               call PetscLogEventBegin(CorrectHomework,ierr)
120*2dfe2926SJacob Faibussowitsch               call PetscLogFlops(234700d0,ierr)
121*2dfe2926SJacob Faibussowitsch               call PetscSleep(0.4*second, ierr)
122*2dfe2926SJacob Faibussowitsch               call PetscLogEventEnd(CorrectHomework,ierr)
123*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(TidyClass,ierr)
124*2dfe2926SJacob Faibussowitsch         else if (role==BOY) then
125*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(SkipRope,ierr)
126*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.8*second, ierr)
127*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(SkipRope,ierr)
128*2dfe2926SJacob Faibussowitsch         else
129*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(PlayBall,ierr)
130*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.9*second, ierr)
131*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(PlayBall,ierr)
132*2dfe2926SJacob Faibussowitsch         end if
133*2dfe2926SJacob Faibussowitsch
134*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(Lessons,ierr)
135*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(120000d0,ierr)
136*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.7*second, ierr)
137*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(Lessons,ierr)
138*2dfe2926SJacob Faibussowitsch
139*2dfe2926SJacob Faibussowitsch      call PetscLogEventEnd(Morning,ierr)
140*2dfe2926SJacob Faibussowitsch
141*2dfe2926SJacob Faibussowitsch      call PetscLogEventBegin(Afternoon,ierr)
142*2dfe2926SJacob Faibussowitsch
143*2dfe2926SJacob Faibussowitsch         item = rank*(3-rank)
144*2dfe2926SJacob Faibussowitsch         call MPI_Allreduce(item, maxItem, 1, MPI_INTEGER, MPI_MAX,                    &
145*2dfe2926SJacob Faibussowitsch     &                           PETSC_COMM_WORLD, ierr)
146*2dfe2926SJacob Faibussowitsch
147*2dfe2926SJacob Faibussowitsch         item = rank*(10-rank)
148*2dfe2926SJacob Faibussowitsch         call MPI_Allreduce(item, maxItem, 1, MPI_INTEGER, MPI_MAX,                    &
149*2dfe2926SJacob Faibussowitsch     &                           PETSC_COMM_WORLD, ierr)
150*2dfe2926SJacob Faibussowitsch
151*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(58988d0,ierr)
152*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.6*second,ierr)
153*2dfe2926SJacob Faibussowitsch
154*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(Lessons,ierr)
155*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(123456d0,ierr)
156*2dfe2926SJacob Faibussowitsch         call PetscSleep(1*second, ierr)
157*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(Lessons,ierr)
158*2dfe2926SJacob Faibussowitsch
159*2dfe2926SJacob Faibussowitsch         if (role==TEACHER) then
160*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(TidyClass,ierr)
161*2dfe2926SJacob Faibussowitsch            call PetscLogFlops(17800d0,ierr)
162*2dfe2926SJacob Faibussowitsch            call PetscSleep(1.1*second, ierr)
163*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(Lessons,ierr)
164*2dfe2926SJacob Faibussowitsch            call PetscLogFlops(72344d0,ierr)
165*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.5*second, ierr)
166*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(Lessons,ierr)
167*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(TidyClass,ierr)
168*2dfe2926SJacob Faibussowitsch         else if (role==GIRL) then
169*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(SkipRope,ierr)
170*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.7*second, ierr)
171*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(SkipRope,ierr)
172*2dfe2926SJacob Faibussowitsch         else
173*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(PlayBall,ierr)
174*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.8*second, ierr)
175*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(PlayBall,ierr)
176*2dfe2926SJacob Faibussowitsch         end if
177*2dfe2926SJacob Faibussowitsch
178*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(Lessons,ierr)
179*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(72344d0,ierr)
180*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.5*second, ierr)
181*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(Lessons,ierr)
182*2dfe2926SJacob Faibussowitsch
183*2dfe2926SJacob Faibussowitsch      call PetscLogEventEnd(Afternoon,ierr)
184*2dfe2926SJacob Faibussowitsch
185*2dfe2926SJacob Faibussowitsch      if (.false.) then
186*2dfe2926SJacob Faibussowitsch         continue
187*2dfe2926SJacob Faibussowitsch      else if (role==TEACHER) then
188*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(TidyClass,ierr)
189*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(612300d0,ierr)
190*2dfe2926SJacob Faibussowitsch         call PetscSleep(1.1*second, ierr)
191*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(TidyClass,ierr)
192*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(CorrectHomework,ierr)
193*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(234700d0,ierr)
194*2dfe2926SJacob Faibussowitsch         call PetscSleep(1.1*second, ierr)
195*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(CorrectHomework,ierr)
196*2dfe2926SJacob Faibussowitsch      else
197*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(SkipRope,ierr)
198*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.7*second, ierr)
199*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(SkipRope,ierr)
200*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(PlayBall,ierr)
201*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.8*second, ierr)
202*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(PlayBall,ierr)
203*2dfe2926SJacob Faibussowitsch      end if
204*2dfe2926SJacob Faibussowitsch
205*2dfe2926SJacob Faibussowitsch      call PetscLogEventBegin(Lessons,ierr)
206*2dfe2926SJacob Faibussowitsch      call PetscLogFlops(120000d0,ierr)
207*2dfe2926SJacob Faibussowitsch      call PetscSleep(0.7*second, ierr)
208*2dfe2926SJacob Faibussowitsch      call PetscLogEventEnd(Lessons,ierr)
209*2dfe2926SJacob Faibussowitsch
210*2dfe2926SJacob Faibussowitsch      call PetscSleep(0.25*second,ierr)
211*2dfe2926SJacob Faibussowitsch
212*2dfe2926SJacob Faibussowitsch      call PetscLogEventBegin(Morning,ierr)
213*2dfe2926SJacob Faibussowitsch
214*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(190000d0,ierr)
215*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.5*second,ierr)
216*2dfe2926SJacob Faibussowitsch
217*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(Lessons,ierr)
218*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(23000d0,ierr)
219*2dfe2926SJacob Faibussowitsch         call PetscSleep(1*second, ierr)
220*2dfe2926SJacob Faibussowitsch         if (size>1) then
221*2dfe2926SJacob Faibussowitsch         call MPI_Isend( message, msgLen, MPI_DOUBLE_PRECISION,                             &
222*2dfe2926SJacob Faibussowitsch     &                        mod(rank+1,size),                                             &
223*2dfe2926SJacob Faibussowitsch     &                   tagMsg+rank, PETSC_COMM_WORLD, req, ierr)
224*2dfe2926SJacob Faibussowitsch         call MPI_Recv( message, msgLen, MPI_DOUBLE_PRECISION,                              &
225*2dfe2926SJacob Faibussowitsch     &                  mod(rank-1+size,size),                                              &
226*2dfe2926SJacob Faibussowitsch     &                  tagMsg+mod(rank-1+size,size), PETSC_COMM_WORLD,                     &
227*2dfe2926SJacob Faibussowitsch     &                   status, ierr)
228*2dfe2926SJacob Faibussowitsch         call MPI_Wait(req,MPI_STATUS_IGNORE,ierr)
229*2dfe2926SJacob Faibussowitsch         end if
230*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(Lessons,ierr)
231*2dfe2926SJacob Faibussowitsch
232*2dfe2926SJacob Faibussowitsch         if (role==TEACHER) then
233*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(TidyClass,ierr)
234*2dfe2926SJacob Faibussowitsch            call PetscLogFlops(600000d0,ierr)
235*2dfe2926SJacob Faibussowitsch            call PetscSleep(1.2*second, ierr)
236*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(TidyClass,ierr)
237*2dfe2926SJacob Faibussowitsch         else if (role==BOY) then
238*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(SkipRope,ierr)
239*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.8*second, ierr)
240*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(SkipRope,ierr)
241*2dfe2926SJacob Faibussowitsch         else
242*2dfe2926SJacob Faibussowitsch            call PetscLogEventBegin(PlayBall,ierr)
243*2dfe2926SJacob Faibussowitsch            call PetscSleep(0.9*second, ierr)
244*2dfe2926SJacob Faibussowitsch            call PetscLogEventEnd(PlayBall,ierr)
245*2dfe2926SJacob Faibussowitsch         end if
246*2dfe2926SJacob Faibussowitsch
247*2dfe2926SJacob Faibussowitsch         call PetscLogEventBegin(Lessons,ierr)
248*2dfe2926SJacob Faibussowitsch         call PetscLogFlops(120000d0,ierr)
249*2dfe2926SJacob Faibussowitsch         call PetscSleep(0.7*second, ierr)
250*2dfe2926SJacob Faibussowitsch         call PetscLogEventEnd(Lessons,ierr)
251*2dfe2926SJacob Faibussowitsch
252*2dfe2926SJacob Faibussowitsch      call PetscLogEventEnd(Morning,ierr)
253*2dfe2926SJacob Faibussowitsch
254*2dfe2926SJacob Faibussowitsch      deallocate(message)
255*2dfe2926SJacob Faibussowitsch
256*2dfe2926SJacob Faibussowitsch      call PetscFinalize(ierr)
257*2dfe2926SJacob Faibussowitsch
258*2dfe2926SJacob Faibussowitsch      end program SchoolDay
259*2dfe2926SJacob Faibussowitsch
260*2dfe2926SJacob Faibussowitsch!/*TEST
261*2dfe2926SJacob Faibussowitsch!
262*2dfe2926SJacob Faibussowitsch! testset:
263*2dfe2926SJacob Faibussowitsch!   suffix: no_log
264*2dfe2926SJacob Faibussowitsch!   requires: !defined(PETSC_USE_LOG)
265*2dfe2926SJacob Faibussowitsch!   test:
266*2dfe2926SJacob Faibussowitsch!     suffix: ascii
267*2dfe2926SJacob Faibussowitsch!     args: -log_view ascii:filename.txt
268*2dfe2926SJacob Faibussowitsch!   test:
269*2dfe2926SJacob Faibussowitsch!     suffix: detail
270*2dfe2926SJacob Faibussowitsch!     args: -log_view ascii:filename.txt:ascii_info_detail
271*2dfe2926SJacob Faibussowitsch!   test:
272*2dfe2926SJacob Faibussowitsch!     suffix: xml
273*2dfe2926SJacob Faibussowitsch!     args: -log_view ascii:filename.xml:ascii_xml
274*2dfe2926SJacob Faibussowitsch!
275*2dfe2926SJacob Faibussowitsch! testset:
276*2dfe2926SJacob Faibussowitsch!   args: -log_view ascii:filename.txt
277*2dfe2926SJacob Faibussowitsch!   output_file: output/ex3f90.out
278*2dfe2926SJacob Faibussowitsch!   requires: defined(PETSC_USE_LOG)
279*2dfe2926SJacob Faibussowitsch!   test:
280*2dfe2926SJacob Faibussowitsch!     suffix: 1
281*2dfe2926SJacob Faibussowitsch!     nsize: 1
282*2dfe2926SJacob Faibussowitsch!   test:
283*2dfe2926SJacob Faibussowitsch!     suffix: 2
284*2dfe2926SJacob Faibussowitsch!     nsize: 2
285*2dfe2926SJacob Faibussowitsch!   test:
286*2dfe2926SJacob Faibussowitsch!     suffix: 3
287*2dfe2926SJacob Faibussowitsch!     nsize: 3
288*2dfe2926SJacob Faibussowitsch!
289*2dfe2926SJacob Faibussowitsch! testset:
290*2dfe2926SJacob Faibussowitsch!   suffix: detail
291*2dfe2926SJacob Faibussowitsch!   args: -log_view ascii:filename.txt:ascii_info_detail
292*2dfe2926SJacob Faibussowitsch!   output_file: output/ex3f90.out
293*2dfe2926SJacob Faibussowitsch!   requires: defined(PETSC_USE_LOG)
294*2dfe2926SJacob Faibussowitsch!   test:
295*2dfe2926SJacob Faibussowitsch!     suffix: 1
296*2dfe2926SJacob Faibussowitsch!     nsize: 1
297*2dfe2926SJacob Faibussowitsch!   test:
298*2dfe2926SJacob Faibussowitsch!     suffix: 2
299*2dfe2926SJacob Faibussowitsch!     nsize: 2
300*2dfe2926SJacob Faibussowitsch!   test:
301*2dfe2926SJacob Faibussowitsch!     suffix: 3
302*2dfe2926SJacob Faibussowitsch!     nsize: 3
303*2dfe2926SJacob Faibussowitsch!
304*2dfe2926SJacob Faibussowitsch! testset:
305*2dfe2926SJacob Faibussowitsch!   suffix: xml
306*2dfe2926SJacob Faibussowitsch!   args: -log_view ascii:filename.xml:ascii_xml
307*2dfe2926SJacob Faibussowitsch!   output_file: output/ex3f90.out
308*2dfe2926SJacob Faibussowitsch!   requires: defined(PETSC_USE_LOG)
309*2dfe2926SJacob Faibussowitsch!   test:
310*2dfe2926SJacob Faibussowitsch!     suffix: 1
311*2dfe2926SJacob Faibussowitsch!     nsize: 1
312*2dfe2926SJacob Faibussowitsch!   test:
313*2dfe2926SJacob Faibussowitsch!     suffix: 2
314*2dfe2926SJacob Faibussowitsch!     nsize: 2
315*2dfe2926SJacob Faibussowitsch!   test:
316*2dfe2926SJacob Faibussowitsch!     suffix: 3
317*2dfe2926SJacob Faibussowitsch!     nsize: 3
318*2dfe2926SJacob Faibussowitsch!
319*2dfe2926SJacob Faibussowitsch!TEST*/
320