[mpich-discuss] RE: [MPICH] Problem setting up MPICH between a 32 bit INTEL and a 32 bit AMD machine

Rajeev Thakur thakur at mcs.anl.gov
Fri Feb 29 18:44:21 CST 2008


>         I just started looking into the non-blocking calls today. I am
> not sure of whats happening in the call : MPIR_Grequest_progress_poke.
> What exactly is the difference between a generalized request and a
> native request?

A generalized request is something defined in MPI-2's chapter on external
interfaces. It is a way for a new library to define its own nonblocking
operations and use MPI_Request objects to test or wait on.
MPIR_Grequest_progress_poke uses an extension to MPI-2 generalized requests,
as explained in
http://www-unix.mcs.anl.gov/~thakur/papers/grequest-redesign.pdf. But you
can just ignore generalized requests for now.

>         I am also keen on knowing how an unexpected message is handled
> by MPICH2 and I have understood what happens in the function
> MPIDI_CH3U_Recvq_FDU_or_AEP().  So, I had two ranks(ranks 0 and 1)
> executing MPI_Isend() and one rank(rank 2) executing the two matching
> MPI_Irecv() calls, with the hope that the message that is  arriving
> from rank 1 would be unexpected from rank 2's standpoint.  But, as it
> turns out, MPI_Wait() actually calls MPID_Progress_Wait(). This is a
> blocking call and the MPI_Isend() that is being executed by rank1 is
> blocked until rank2 executes the corresponding MPI_Irecv().
>         My question is, how can I get an incoming message at rank 2 to
> get into the unexpected queue and wait there till the receiver scans
> through the  queue until a match is found and proceeds to transfer of
> data?
>         To make this happen, MPID_Progress_Wait must never get called
> and so the MPI_Wait must constantly. Is that correct?

Not sure I understand your question fully, but MPID_Progress_wait will block
until some (any) event occurs. That event need not be the event of interest,
namely, the one for which the MPI_Wait was called. So, if the message from
the other send arrives in the meanwhile, MPID_Progress_Wait will cause it to
be received and placed in the unexpected queue.

Rajeev




More information about the mpich-discuss mailing list