Checkedthreads: bug-free shared memory parallelism

  • >In a fork/join program, you need just two orders: run all loops from 0 to N. run them all backwards, from N to 0.

    Does this hold for the following code:

    for (j = 0; j < 3; j++) a = j % 2;

    In both forward (0, 1, 2) and backward (2, 1, 0) order, the final value of a is 0. But with the j==1 loop running last, a becomes 1 instead.

  • Great writeup and it looks like an excellent tool. We'll definitely give it a try. Parallelization is really hard to get right and any tools that can help are much appreciated.

  • Do you have any proofs of correctness for this at all? You claim to be able to detect almost all data race conditions, but I don't see much evidence for that in the blog post.

    Is all of the necessary work being offloaded to Valgrind?