!Homework 5 !Programmer: Chad Brewbaker !Email address: crb002@iastate.edu !Date: Febuary 16, 2004 !Machine used: hpc-class.iastate.edu (Intel Xenon cluster) !Compiler options used: program implicit none integer, parameter :: n=3 real*8,dimension(:),allocatable::B real*8::A(1:n) include "mpif.h" integer::i,j,ierror,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) call random_number(A) A=A+rank print *, 'On processor',rank,'A=',A if(rank==0)then allocate(B(1:n)) B=A do i=1,p-1 call MPI_Recv(A(1),n,MPI_REAL8,MPI_ANY_SOURCE,1,MPI_COMM_WORLD,status,ierror) do j=1,n B(j)=A(j)+B(j) enddo enddo print *,'Final result is B=',B deallocate(B) endif if(rank.ne.0)then call MPI_Send(A(1),n,MPI_REAL8,0,1,MPI_COMM_WORLD,ierror) endif call MPI_Finalize(ierror) end program !!$vincent% mpirun -np 4 hw5.exe !!$ On processor 1 A= 1.77326712988589 1.82325123434867 !!$ 1.14812062030844 !!$ On processor 2 A= 2.77326712988589 2.82325123434867 !!$ 2.14812062030844 !!$ On processor 3 A= 3.77326712988589 3.82325123434867 !!$ On processor 0 A= 0.773267129885890 0.823251234348674 !!$ 0.148120620308437 !!$ Final result is B= 9.09306851954356 9.29300493739470 !!$ 6.59248248123375 !!$ 3.14812062030844 !!$vincent%