paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Hunting CUDA Bugs at Scale with cuFuzz

用 cuFuzz 大规模猎捕 CUDA 缺陷
OOPSLA 10(OOPSLA1)2026匹配度 3/10 · 论文主要研究 CUDA/GPU 程序的动态模糊测试与内存/并发 bug 检测,属于系统测试方向,与用户核心关注的静态分析、LLM/Agent 交叉、浮点程序分析和贝叶斯程序分析基本不重合;仅在 ML 系统/GPU 软件可靠性上有边缘关联。引用 0 inbox
Mohamed Tarek Ibn Ziad, Christos Kozyrakis
crossref: 2026-09-10

AI 速览

一句话:提出首个 CUDA 导向的模糊测试器 cuFuzz,通过全程序模糊测试、设备端覆盖率反馈与 sanitizer 解耦,发现 43 个未知 bug。

GPU 在现代软件中日益重要,但异构的主机-设备执行模型和不断膨胀的软件栈使 GPU 程序容易产生静态分析难以捕捉的内存安全与并发缺陷。已有 GPU 模糊测试工作受限于三个障碍:内核级模糊测试导致误报、缺少设备端覆盖率引导反馈、覆盖率与 sanitizer 工具不兼容。本文提出 cuFuzz,首个面向 CUDA 的模糊测试器:采用全程序模糊测试避免独立测试设备内核带来的误报;利用 NVBit 插桩设备端指令,并将设备端覆盖率与基于编译器的宿主端覆盖率合并;通过在不同进程中运行宿主端与设备端 sanitizer,将净化与覆盖率收集解耦。评估在 14 个 CUDA 程序上展开,共发现 43 个此前未知的缺陷(其中 19 个位于商业库),涵盖非法内存访问、未初始化读取和数据竞争。相比基线方法,cuFuzz 尤其在闭源目标上发现了更多边和独特输入;作者还量化了各组件开销,并加入持久模式支持以提升模糊测试吞吐。

问题
GPU 程序易受内存安全与并发缺陷影响,而现有 GPU 模糊测试因内核级测试误报、缺少设备端覆盖率反馈、覆盖率与 sanitizer 不兼容而难以实用。
方法
cuFuzz 采用全程序模糊测试,使用 NVBit 插桩设备端指令并将设备覆盖率与编译器宿主覆盖率合并,同时在不同进程中分别执行宿主端与设备端 sanitizer 以解耦净化与覆盖率收集。
评估
在 14 个 CUDA 程序上评估,发现 43 个未知缺陷(19 个在商业库),并在边覆盖与独特输入上优于基线,同时量化组件开销并引入持久模式提升吞吐。
原文摘要(Abstract)

GPUs play an increasingly important role in modern software. However, the heterogeneous host-device execution model and expanding software stacks make GPU programs prone to memory-safety and concurrency bugs that evade static analysis. While fuzz-testing, combined with dynamic error checking tools, offers a plausible solution, it remains underutilized for GPUs. In this work, we identify three main obstacles limiting prior GPU fuzzing efforts: (1) kernel-level fuzzing leading to false positives, (2) lack of device-side coverage-guided feedback, and (3) incompatibility between coverage and sanitization tools. We present cuFuzz, the first CUDA-oriented fuzzer that makes GPU fuzzing practical by addressing these obstacles. cuFuzz uses whole program fuzzing to avoid false positives from independently fuzzing device-side kernels. It leverages NVBit to instrument device-side instructions and merges the resultant coverage with compiler-based host coverage. Finally, cuFuzz decouples sanitization from coverage collection by executing host- and device-side sanitizers in separate processes. cuFuzz uncovers 43 previously unknown bugs (19 in commercial libraries) across 14 CUDA programs, including illegal memory accesses, uninitialized reads, and data races. cuFuzz achieves significantly more discovered edges and unique inputs compared to baseline approaches, especially on closed-source targets. Moreover, we quantify the execution time overheads of the different cuFuzz components and add persistent-mode support to improve the overall fuzzing throughput. Our results demonstrate that cuFuzz is an effective and deployable addition to the GPU testing toolbox. cuFuzz is publicly available at https://github.com/NVlabs/cuFuzz/ .

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot3809,
  title = {Hunting CUDA Bugs at Scale with cuFuzz},
  author = {Mohamed Tarek Ibn Ziad and Christos Kozyrakis},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {OOPSLA1},
  year = {2026},
  doi = {10.1145/3798231}
}