!Homework 1 !Febuary 2004 !Machine hpc-class.iastate.edu !Programmer: Chad Brewbaker program implicit none integer, parameter :: n=4 integer::i,ierror real*8,dimension(n)::A,B,C,D include "mpif.h" integer::p,rank,status(mpi_status_size) call mpi_init(ierror) call mpi_comm_size(mpi_comm_world,p,ierror) call mpi_comm_rank(mpi_comm_world,rank,ierror) if(rank==0)then do i=1,n A(i)=float(i) enddo call MPI_Send(A(1),n,MPI_REAL8,1,1,MPI_COMM_WORLD,ierror) call MPI_Recv(D(1),n,MPI_REAL8,MPI_ANY_SOURCE, 1, MPI_COMM_WORLD,status,ierror) print *,'D=' do i=1,n print *,D(i) enddo print *,'on processor of rank',rank endif if(rank==1)then call MPI_Recv(A(1),n,MPI_REAL8,MPI_ANY_SOURCE,1,MPI_COMM_WORLD,status,ierror) do i=1,n B(i)=A(i)+1 enddo call MPI_Send(B(1),n,MPI_REAL8,2,1,MPI_COMM_WORLD,ierror) endif if(rank==2)then call MPI_Recv(B(1),n,MPI_REAL8,MPI_ANY_SOURCE,1,MPI_COMM_WORLD,status,ierror) do i=1,n C(i)=B(i)+1 enddo call MPI_Send(C(1),n,MPI_REAL8,0,1,MPI_COMM_WORLD,ierror) endif !!$if(rank==3)then !!$ call MPI_Recv(C(1),n,MPI_REAL8,MPI_ANY_SOURCE,1,MPI_COMM_WORLD,status,ierror) !!$ do i=1,n !!$ D(i)=C(i)+1 !!$ enddo !!$ call MPI_Send(D(1),n,MPI_REAL8,0,1,MPI_COMM_WORLD,ierror) !!$endif call MPI_Finalize(ierror) end program !!$RESULTS !!$ !!$vincent% mpirun -np 4 ./hw1.exe !!$ D= !!$ 3.00000000000000 !!$ 4.00000000000000 !!$ 5.00000000000000 !!$ 6.00000000000000 !!$ on processor of rank 0 !!$vincent%