The new MPI-3 function MPI_Improbe might be helpful here, but it may still cost you extra in temporary buffer space (allocated internally in MPI), depending on the size of the incoming message.
Meaning: OMPI (and other MPI's) will still allocate *something* for each matched incoming message, even if you don't receive it right away. That *something* may be the entire message (if it's short), or the first part of the message (if it's long).
We've implemented MPI_Improbe (and friends) on the OMPI SVN trunk; it won't be available in a general release until the OMPI 1.7 series. But you might want to give it a whirl anyway...?
On Apr 20, 2012, at 5:14 PM, Jeffrey A Cummings wrote:
> MPI_Iprobe returns a single status object if at least one message is waiting in a queue. I would like to be able to do something similar (i.e., non blocking probes) which would produce an array of status objects representing all messages waiting in a queue. I would then decide on the order of actual message reception based on the source field of the status array objects. Does anyone know of a way to accomplish this?
> Jeff Cummings_______________________________________________
> users mailing list
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/