Boost logo

Boost-MPI :

Subject: Re: [Boost-mpi] multiple irecv tests failure with MPI_ERR_TRUNCATE
From: Walter Woods (woodswalben_at_[hidden])
Date: 2014-02-21 14:49:47


Well, in my case anyway I was test()'ing a single receive several times,
and that was leading to the message.

In Roy's case, especially the test file, the problem is having multiple
irecv's happening. Lookat the underlying request::handle_serialized_irecv
implementation in boost/mpi/communicator.hpp - one recv is accomplished
through several MPI_IRecv requests issued in sequence. If you have several
irecvs running at once, then one is likely to get the other's data as its
length.

In other words, if you want to receive multiple messages in the same tag,
be sure to only have one IRecv() with that tag running at a time. Data may
only be transferred serially (not in parallel) over a single tag anyhow.

Hope that helps,
Walt

On Fri, Feb 21, 2014 at 10:41 AM, Walter Woods <woodswalben_at_[hidden]>wrote:

> Hey,
>
> Wasn't quite sure how to reply to Roy's e-mail since I was unsubscribed
> before, but saw it was recent so wanted to chime in.
>
> I have this exact same problem. What I find interesting is that in my
> case, where I call irecv() from a number of other ranks directly, but with
> any_tag:
>
> world.irecv(1, mpi::any_tag, data);
>
> I only have issues when there are more processes than those I am listening
> to. I find this to be especially odd. The issue seems like the second
> receive (after the data count) is picking up a separate ISend's count. I'm
> still looking into what the issue could be...
>
> Thanks,
> Walt
>



Boost-Commit list run by troyer at boostpro.com