include 'mpif.h' integer numtasks, rank,stat(MPI_STATUS_SIZE),ierr character*20 inmsg, outmsg call MPI_INIT(ierr) if(ierr.ne.0)then print*,'error setting MPI' call mpi_abort(mpi_comm_world,ierr) endif call mpi_comm_size(mpi_comm_world,numtasks,ierr) call mpi_comm_rank(mpi_comm_world,rank,ierr) outmsg='from node' if(rank.eq.0)then do i=1,numtasks-1 call MPI_SEND(outmsg,20,MPI_CHARACTER,i,i,MPI_COMM_WORLD,ierr) call MPI_RECV(inmsg,20,MPI_CHARACTER,i,i,MPI_COMM_WORLD, 1 stat,ierr) print*,'rank=',rank,'recved msg ',inmsg,i enddo else call MPI_RECV(inmsg,20,MPI_CHARACTER,0,rank,MPI_COMM_WORLD, 1 stat,ierr) print*,'rank=',rank,'received ',inmsg call MPI_SEND(outmsg,20,MPI_CHARACTER,0,rank,MPI_COMM_WORLD, 1 ierr) endif call mpi_finalize(ierr) stop end