R: Re: [MPICH] MPI_Probe, MPI_Iprobe MPI_Bcast

Rajeev Thakur thakur at mcs.anl.gov
Mon Sep 18 09:46:26 CDT 2006


MPI_Probe and Iprobe can only be used to check for point-to-point
communication, not collective communication. The defintion of MPI_Iprobe
says: "The call matches the same message that would have been received by a
call to MPI_RECV(..., source, tag, comm, status) executed at the same point
in the program, and returns in status the same value that would have been
returned by MPI_RECV()." MPI_Recv can match only a point-to-point message.

Rajeev


> -----Original Message-----
> From: owner-mpich-discuss at mcs.anl.gov 
> [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Ashley Pittman
> Sent: Monday, September 18, 2006 8:33 AM
> To: Eng. A.A. Isola
> Cc: mpich-discuss at mcs.anl.gov; moschny at ipd.uni-karlsruhe.de
> Subject: Re: R: Re: [MPICH] MPI_Probe, MPI_Iprobe MPI_Bcast
> 
> On Fri, 2006-09-15 at 18:01 +0100, Eng. A.A. Isola wrote:
> > Ok for the answer, but there's anything that don't work...
> > 
> > 
> > For ex.
> > "No, because MPI_Bcast is a collective operation. All members of the
> >  
> > communicator used there must call MPI_Bcast simultaneously, behaves 
> > like a barrier. So if one of the members doesn't call 
> MPI_Bcast, you'll 
> > have a deadlock."
> > 
> > Sorry but the MPI_Barrier is a collective BLOCKING 
> > routine, then if for ex. there're 3 processes, and 1 of 
> them for any 
> > reasons is too much slow and don't call the MPI_Bcast, the others 2 
> > processes will wait it. Isn't mandatory that all the 
> processes call the 
> > MPI_Bcast "simultaneously", because the fater processes 
> will wait the 
> > slower (like the MPI_Barrier as you say).
> 
> I don't believe this is technically true if you read the spec 
> carefully.
> Obviously MPI_Barrier() performs a barrier and any process will block
> until all other processes have made the same call, it is after all the
> purpose of the function.
> 
> MPI_Bcast() on the other hand *doesn't* make any statement about
> performing a barrier, all it states is that you receive data from the
> root.  There are some implementations that spring to mind (mpich1
> springs to mind) where the root sends the data onto the 
> network and then
> returns without waiting for the data to arrive.
> 
> MPI_Barrier is the only collective that explicitly has to block until
> all processes have called the function according to the spec although
> MPI_AllReduce(), MPI_AllGather() and MPI_Alltoall() also need 
> to perform
> a barrier as you need the data from each process before any 
> process can
> return.
> 
> Ashley,
> 
> 




More information about the mpich-discuss mailing list