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