[Boost-bugs] [Boost C++ Libraries] #9356: Unexpected wait_any function behavor (with irecv)

Subject: [Boost-bugs] [Boost C++ Libraries] #9356: Unexpected wait_any function behavor (with irecv)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-11-07 16:42:30

#9356: Unexpected wait_any function behavor (with irecv)
 Reporter: christopher.bignamini@… | Owner: troyer
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: mpi
  Version: Boost 1.54.0 | Severity: Problem
 Keywords: wait_any, mpi, non blocking |
 The boost wait_any function does not behave as the corresponding MPI
 function, in correspondence to irecv function calls, when more than 1 data
 transmission request is present. In particular it is possible that after a
 first successfully completed communication all the others are not checked
 at all, with the function always returning as in case of a new completed
 communication. This unexpected behavior is probably due to the following
 code lines (in file nonblocking.hpp, from line 61):

 // Check if we have found a completed request. If so, return it.
 if (optional<status> result = current->test())
       return std::make_pair(*result, current);

 If a previously completed request is tested the corresponding optional
 result is returned and, with the above conditional statement, this
 condition leads to a subsequent return to the external calling code. The
 performed request status check should therefore probably also include the
 required information to exclude previously completed communications.
 By commenting the above lines and using the wait_any function with
 standard MPI data types the unexpected behavior disappears since in this
 case the boost function is allowed to make use of the corresponding MPI

Ticket URL: <https://svn.boost.org/trac/boost/ticket/9356>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:14 UTC