Gmrace: Detecting data races in gpu programs via a low-overhead scheme

M Zheng, VT Ravi, F Qin… - IEEE Transactions on …, 2013 - ieeexplore.ieee.org
IEEE Transactions on Parallel and Distributed Systems, 2013ieeexplore.ieee.org
In recent years, GPUs have emerged as an extremely cost-effective means for achieving
high performance. While languages like CUDA and OpenCL have eased GPU programming
for nongraphical applications, they are still explicitly parallel languages. All parallel
programmers, particularly the novices, need tools that can help ensuring the correctness of
their programs. Like any multithreaded environment, data races on GPUs can severely affect
the program reliability. In this paper, we propose GMRace, a new mechanism for detecting …
In recent years, GPUs have emerged as an extremely cost-effective means for achieving high performance. While languages like CUDA and OpenCL have eased GPU programming for nongraphical applications, they are still explicitly parallel languages. All parallel programmers, particularly the novices, need tools that can help ensuring the correctness of their programs. Like any multithreaded environment, data races on GPUs can severely affect the program reliability. In this paper, we propose GMRace, a new mechanism for detecting races in GPU programs. GMRace combines static analysis with a carefully designed dynamic checker for logging and analyzing information at runtime. Our design utilizes GPUs memory hierarchy to log runtime data accesses efficiently. To improve the performance, GMRace leverages static analysis to reduce the number of statements that need to be instrumented. Additionally, by exploiting the knowledge of thread scheduling and the execution model in the underlying GPUs, GMRace can accurately detect data races with no false positives reported. Our experimental results show that comparing to previous approaches, GMRace is more effective in detecting races in the evaluated cases, and incurs much less runtime and space overhead.
ieeexplore.ieee.org