Simulee: Detecting CUDA Synchronization Bugs via Memory-Access Modeling

Simulee: Detecting CUDA Synchronization Bugs via Memory-Access Modeling
复制标题

DOI:
10.1145/3377811.3380358
复制
发表时间:
2020-06
期刊:
2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE)
影响因子:
--
通讯作者:
Mingyuan Wu;Yicheng Ouyang;Husheng Zhou;Lingming Zhang;Cong Liu;Yuqun Zhang
Mingyuan Wu;Yicheng Ouyang;Husheng Zhou;Lingming Zhang;Cong Liu;Yuqun Zhang
中科院分区:
其他
文献类型:
--
作者:
Mingyuan Wu;Yicheng Ouyang;Husheng Zhou;Lingming Zhang;Cong Liu;Yuqun Zhang

文献摘要

被引文献

相似文献

虽然CUDA已成为通用GPU计算的主流并行计算平台和编程模型,但如何有效且高效地检测CUDA同步错误仍然是一个具有挑战性的开放问题。在本文中,我们提出了第一个轻量级 CUDA 同步错误检测框架,即 Simulee,通过解释相应的 LLVM 字节码并收集内存访问信息来对 CUDA 程序执行进行建模,以自动检测一般 CUDA 同步错误。为了评估 Simulee 的有效性和效率,我们使用 GitHub 上的 7 个流行的 CUDA 相关项目构建了一个基准,并在此基础上进行了一系列广泛的实验。实验结果表明,Simulee 可以检测到我们初步研究中手动识别的 24 个错误中的 21 个,以及所有项目中的 24 个以前未知的错误,其中 10 个已被开发人员确认。此外,Simulee 的性能显着优于 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.