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