[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