Hi,

you are right, I should have provided C++ and Fortran example, so I am doing now


Here is "cplusplus.cpp"

#include <mpi.h>
#include <iostream>
using namespace std;
int main()
{
    MPI::Init();
    char command[] = "./a.out";
    MPI::Info info;
    MPI::Intercomm child = MPI::COMM_WORLD.Spawn(command, NULL, 8,info, 0);
    int a[8]={0,0,0,0,0,0,0,0};
    int dummy;
    child.Allgather(&dummy, 0, MPI::INT, a, 1, MPI::INT);
    child.Disconnect();
    cout << "a[";
    for ( int i = 0; i < 7; i++ )
        cout << a[i] << ",";
    cout << a[7] << "]" << endl;

    MPI::Finalize();
}


Here is again "fortran.f90"

program main
 use mpi
 implicit none
 integer :: parent, rank, val, dummy, ierr
 call MPI_Init(ierr)
 call MPI_Comm_get_parent(parent, ierr)
 call MPI_Comm_rank(parent, rank, ierr)
 val = rank + 1
 call MPI_Allgather(val,   1, MPI_INTEGER, &
                    dummy, 0, MPI_INTEGER, &
                    parent, ierr)
 call MPI_Comm_disconnect(parent, ierr)
 call MPI_Finalize(ierr)
end program main

here is how you build and run

-bash-3.2$ mpif90 fortran.f90
-bash-3.2$ mpiCC -o parent cplusplus.cpp
-bash-3.2$ ./parent
a[0,0,0,0,0,0,0,0]



If I use mpich2,
-bash-3.2$ mpif90 fortran.f90
-bash-3.2$ mpiCC -o parent cplusplus.cpp
-bash-3.2$ ./parent
a[1,2,3,4,5,6,7,8]

I hope that you can repeat this problem to see problem with OPENMPI,

Thanks,


On Thu, May 20, 2010 at 10:09 AM, Jeff Squyres <jsquyres@cisco.com> wrote:
Can you send us an all-C or all-Fortran example that shows the problem?

We don't have easy access to test through the python bindings.  ...ok, I admit it, it's laziness on my part.  :-)  But having a pure Open MPI test app would also remove some possible variables and possible sources of error.


On May 20, 2010, at 9:43 AM, Battalgazi YILDIRIM wrote:

> Hi Jody,
>
> I think that it is correct, you can  test this example in your desktop,
>
> thanks,
>
> On Thu, May 20, 2010 at 3:18 AM, jody <jody.xha@gmail.com> wrote:
> Hi
> I am really no python expert, but it looks to me as if you were
> gathering arrays filled with zeroes:
>  a = array('i', [0]) * n
>
> Shouldn't this line be
>  a = array('i', [r])*n
> where r is the rank of the process?
>
> Jody
>
>
> On Thu, May 20, 2010 at 12:00 AM, Battalgazi YILDIRIM
> <yildirimga@gmail.com> wrote:
> > Hi,
> >
> >
> > I am trying to use intercommunicator ::Allgather between two child process.
> > I have fortran and Python code,
> > I am using mpi4py for python. It seems that ::Allgather is not working
> > properly in my desktop.
> >
> >  I have contacted first mpi4py developers (Lisandro Dalcin), he simplified
> > my problem and provided two example files (python.py and fortran.f90,
> > please see below).
> >
> > We tried with different MPI vendors, the following example worked correclty(
> > it means the final print out should be array('i', [1, 2, 3, 4, 5, 6, 7, 8])
> > )
> >
> > However, it is not giving correct answer in my two desktop (Redhat and
> > ubuntu) both
> > using OPENMPI
> >
> > Could yo look at this problem please?
> >
> > If you want to follow our discussion before you, you can go to following
> > link:
> > http://groups.google.com/group/mpi4py/browse_thread/thread/c17c660ae56ff97e
> >
> > yildirim@memosa:~/python_intercomm$ more python.py
> > from mpi4py import MPI
> > from array import array
> > import os
> >
> > progr = os.path.abspath('a.out')
> > child = MPI.COMM_WORLD.Spawn(progr,[], 8)
> > n = child.remote_size
> > a = array('i', [0]) * n
> > child.Allgather([None,MPI.INT],[a,MPI.INT])
> > child.Disconnect()
> > print a
> >
> > yildirim@memosa:~/python_intercomm$ more fortran.f90
> > program main
> >  use mpi
> >  implicit none
> >  integer :: parent, rank, val, dummy, ierr
> >  call MPI_Init(ierr)
> >  call MPI_Comm_get_parent(parent, ierr)
> >  call MPI_Comm_rank(parent, rank, ierr)
> >  val = rank + 1
> >  call MPI_Allgather(val,   1, MPI_INTEGER, &
> >                     dummy, 0, MPI_INTEGER, &
> >                     parent, ierr)
> >  call MPI_Comm_disconnect(parent, ierr)
> >  call MPI_Finalize(ierr)
> > end program main
> >
> > yildirim@memosa:~/python_intercomm$ mpif90 fortran.f90
> >
> > yildirim@memosa:~/python_intercomm$ python python.py
> > array('i', [0, 0, 0, 0, 0, 0, 0, 0])
> >
> >
> > --
> > B. Gazi YILDIRIM
> >
> > _______________________________________________
> > users mailing list
> > users@open-mpi.org
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
> >
>
> _______________________________________________
> users mailing list
> users@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
>
> --
> B. Gazi YILDIRIM
> _______________________________________________
> users mailing list
> users@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


--
Jeff Squyres
jsquyres@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


_______________________________________________
users mailing list
users@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users



--
B. Gazi YILDIRIM