# [mpich-discuss] MPI_allgather

koppole at aim.com koppole at aim.com
Mon Apr 14 09:03:07 CDT 2008

```Hello there,

I have a question/problem regarding mpi_allgather.

When I try to call mpi_allgather, the computations from the 0 (rank =0)
are filled properly while from all other process, I just get something
but the numbers are not correct.

Could any one help me ?

For your information, here is part of my FORTRAN CODE. I try to compute
the dihedral angle on all my nodes in the commreplica communicator.

FYI:  I have numtasks = 3 with mytaskid going from 0,1,2

-------------------------------------------------------------------------
-------------------------------------------------------------------------
-----------------------------------

!! I allocate the required memory for the dihedral arrays phi_arr and
phi_prt, which is a 2-D array of length dihe_num

allocate(phi_arr(3,dihe_num), stat = alloc_failed)

if (alloc_failed .ne. 0) call setup_alloc_error

allocate(phi_prt(3,dihe_num), stat = alloc_failed)

if (alloc_failed .ne. 0) call setup_alloc_error

!! Here I compute the dihedral on all my nodes ; mytaskid = rank of my
process and numtasks = no. of processors in this communicator

one(1:3,1) = atm_crd(1:3,dihe_arr(1,i))

two(1:3,1) = atm_crd(1:3,dihe_arr(2,i))

three(1:3,1) = atm_crd(1:3,dihe_arr(3,i))

four(1:3,1) = atm_crd(1:3,dihe_arr(4,i))

!! phipsi is a subroutine which compute the dihedral angle on the given
processor from the coordinates of the 4 atoms, which returns phid as
the dihedral angle

call phipsi(phid,one,two,three,four)

phi_prt(1,i) = phid

!! here I compute the cos and sin of the returned dihedral angle.

phi_prt(2,i) = dcos(phid)

phi_prt(3,i) = dsin(phid)

!! "j" keeps track of the number of angles filled.

j = j +1

end do

call mpi_allgather(phi_prt,3*j,mpi_double_precision, &

phi_arr,3*j,mpi_double_precision, &

commreplica,err_code_mpi)

if (mytaskid .eq. 0) then

do i=1,dihe_num

write(mdout,'(i3,3(1x,f7.3))') i, phi_arr(1:3,i)

end do

end if

-------------------------------------------------------------------------
-------------------------------------------------------------------------
-----------------------------------

when I do this: I just get the data from i=1,4,6,7 are correct, all
other indices is wrong :(. Am i doing something wrong ?

Can anyone help ?

Thanks a lot,

Cheers,

Sampath.

Sampath Koppole,

The Computational Molecular Biophysics Group,

Interdisciplinary Center for Scientific Computing (IWR),

368, Im Neuenheimer Feld,

Heidelberg. D-69120.

Germany.

Office   : +49-6221-54-8803

Home     : +49-6221-7293083

Mobile   : +49-173-660-5660

Email    : sampath.koppole at iwr.uni-heidelberg.de

Web Home : http://www.sampath.koppole.com

```