Hi,
that's one of the mysteries of the MPI-1 standard.

Nevertheless, we should be std. conforming. Therefore, I included the comment 
and omitted the setting of .MPI_ERROR.

MPIch2 does not for the same reasons. Therefore I would say the tests are 
wrong.

With best regards,
Rainer


PS: e.g. from mpich2-1.0.7:
include/mpiimpl.h:2112
/* Do not set MPI_ERROR (only set if ERR_IN_STATUS is returned */
#define MPIR_Status_set_empty(status_)                  \
{                                                       \
    if ((status_) != MPI_STATUS_IGNORE)                 \
    {                                                   \
        (status_)->MPI_SOURCE = MPI_ANY_SOURCE;         \
        (status_)->MPI_TAG = MPI_ANY_TAG;               \
        (status_)->count = 0;                           \
        (status_)->cancelled = FALSE;                   \
    }                                                   \
}




On Sonntag, 8. Juni 2008, George Bosilca wrote:
> Here is what the MPI standard state:
>
> "In general, message passing calls do not modify the value of the
> error code field of status variables. This field may be updated only
> by the functions in Section 3.7.5 which return multiple statuses. The
> field is updated if and only if such function returns with an error
> code of MPI ERR IN STATUS.
>
> Rationale. The error field in status is not needed for calls that
> return only one status, such as MPI WAIT, since that would only
> duplicate the information returned by the function itself. The current
> design avoids the additional overhead of setting it, in such cases.
> The field is needed for calls that return multiple statuses, since
> each request may have had a different failure. (End of rationale.)"
>
> First, the sentence start with "In general" which is not a limiting
> statement, it absolutely doesn't state that the field doesn't have to
> be set. Second, the reason cited in the rationale is completely fake.
> We're talking about one store instruction, while the simple usage of
> the status will generate a cache miss.
>
> On the other side, a simple grep in the ompi-tests shows that hundreds
> of tests use this MPI_ERROR over the return value. If test writers
> (which are supposed to know the standard quite well), do such things,
> I wonder how can we expect that the users will never do it.
>
>    george.
>
> On Jun 6, 2008, at 12:04 PM, Brian Barrett wrote:
> > Since this is not the first or second time we've had the discussion in
> > the group, perhaps a comment in the code would be a good idea :).
> >
> > Brian
> >
> > On Jun 6, 2008, at 9:58 AM, Jeff Squyres wrote:
> >> George --
> >>
> >> This is not correct.  Note the comment that says to see MPI-1.2
> >> section 3.2.5 page 22 (I think it means MPI-1.1).  It says:
> >>
> >> "In general, message passing calls do not modify the value of the
> >> error code field of status variables.  This field may be updated only
> >> by the functions in Section 3.7.5 which return multiple statuses."
> >>
> >> So we should not be setting status.MPI_ERROR here; you should check
> >> the return value from MPI_WAIT to get the error code.
> >>
> >> On Jun 6, 2008, at 11:53 AM, bosi...@osl.iu.edu wrote:
> >>> Author: bosilca
> >>> Date: 2008-06-06 11:53:17 EDT (Fri, 06 Jun 2008)
> >>> New Revision: 18607
> >>> URL: https://svn.open-mpi.org/trac/ompi/changeset/18607
> >>>
> >>> Log:
> >>> Update the MPI_ERROR field as well.
> >>>
> >>> Text files modified:
> >>> trunk/ompi/request/req_wait.c |     1 +
> >>> 1 files changed, 1 insertions(+), 0 deletions(-)
> >>>
> >>> Modified: trunk/ompi/request/req_wait.c
> >>> =
> >>> =
> >>> =
> >>> =
> >>> =
> >>> =
> >>> =
> >>> =
> >>> =
> >>> =
> >>> ====================================================================
> >>> --- trunk/ompi/request/req_wait.c (original)
> >>> +++ trunk/ompi/request/req_wait.c 2008-06-06 11:53:17 EDT (Fri, 06
> >>> Jun 2008)
> >>> @@ -50,6 +50,7 @@
> >>>       /* See MPI-1.2, sec 3.2.5, p.22 */
> >>>       status->MPI_TAG    = req->req_status.MPI_TAG;
> >>>       status->MPI_SOURCE = req->req_status.MPI_SOURCE;
> >>> +        status->MPI_ERROR  = req->req_status.MPI_ERROR;
> >>>       status->_count     = req->req_status._count;
> >>>       status->_cancelled = req->req_status._cancelled;
> >>>   }
> >>> _______________________________________________
> >>> svn-full mailing list
> >>> svn-f...@open-mpi.org
> >>> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full
> >>
> >> --
> >> Jeff Squyres
> >> Cisco Systems
> >>
> >> _______________________________________________
> >> devel mailing list
> >> de...@open-mpi.org
> >> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> >
> > --
> >   Brian Barrett
> >   Open MPI developer
> >   http://www.open-mpi.org/
> >
> >
> > _______________________________________________
> > devel mailing list
> > de...@open-mpi.org
> > http://www.open-mpi.org/mailman/listinfo.cgi/devel



-- 
----------------------------------------------------------------
Dipl.-Inf. Rainer Keller   http://www.hlrs.de/people/keller
 HLRS                          Tel: ++49 (0)711-685 6 5858
 Nobelstrasse 19                  Fax: ++49 (0)711-685 6 5832
 70550 Stuttgart                    email: kel...@hlrs.de     
 Germany                             AIM/Skype:rusraink

Reply via email to