Boost C++ Libraries: Ticket #9356: Unexpected wait_any function behavor (with irecv) https://svn.boost.org/trac10/ticket/9356 <p> 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): </p> <pre class="wiki">// Check if we have found a completed request. If so, return it. if (optional&lt;status&gt; result = current-&gt;test()) return std::make_pair(*result, current); </pre><p> 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 function. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/9356 Trac 1.4.3 Matthias Troyer Mon, 11 Nov 2013 15:24:23 GMT status changed https://svn.boost.org/trac10/ticket/9356#comment:1 https://svn.boost.org/trac10/ticket/9356#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> <p> If I see things correctly then to recover the same functionality as MPI_Waitany we need to clear any request that was already returned. However, this means that the iterator always points to an invalid (finished) request. </p> Ticket Matthias Troyer Fri, 15 Nov 2013 19:22:19 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/9356#comment:2 https://svn.boost.org/trac10/ticket/9356#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/86712" title="Fixed #9356">[86712]</a>) Fixed <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9356" title="#9356: Bugs: Unexpected wait_any function behavor (with irecv) (closed: fixed)">#9356</a> </p> Ticket Matthias Troyer Fri, 15 Nov 2013 19:25:21 GMT <link>https://svn.boost.org/trac10/ticket/9356#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/9356#comment:3</guid> <description> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/86713" title="Fixed #9356">[86713]</a>) Fixed <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9356" title="#9356: Bugs: Unexpected wait_any function behavor (with irecv) (closed: fixed)">#9356</a> </p> </description> <category>Ticket</category> </item> </channel> </rss>