Efficient Data Race Detection for Async-Finish Parallelism
One of the major productivity hurdles for parallel programming is non-determinism - a parallel program may yield different results on different executions with the same input, depending on the order in which operations are interleaved. A major source of non-determinism is data races, and checking for the absence of data races is an important candidate for run-time verification. Past work on data race detection includes different techniques for different programming models such as SPMD, fork-join, and monitors. However, the run-time overheads incurred by past techniques are still prohibitively large (often a slowdown of 10 or larger) for use in mainstream software development.