Committed to both v1.1 and v1.0 -- will be in all snapshots tomorrow.

> -----Original Message-----
> From: users-boun...@open-mpi.org 
> [mailto:users-boun...@open-mpi.org] On Behalf Of Edgar Gabriel
> Sent: Thursday, May 04, 2006 7:31 AM
> To: Open MPI Users
> Subject: Re: [OMPI users] MPI_Intercomm_merge broken
> 
> Michael, I think you are right, the logic is exactly switched in our 
> code. I'll commit a fix on the trunk, and I assume that this fix will 
> also be backported to v1.1. and maybe v1.0
> 
> Thanks
> Edgar
> 
> Michael Kluskens wrote:
> > MPI_Intercomm_merge is broken in OpenMPI 1.1a4r9788 (and 
> likely all  
> > versions)
> > 
> > Details:  the second argument, high, of MPI_Intercomm_merge is a  
> > logical in Fortran (pg 216 of Using MPI) and an int in C.  
> This now  
> > correct with regards to the f90 interfaces in OpenMPI 1.1.  The  
> > meaning of "high" is as follows (from pg 313 MPI-The Complete  
> > Reference):
> > 
> > If processes in one group provided the value high = false and  
> > processes in the other group provided the value high = true 
> then the  
> > union orders the "low" group before the "high" group.
> > 
> > In other words if I have the following:
> >   MPI process "parent" calls MPI_Intercomm_merge with high 
> = .false.  
> > ( high = 0 in C)
> >   MPI process "child" calls MPI_Intercomm_merge with high = .true.  
> > (high = 1 in C)
> > then in the merged communicator - parent has rank 0 and child has  
> > rank 1.  This not happening in my tests on OS X 10.4.6 with g95;  
> > however, my two alternative test systems handle this case 
> as I expect  
> > -- Debian Linux with MPICH2 1.0.3 (g95) and SGI MPI Library (sgi- 
> > mpt-1.10.1-sgi301r1) (Intel Fotran 9.x).
> > 
> > The following test code is written to use the Fortran 90 
> interfaces  
> > but it can be switched to the include file and fixed format source  
> > code (.f) and should compile with both f90 and f77 
> compilers.  I have  
> > not written a C test code.
> > 
> > Michael
> > 
> > mpif90 parent4.f90 -o parent4
> > mpif90 child4.f90 -o child4
> > 
> > parent startup:  0  of  1
> > a child starting
> > parent spawned child process
> > child  0 of  1
> > parent merge comm:  1 of  2
> > ERROR: parent rank incorrect after merge
> > ERROR: child rank incorrect after merge
> > 
> > -- parent4.f90 --
> >        program parent4
> >        USE MPI
> >        implicit none
> >        integer ierr,size,rank,child,allmpi
> >        integer k, subprocesses
> > 
> >        call MPI_INIT(ierr)
> >        call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
> >        call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr)
> > 
> >        write(6,*) 'parent startup: ', rank, ' of ', size
> >        subprocesses = 1
> > 
> >        call MPI_Comm_spawn('child4', MPI_ARGV_NULL,  
> > subprocesses,        &
> >       &  MPI_INFO_NULL, 0, MPI_COMM_WORLD, child,  
> > MPI_ERRCODES_IGNORE,   &
> >       &  ierr )
> >        write(6,*) 'parent spawned child process'
> > 
> >        call MPI_Intercomm_merge( child, .false., allmpi, ierr )
> >        call MPI_COMM_RANK(allmpi,rank,ierr)
> >        call MPI_COMM_SIZE(allmpi,size,ierr)
> >        write(*,'(2(A,I3))') 'parent merge comm:',rank, ' of', size
> > 
> >        if ( rank .ne. 0 ) then
> >          write(6,*) 'ERROR: parent rank incorrect after merge'
> >        end if
> >        call MPI_COMM_FREE(allmpi,ierr)
> >        call MPI_COMM_FREE(child,ierr)
> > 
> >        call MPI_FINALIZE(ierr)
> >        end
> > -- child4.f90 --
> >        program child4
> >        USE MPI
> >        implicit none
> >        integer :: ierr,size,rank,parent,rsize,allmpi
> > 
> >        write(*,*) 'a child starting'
> >        call MPI_INIT(ierr)
> >        call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
> >        call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr)
> >        write(*,'(2(A,I3))') 'child',rank,' of', size
> >        call MPI_Comm_get_parent(parent,ierr)
> > 
> >        call MPI_Intercomm_merge( parent, .true., allmpi, ierr )
> >        call MPI_COMM_RANK(allmpi,rank,ierr)
> >        call MPI_COMM_SIZE(allmpi,size,ierr)
> >        if ( rank .eq. 0 ) then
> >          write(6,*) 'ERROR: child rank incorrect after merge'
> >        end if
> > 
> >        call MPI_COMM_FREE(allmpi,ierr)
> >        call MPI_COMM_FREE(parent,ierr)
> >        call MPI_FINALIZE(ierr)
> > 
> >        write(*,'(2(A,I3),A)') 'child',rank,' of',size,' exiting'
> >        end
> > ------------------------------------
> > 
> > On May 2, 2006, at 11:54 PM, Jeff Squyres (jsquyres) wrote:
> > 
> > 
> >>Ok -- let me know what you find.  I just checked and the 
> code *looks*
> >>right to me, but that doesn't mean that there isn't some deeper
> >>implication that I'm missing.
> >>
> >>
> >>>-----Original Message-----
> >>>From: users-boun...@open-mpi.org
> >>>[mailto:users-boun...@open-mpi.org] On Behalf Of Michael Kluskens
> >>>Sent: Tuesday, May 02, 2006 6:05 PM
> >>>To: Open MPI Users
> >>>Subject: Re: [OMPI users] openmpi-1.0.2 configure problem
> >>>
> >>>My test codes compile fine but I'm fairly certain the logical is
> >>>being handled incorrectly.  When I merge two comm's with one having
> >>>high=.false. and the other high=.true., the latter should go
> >>>into the
> >>>higher ranks and the former should contain rank 0.
> >>>
> >>>I'll work it over again tomorrow and see if I can create an f77
> >>>version or use the mpi.h file and see if I can get a clear
> >>>difference
> >>>and I'll compare against MPICH2 but someone else should look into
> >>>this issue.
> >>>
> >>>Michael
> >>>
> >>>On May 1, 2006, at 11:57 PM, Jeff Squyres (jsquyres) wrote:
> >>>
> >>>
> >>>>I just fixed the INTERCOMM_MERGE/logical issue on the trunk
> >>>
> >>>and the
> >>>
> >>>>v1.1
> >>>>branch -- can you give it a whirl there?
> >>>>
> >>>>I ask because this issue is a bug that we fixed on the trunk (and
> >>>>therefore v1.1) and didn't back-port it to v1.0.  There's actually
> >>>>quite
> >>>>a few of these F90 fixes on the trunk/v1.1 branch that we did not
> >>>>back-port to v1.0 (e.g., most of the other logical fixes) mainly
> >>>>because
> >>>>we thought you were the main consumer of the F90 MPI API (and
> >>>>therefore
> >>>>it wasn't worth it to back port :-) ).  If you need all
> >>>
> >>>these fixes in
> >>>
> >>>>v1.0, we can spend the time to do the back-port, but would prefer
> >>>>not to
> >>>>if possible.
> >>>>
> >>>>
> >>>>
> >>>>>-----Original Message-----
> >>>>>From: users-boun...@open-mpi.org
> >>>>>[mailto:users-boun...@open-mpi.org] On Behalf Of Michael Kluskens
> >>>>>Sent: Monday, May 01, 2006 6:20 PM
> >>>>>To: Open MPI Users
> >>>>>Subject: [OMPI users] openmpi-1.0.2 configure problem
> >>>>>
> >>>>>checking if FORTRAN compiler supports integer(selected_int_kind
> >>>>>(2))... yes
> >>>>>checking size of FORTRAN integer(selected_int_kind(2))... unknown
> >>>>>configure: WARNING: *** Problem running configure test!
> >>>>>configure: WARNING: *** See config.log for details.
> >>>>>configure: error: *** Cannot continue.
> >>>>>
> >>>>>Source code: openmpi-1.0.2 stable
> >>>>>OS X 10.4.5 with g95 (Apr 27 2006)
> >>>>>./configure F77=g95 FC=g95 LDFLAGS=-lSystemStubs
> >>>>>
> >>>>>I find this rather surprising given that I have been regularly
> >>>>>building nightly snapshots of Open MPI 1.1 and 1.2 (the
> >>>
> >>>other bug is
> >>>
> >>>>>preventing me from using them at the moment till either 
> I change my
> >>>>>code or the bugs gets fixed).
> >>>>>
> >>>>>
> >>>>
> >>>>_______________________________________________
> >>>>users mailing list
> >>>>us...@open-mpi.org
> >>>>http://www.open-mpi.org/mailman/listinfo.cgi/users
> >>>>
> >>>
> >>>_______________________________________________
> >>>users mailing list
> >>>us...@open-mpi.org
> >>>http://www.open-mpi.org/mailman/listinfo.cgi/users
> >>>
> >>
> >>_______________________________________________
> >>users mailing list
> >>us...@open-mpi.org
> >>http://www.open-mpi.org/mailman/listinfo.cgi/users
> >>
> > 
> > 
> > _______________________________________________
> > users mailing list
> > us...@open-mpi.org
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 

Reply via email to