Page 103 - 《软件学报》2025年第7期
P. 103
3024 软件学报 2025 年第 36 卷第 7 期
编译器缺陷分布随时间的变化情况. 同时, 本文进一步深入分析了 DL 编译器缺陷的根因、症状、位置三者之间
的内在联系情况. 此外, 为了进一步挖掘缺陷检测与修复的特征, 本文对触发 DL 编译器缺陷的回归测试用例和修
复 DL 编译器缺陷的补丁进行了研究.
对于缺陷数据的标注结果, 我们识别出 13 个缺陷根因和 6 个缺陷症状. 基于缺陷标注结果的分析, 我们得到
了 12 个主要发现, 并为今后的 DL 编译器缺陷检测和调试提供一系列建议. 此外, 基于本文的研究发现, 设计了一
款高效的 DL 编译器测试工具 CfgFuzz. 经过 24 h 的测试, CfgFuzz 检测到了 8 个新的 TVM 缺陷, 其中 7 个缺陷
已经被开发者确认或修复. 该实验结果进一步验证了本文研究发现的有效性.
本文主要贡献如下.
● 针对 DL 编译器缺陷展开了全面的实证研究, 研究包含 3 款 DL 编译器中 613 个缺陷数据, 并针对缺陷症状、
根因、位置随时间变化情况、缺陷不同因素的内在联系、缺陷补丁与触发缺陷的回归测试用例的特征这 6 个问
题展开调研.
● 获得了 12 条主要研究发现, 以全面了解深度学习编译器缺陷及其演变过程, 并为后续的 DL 编译器缺陷检
测、定位与修复等研究提供了一系列有益的启示.
● 设计了一款概念验证工具 CfgFuzz, 检测到了 8 个之前未知的 TVM 缺陷, 其中 7 个缺陷已被确认或修复.
● 开源了数据集和 CfgFuzz 源码, 促进未来针对 DL 编译器缺陷检测等相关工作.
本文第 1 节总结针对 DL 编译器缺陷实证研究的相关工作. 第 2 节介绍 DL 编译器的背景知识. 第 3 节介绍
数据收集和标注的方法与本文关注的研究问题. 第 4 节回答研究问题并探讨未来的研究方向和潜在解决方案. 第
5 节介绍启发与应用. 第 6 节分析研究效度威胁. 第 7 节总结全文.
1 相关工作
目前, 对缺陷的实证研究工作得到了越来越多的关注. 与本文最相关的工作是 Shen 等人 [8] 对 DL 编译器缺陷
的实证研究. Shen 等人的研究仅仅关注了 DL 编译器发展初期的缺陷特征. 作为一款新型系统软件, DL 编译器近
年来经历了高速迭代更新, 已有的研究结论是否适用当前主流 DL 编译器仍有待验证. 此外, Shen 等人的研究只关
注了缺陷本身的特性, 缺少从回归测试用例和补丁的角度分析缺陷特征的研究. 为此, 本文收集当前 3 款主流编译
器中的 613 个缺陷, 并针对缺陷症状、根因、位置随时间变化情况, 缺陷不同因素的内在联系, 缺陷补丁与触发缺
陷的回归测试用例的特征等 6 个问题展开广泛且深入地研究.
此外, 存在较多针对其他类型软件系统的缺陷研究. Sun 等人 [16] 对 GCC 和 LLVM 的各种缺陷的持续时间、
优先级、修复代码、测试用例和位置等特征进行统计和研究. Zhou 等人 [17] 对 GCC 和 LLVM 优化相关的缺陷进
行了深入的研究. Humbatova 等人 [18] 对深度学习程序的缺陷类别展开了深入研究. Garcia 等人 [19] 对 TensorFlow 框
架内部的缺陷进行了研究, Chen 等人 [20] 进一步对 4 款 DL 框架的缺陷展开了更全面的研究并评估了已有测试方
法对 DL 框架中缺陷的检测效果. Islam 等人 [21] 及 Zhang 等人 [22] 对深度学习程序 (例如, TensorFlow [23] 程序) 中的
缺陷进行了研究. Lu 等人 [24] 对并发错误进行了实证研究. Di Franco 等人 [25] 对数值错误进行了实证研究. Han 等
人 [26] 研究了高度可配置软件系统中的性能错误, Wan 等人 [27] 对区块链系统的错误进行了表征.
与其他类型软件系统的缺陷研究不同, 本文的研究对象是 DL 编译器中的缺陷. 正如前文介绍, DL 编译器与
传统编译器 (如 GCC 和 LLVM) 具有不同的特征. 此外, DL 编译器是深度学习的重要基础设施之一, 与 DL 程序
和 DL 框架有着显著不同的功能. 除此之外, 本文进一步分析了 DL 编译器缺陷随时间的演化特征并关注缺陷的
补丁和测试用例的特性, 进而从更多的角度分析 DL 编译器的缺陷特征及其演化规律.
2 背景知识
图 1 显示了 DL 编译器的架构. 编译过程根据功能可以分为 3 个主要阶段. (a) 模型加载阶段: DL 编译器将从
各种深度学习库 (例如, PyTorch [28] 和 Keras [29] ) 构建的 DL 模型作为输入, 并将它们转换为统一的高级中间表示

