Efficient Data Race Detection for Distributed Memory Parallel Programs
In this paper, the authors present a precise data race detection technique for distributed memory parallel programs. The authors' technique, which they call Active Testing, builds on their previous work on race detection for shared memory Java and C programs and it handles programs written using shared memory approaches as well as bulk communication. Active testing works in two phases: in the first phase, it performs an imprecise dynamic analysis of an execution of the program and finds potential data races that could happen if the program is executed with a different thread schedule. In the second phase, active testing re-executes the program by actively controlling the thread schedule so that the data races reported in the first phase can be confirmed.