1c4762a1bSJed Brown! Synchronized printing: Fortran Example 2c4762a1bSJed Brown 3c4762a1bSJed Brownprogram main 4c4762a1bSJed Brown#include <petsc/finclude/petscsys.h> 58c8af28eSPedro Ricardo C. Souza use petscmpi ! or mpi or mpi_f08 6c4762a1bSJed Brown use petscsys 7c4762a1bSJed Brown 8c4762a1bSJed Brown implicit none 9c4762a1bSJed Brown PetscErrorCode :: ierr 10*f8402805SBarry Smith PetscMPIInt :: rank,size 1162ac926dSPierre Jolivet character(len=PETSC_MAX_PATH_LEN) :: outputString 12c4762a1bSJed Brown 13c4762a1bSJed Brown ! Every PETSc program should begin with the PetscInitialize() routine. 14c4762a1bSJed Brown 15*f8402805SBarry Smith PetscCallA(PetscInitialize(PETSC_NULL_CHARACTER,ierr)) 16c4762a1bSJed Brown 17c4762a1bSJed Brown ! The following MPI calls return the number of processes 18c4762a1bSJed Brown ! being used and the rank of this process in the group 19c4762a1bSJed Brown 20*f8402805SBarry Smith PetscCallMPIA(MPI_Comm_size(MPI_COMM_WORLD,size,ierr)) 21*f8402805SBarry Smith PetscCallMPIA(MPI_Comm_rank(MPI_COMM_WORLD,rank,ierr)) 22c4762a1bSJed Brown 23c4762a1bSJed Brown ! Here we would like to print only one message that represents 24c4762a1bSJed Brown ! all the processes in the group 25*f8402805SBarry Smith write(outputString,*) 'No of Processors = ', size, ', rank = ',rank,'\n' 26*f8402805SBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_WORLD,outputString,ierr)) 27c4762a1bSJed Brown 28*f8402805SBarry Smith write(outputString,*) rank,'Synchronized Hello World\n' 29*f8402805SBarry Smith PetscCallA(PetscSynchronizedPrintf(PETSC_COMM_WORLD,outputString,ierr)) 30*f8402805SBarry Smith 31*f8402805SBarry Smith write(outputString,*) rank,'Synchronized Hello World - Part II\n' 32*f8402805SBarry Smith PetscCallA(PetscSynchronizedPrintf(PETSC_COMM_WORLD,outputString,ierr)) 33*f8402805SBarry Smith PetscCallA(PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT,ierr)) 34*f8402805SBarry Smith 35c4762a1bSJed Brown 36c4762a1bSJed Brown ! Here a barrier is used to separate the two program states. 37*f8402805SBarry Smith PetscCallMPIA(MPI_Barrier(PETSC_COMM_WORLD,ierr)) 38c4762a1bSJed Brown 39*f8402805SBarry Smith write(outputString,*) rank,'Jumbled Hello World\n' 40*f8402805SBarry Smith PetscCallA(PetscPrintf(PETSC_COMM_SELF,outputString,ierr)) 41c4762a1bSJed Brown 42*f8402805SBarry Smith PetscCallA(PetscFinalize(ierr)) 43c4762a1bSJed Brownend program main 44c4762a1bSJed Brown 45c4762a1bSJed Brown!/*TEST 46c4762a1bSJed Brown! 47c4762a1bSJed Brown! test: 48c4762a1bSJed Brown! 49c4762a1bSJed Brown!TEST*/ 50