[mpich-discuss] MPI_allgather
Rajeev Thakur
thakur at mcs.anl.gov
Mon Apr 14 15:38:14 CDT 2008
Can you send us a small standalone test program that demonstrates the
problem?
Rajeev
> -----Original Message-----
> From: owner-mpich-discuss at mcs.anl.gov
> [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of koppole at aim.com
> Sent: Monday, April 14, 2008 9:03 AM
> To: mpich-discuss at mcs.anl.gov
> Subject: [mpich-discuss] MPI_allgather
>
> 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.
> Please follow my FORTRAN code below:
>
>
>
> 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
>
> do i=(1+mytaskid), dihe_num, numtasks
>
>
>
> 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
>
>
>
>
More information about the mpich-discuss
mailing list