一句话:提出首个轻量级 CUDA 同步缺陷检测框架 Simulee,通过解释 LLVM 字节码收集访存信息来自动检测同步缺陷。
CUDA 已成为通用 GPU 计算的主流平台与编程模型,但高效检测 CUDA 同步缺陷仍是难题。本文提出首个轻量级检测框架 Simulee:通过解释 CUDA 程序对应的 LLVM 字节码来建模执行,并收集内存访问信息,以自动发现一般性 CUDA 同步缺陷。作者基于 GitHub 上 7 个流行 CUDA 项目构建基准并开展实验。结果表明,Simulee 检测出初步研究中人工识别的 24 个缺陷中的 21 个,并在各项目中发现 24 个此前未知缺陷,其中 10 个已被开发者确认;其性能显著优于现有最先进的 CUDA 同步缺陷检测方法。
While CUDA has become a mainstream parallel computing platform and programming model for general-purpose GPU computing, how to effectively and efficiently detect CUDA synchronization bugs remains a challenging open problem. In this paper, we propose the first lightweight CUDA synchronization bug detection framework, namely Simulee, to model CUDA program execution by interpreting the corresponding LLVM bytecode and collecting the memory-access information for automatically detecting general CUDA synchronization bugs. To evaluate the effectiveness and efficiency of Simulee, we construct a benchmark with 7 popular CUDA-related projects from GitHub, upon which we conduct an extensive set of experiments. The experimental results suggest that Simulee can detect 21 out of the 24 manually identified bugs in our preliminary study and also 24 previously unknown bugs among all projects, 10 of which have already been confirmed by the developers. Furthermore, Simulee significantly outperforms state-of-the-art approaches for CUDA synchronization bug detection.