Dear all:
I ran this simple fortran code and got unexpected result:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
program reduce
implicit none
include 'mpif.h'
integer :: ierr, rank
real*8 :: send(5)
call mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world,rank,ierr)
send = real(rank)
print *, rank,':',send
call
mpi_allreduce(MPI_IN_PLACE,send,size(send),mpi_real8,mpi_sum,mpi_comm_world,ierr)
print *, rank,'#',send
call mpi_finalize(ierr)
end program reduce
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
When running with 3 processes
mpirun -np 3 reduce
The results I'm expecting is the sum of all 3 vectors, but I got the
unexpected result:
0 : 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000
2 : 2.0000000000000000 2.0000000000000000
2.0000000000000000 2.0000000000000000 2.0000000000000000
1 : 1.0000000000000000 1.0000000000000000
1.0000000000000000 1.0000000000000000 1.0000000000000000
0 # 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000
1 # 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000
2 # 0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 0.0000000000000000
During compilation and running there were no errors or warnings. I install
openMPI via fink. I believe somehow fink messed up during installation.
Instead of installing MPI from source (which takes hours on my machine), I
would like to know if there is a better than to find out what the problem
is, so that I could fix my current installation rather than reinstall MPI
from scratch.
--
David Zhang
University of California, San Diego