[mpich-discuss] new communicator value differs for myid=0

Shan-ho Tsai shtsai at uga.edu
Mon Oct 14 14:50:51 CDT 2013


Hello,
I am using MPICH2 3.0.2 with gfortran 4.4.7 on a 64-bit
Linux machine. The program uses MPI_Comm_split to
create a new communicator. All processes print the same
value for MPI_COMM_WORLD, but for the new communicator,
all processes with myid greater than zero print the same value,
but myid=0 prints a different value. Why is that? I thought
all processes should print the same number as well. 

Simple test code:
===================================================
PROGRAM Test
  IMPLICIT NONE
  include "mpif.h"
  INTEGER :: nBins=8, nWalkers=8
  INTEGER :: ierr,numprocs,myid,energy_comm
  INTEGER :: energy_id,numranks,iBin,iWalker
  INTEGER :: mpistatus(MPI_STATUS_SIZE)

  CALL MPI_INIT(ierr)
  CALL MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)
  CALL MPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)

  iBin = myid/nWalkers
  iWalker = MOD(myid,nWalkers)
  CALL MPI_Comm_split(MPI_COMM_WORLD,iBin,iWalker,energy_comm,ierr)
  CALL MPI_COMM_SIZE(energy_comm,numranks,ierr)
  CALL MPI_COMM_RANK(energy_comm,energy_id,ierr)

  write(*,*)myid,MPI_COMM_WORLD,energy_comm

  CALL MPI_FINALIZE(ierr)

END PROGRAM Test
=========================================================

Compile with

mpif90 test.f90

Run with

mpirun -n 4 -f host.txt ./a.out

Generates
           0  1140850688 -2080374780
           2  1140850688 -2080374782
           1  1140850688 -2080374782
           3  1140850688 -2080374782

"mpif90 -v" returns:

mpif90 for MPICH version 3.0.2
Using built-in specs.
Target: x86_64-redhat-linux6E
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --disable-gnu-unique-object --with-as=/usr/libexec/binutils220/as --enable-languages=c,c++,fortran --disable-libgcj --with-mpfr=/builddir/build/BUILD/gcc-4.4.7-20120601/obj-x86_64-redhat-linux6E/mpfr-install/ --with-ppl=/builddir/build/BUILD/gcc-4.4.7-20120601/obj-x86_64-redhat-linux6E/ppl-install --with-cloog=/builddir/build/BUILD/gcc-4.4.7-20120601/obj-x86_64-redhat-linux6E/cloog-install --with-tune=generic --with-arch_32=i586 --build=x86_64-redhat-linux6E
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-1) (GCC)

I get the same output for MPICH2 1.4.1p1.
Any ideas what is happening? Or shouldn't the new communicator also
have the same value for all myids?

Thank you very much for any suggestions.
Shan-Ho

----------------------------------------------------
Shan-Ho Tsai
University of Georgia






More information about the discuss mailing list