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.
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 :).
> 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, bosilca_at_[hidden] 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
>>> 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
>> Jeff Squyres
>> Cisco Systems
>> devel mailing list
> Brian Barrett
> Open MPI developer
> devel mailing list
- application/pkcs7-signature attachment: smime.p7s