\(\textsf{GPUMC}\) : A Stateless Model Checker for GPU Weak Memory Concurrency
摘要
GPU computing is embracing weak memory concurrency for performance improvement. However, compared to CPUs, modern GPUs provide more fine-grained concurrency features such as scopes, have additional properties like divergence, and thereby follow different weak memory consistency models. These features and properties make concurrent programming on GPUs more complex and error-prone. To this end, we present \(\textsf{GPUMC}\) , a stateless model checker to check the correctness of GPU shared-memory concurrent programs under scoped-RC11 weak memory concurrency model. \(\textsf{GPUMC}\) explores all possible executions in GPU programs to reveal various errors - races, barrier divergence, and assertion violations. In addition, \(\textsf{GPUMC}\) also automatically repairs these errors in the appropriate cases. We evaluate \(\textsf{GPUMC}\) on benchmarks and real-life GPU programs. \(\textsf{GPUMC}\) is efficient both in time and memory in verifying large GPU programs where state-of-the-art tools are timed out. In addition, \(\textsf{GPUMC}\) identifies all known errors in these benchmarks compared to the state-of-the-art tools.