]>
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