]> Simple MPI performance measurement program example (FORTRAN)

Simple MPI performance measurement program example (FORTRAN)


If Cut/Copy and Paste fails, then click here for download.


      program main
      implicit none
      include "mpif.h"
      integer ierr,size,rank,i,status(MPI_STATUS_SIZE)
      real*8 t0,t1
      character*1 buf(100000)
      call MPI_Init (ierr)
      call MPI_Comm_size(MPI_COMM_WORLD,size,ierr)
      call MPI_Comm_rank(MPI_COMM_WORLD,rank,ierr)
      do i=1,100000
        buf(i) = 'x'
        enddo
      do i=1,100000
        if (rank.eq.0.and.size.gt.1) then
            t0 = MPI_Wtime()
            call MPI_Send(buf,i,MPI_CHARACTER,mod(rank+size+1,size),0,
     $                    MPI_COMM_WORLD,ierr)
            call MPI_Recv(buf,i,MPI_CHARACTER,mod(rank+size-1,size),0,
     $                    MPI_COMM_WORLD,status,ierr)
            t1 = MPI_Wtime()
            write (*,*) 'message size = ',i,' ',
     $                  'norm comm time = ',(t1-t0)/real(size)
          elseif (rank.ne.0.and.size.gt.1) then
            call MPI_Recv(buf,i,MPI_CHARACTER,mod(rank+size-1,size),0,
     $                    MPI_COMM_WORLD,status,ierr)
            call MPI_Send(buf,i,MPI_CHARACTER,mod(rank+size+1,size),0,
     $                    MPI_COMM_WORLD,ierr)
          endif
        enddo
      call MPI_Finalize(ierr)
      end

Thu, 07 Aug 2014 00:56:57 +0200

Stephan K.H. Seidl