[m-rev.] post-commit review: Enable configuration of parallel conjunction reordering.

Paul Bone pbone at csse.unimelb.edu.au
Thu Sep 20 15:38:37 AEST 2012


On Thu, Sep 20, 2012 at 01:13:46AM +1000, Julien Fischer wrote:
> 
> 
> 
> On Thu, 20 Sep 2012, Paul Bone wrote:
> 
> >
> >For post commit review.
> >
> >This is a 2 line change, but I would appriciate it if people could read
> >this and check that I've diagnosed the situation correctly.
> 
> That appears to be the log message for a different change.
> 

Ah,

An error when composing the e-mail, the commit was made with the correct
message which was:

Prevent two different race conditions in the wsdeque implementation.

Chase & Lev's algorithm for circular work stealing deques does not
specify a memory model, and appears to assume a strict memory model such
as Java provides, this I have inferred because the examples in their
paper use Java syntax.

When we translated their algorithms into C we introduced two bugs by
assuming that we could write the code in C as it appeared in the Java
examples.  C has no specific memory model and allows your processor to
re-order many memory operations.  This patch corrects both bugs by
introducing one memory fence operation per bug and explains the bugs and
fixes in comments.

Unfortunately this causes the fibs micro benchmark (without granularity
control) to slow down by almost one third.  Which is disappointing bot
unavoidable.

runtime/mercury_wsdeque.h:
    As above.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: Digital signature
URL: <http://lists.mercurylang.org/archives/reviews/attachments/20120920/e0493f7b/attachment.sig>


More information about the reviews mailing list