On Thu, 6 Nov 2008, Benjamin Kirk wrote:
>>> What about instead using MPI_Probe on the receiving side to get the message
>>> size and resizing the buffer when need be?
>> Okay, one more question: what's our definition of "when need be"? If
>> we're willing to shrink as well as enlarge the buffer, then it shouldn't
>> hurt to call vector::resize() every time, right?
> I agree. I'd think we always want to resize the vector to the number of
> elements received. I, for one, when calling the recv would like to
> immediately loop over the vector without worrying that the end of it may
> contain nonsense.
> And at any rate, if we *don't* resize() then we have to return the
> size in the status object, which seems unnecessarily awkward...
That's already implicitly happening. Should we now change the return
type from Status to void? We now already know the size, we've thrown
an exception (or can) on MPI error, and we know the source was
src_processor_id. Is there any other info we can get from a Status
object that's worth constructing it for?