>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.<p>Does this hold for the following code:<p>for (j = 0; j < 3; j++) a = j % 2;<p>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.<p>Is all of the necessary work being offloaded to Valgrind?