← 最新论文
💻 computer science

Hunting CUDA Bugs at Scale with cuFuzz

本文介绍了 cuFuzz,这是首个通过采用全程序模糊测试、利用 NVBit 实现设备端覆盖率引导以及解耦清理工具与覆盖率收集等创新机制,有效克服现有障碍并成功在 14 个 CUDA 程序中(含商业库)发现 43 个未知漏洞的实用化 GPU 模糊测试工具。

原作者: Mohamed Tarek Ibn ziad, Christos Kozyrakis

发布于 2026-03-16
📖 1 分钟阅读☕ 轻松阅读

原作者: Mohamed Tarek Ibn ziad, Christos Kozyrakis

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这是一篇关于如何给 GPU(图形处理器)“做体检”并找出隐藏故障的学术论文。为了让你更容易理解,我们可以把 GPU 程序想象成一家繁忙的跨国物流公司,而这篇论文介绍了一种全新的、更聪明的“质检员”系统,名叫 cuFuzz

🌟 核心故事:为什么以前的“质检员”会失效?

在 cuFuzz 出现之前,人们想给 GPU 程序找 bug(错误),就像以前的质检员一样,主要存在三个大麻烦:

  1. 只盯着“车间”看,忽略了“总部”指令(粒度问题)

    • 比喻:GPU 程序由两部分组成:**主机(CPU,总部)**负责发号施令,**设备(GPU,车间)**负责干活。以前的质检员只盯着“车间”里的工人(内核)看,不管“总部”发了什么指令。
    • 后果:这会导致误报。比如,总部规定“如果货物没打包好,严禁装车”,但质检员只盯着车间,看到工人试图装没打包的货,就大喊“出事了!”。其实,在真实的流程中,总部早就拦截了,根本不会发生。以前的方法就是这种“瞎指挥”。
  2. 看不见“车间”里的具体操作(缺乏覆盖)

    • 比喻:以前的质检员只能看到“总部”发了什么指令,却看不见“车间”里工人具体是怎么配合的。
    • 后果:很多深藏在车间内部的复杂操作(比如某些特殊的并行计算路径),如果总部没特意发指令,质检员就永远发现不了。这就好比你只看了经理的日程表,却不知道员工在茶水间偷偷干了什么坏事。
  3. 工具打架,无法同时使用(工具不兼容)

    • 比喻:要找出 bug,需要两种工具:一种是**“探照灯”(覆盖率工具,用来发现新路径),另一种是“安检仪”**(Sanitizer,用来检查内存错误、数据冲突)。
    • 后果:在 GPU 的世界里,这两种工具就像两个性格不合的警察,不能同时在一个房间里工作。用了探照灯,安检仪就罢工;用了安检仪,探照灯就瞎了。以前的方法只能二选一,导致要么找不到新路径,要么查不出深层错误。

🚀 cuFuzz 的三大绝招

为了解决这些问题,NVIDIA 的研究人员(Mohamed Tarek Ibn Ziad 和 Christos Kozyrakis)发明了 cuFuzz。它就像一位全能型的高级质检总监,用了三招来破局:

1. 全局视角:不再“盲人摸象”

  • 做法:cuFuzz 不再单独检查某个车间(内核),而是监控整个物流公司的运作流程(从总部发令到车间干活,再到数据回传)。
  • 效果:它知道总部的规则,所以不会把那些“理论上不可能发生”的违规操作当成 bug(消除了误报)。同时,它能发现那些因为总部指令错误导致车间出错的真实 bug。

2. 双重视野:给车间装上“隐形摄像头”

  • 做法:对于闭源的“车间”(比如 NVIDIA 的商业库,代码不公开),cuFuzz 使用了一种叫 NVBit 的“隐形摄像头”技术。它能在不修改代码的情况下,实时记录车间里每一个工人的动作和路径。
  • 效果:它把“总部”的路径和“车间”的路径拼在一起,画出了一张完整的全图。这样,无论 bug 藏得多深,只要走了一条新路,cuFuzz 就能发现。

3. 分头行动:让工具“错峰上班”

  • 做法:既然“探照灯”和“安检仪”不能一起工作,cuFuzz 就把它们分在不同的房间(进程)里
    • 主流程负责用“探照灯”快速扫描,寻找新的路径。
    • 一旦发现了有趣的新路径,cuFuzz 就立刻把这个任务派给“安检仪”去详细检查。
  • 效果:既保证了扫描速度,又确保了深度检查。就像先快速筛选出可疑包裹,再对可疑包裹进行开包检查,而不是对所有包裹都开包。

🏆 战果如何?

cuFuzz 在 14 个不同的 GPU 程序(包括一些著名的商业库,如图像处理、深度学习库)上进行了测试,成绩非常亮眼:

  • 抓到了 43 个以前没人发现的 bug:其中包括 19 个在商业软件中存在的严重错误(比如内存越界、数据竞争、未初始化读取)。
  • 修复率高:这些 bug 报告给开发者后,大部分已经被修复了。
  • 效率提升:相比于旧方法,cuFuzz 在发现新路径和独特输入方面表现更好,尤其是在面对那些代码不公开的“黑盒”软件时,优势巨大。

💡 总结与启示

这就好比以前的质检员是拿着放大镜在车间里乱转,容易看错、漏看,还容易和保安打架。而 cuFuzz 则是给整个物流系统装上了智能监控和自动安检系统,它懂得全局逻辑,能看清内部细节,还能灵活调度工具。

这篇论文告诉我们:GPU 程序越来越复杂,不能再用老办法测试了。 cuFuzz 提供了一种实用、高效的方案,让 GPU 软件变得更安全、更可靠。

一句话总结:cuFuzz 是第一个能真正理解 GPU“总部与车间”协作关系,并能同时使用多种检测工具的“超级质检员”,它成功揪出了大量隐藏极深的软件故障。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →