mpi-prog porting from lam -> scyld beowulf mpi difficulties
Peter Beerli
beerli at genetics.washington.edu
Thu Nov 29 13:19:33 PST 2001
Jim,
the buffer in broadcast_data_master gets allocated to the size needed
in pack_data_buffer() [which returns the allocated size of buffer]
before the buffer is broadcasted.
Peter
On Thu, 29 Nov 2001, James Long wrote:
> The buffer allocation is only one byte in broadcast_data_master.
> Looks like you should make it big enough for all your data and
> options before you broadcast it, as there is no telling what might
> stomp that memory after you pack it and before it gets sent.
>
> Jim
>
> At 5:03 PM -0800 11/28/01, Peter Beerli wrote:
> >Hi,
> >I have a program developed using MPI-1 under LAM.
> >It runs fine on several LAM-MPI clusters with different architecture.
> >A user wants to run it on a Scyld-beowulf cluster and there it fails.
> >I did a few tests myself and it seems
> >that the program stalls if run on more than 3 nodes, but seems to work for
> >2-3 nodes. The program has master-slaves architectures where the master
> >is mostly doing nothing. There are some reports sent to stdout from any node
> >(but this seems to work in beompi the same way as in LAM).
> >There are several things unclear to me
> >because I have no clue about the beompi system, beowulf and scyld in
> >particular.
> >
> >(1) if I run "top" why do I see 6 processes running when I start
> > with mpirun -np 3 migrate-n ?
> >
> >(2) The data-phase stalls on the slave nodes.
> > The master node is reading the data from a file and then broadcasts
> > a large char buffer to the slaves. Is this wrong, is there a better way
> > to do that [I do not know how big the data is and it is a complex mix
> > of strings numbers etc.]
> >
> >void
> >broadcast_data_master (data_fmt * data, option_fmt * options)
> >{
> > long bufsize;
> > char *buffer;
> > buffer = (char *) calloc (1, sizeof (char));
> > bufsize = pack_databuffer (&buffer, data, options);
> > MPI_Bcast (&bufsize, 1, MPI_LONG, MASTER, comm_world);
> > MPI_Bcast (buffer, bufsize, MPI_CHAR, MASTER, comm_world);
> > free (buffer);
> >}
> >
> >void
> >broadcast_data_worker (data_fmt * data, option_fmt * options)
> >{
> > long bufsize;
> > char *buffer;
> > MPI_Bcast (&bufsize, 1, MPI_LONG, MASTER, comm_world);
> > buffer = (char *) calloc (bufsize, sizeof (char));
> > MPI_Bcast (buffer, bufsize, MPI_CHAR, MASTER, comm_world);
> > unpack_databuffer (buffer, data, options);
> > free (buffer);
> >}
> >
> > the master and the first node seem to read the data fine
> > but the others either don't and wait or silently die.
> >
> >(3) what is the easiest way to debug this? With LAM I just attached to pids to
> > in gdb on the different nodes, but here the nodes are transparent to me
> > [but as I said I have never used a beowulf cluster before].
> >
> >
> >Can you give pointers, hints
> >
> >thanks
> >Peter
> >--
> >Peter Beerli, Genome Sciences, Box #357730, University of Washington,
> >Seattle WA 98195-7730 USA, Ph:2065438751, Fax:2065430754
> >http://evolution.genetics.washington.edu/PBhtmls/beerli.html
> >
> >
> >
> >_______________________________________________
> >Beowulf mailing list, Beowulf at beowulf.org
> >To change your subscription (digest mode or unsubscribe) visit
> >http://www.beowulf.org/mailman/listinfo/beowulf
>
>
--
Peter Beerli, Genome Sciences, Box #357730, University of Washington,
Seattle WA 98195-7730 USA, Ph:2065438751, Fax:2065430754
http://evolution.genetics.washington.edu/PBhtmls/beerli.html
More information about the Beowulf
mailing list