使用自定义变异合成的 MLIR 编译器模糊测试
软件工程
2024-08-28 v2
摘要
深度学习和领域特定硬件加速中的编译器技术正越来越多地采用多级中间表示 (MLIR) 等可扩展编译器框架,以促进更高效的开发。借助 MLIR,编译器开发者可以轻松地以 MLIR 方言的形式定义自己的自定义 IR。然而,此类自定义 IR 的多样性和快速演进使得为每种方言手动编写自定义测试生成器变得不切实际。为了解决这个问题,我们设计了一种名为 SYNTHFUZZ 的新测试生成器,它将基于语法的模糊测试与自定义变异合成相结合。SYNTHFUZZ 的关键本质有两方面:(1) 它自动从现有测试用例中推断参数化的上下文相关自定义变异。(2) 然后它根据目标上下文具体化变异的内容,并通过执行 k-ancestor 和前(后)缀匹配来减少插入无效编辑的机会。SYNTHFUZZ 免除了为每种方言手动定义自定义变异算子的需要。我们将 SYNTHFUZZ 与三个基线进行了比较:Grammarinator、MLIRSmith 和 NeuRI。我们在四个不同的 MLIR 项目上进行了这项综合比较。每个项目都定义了一组新的 MLIR 方言,手动编写自定义测试生成器需要数周的工作量。我们的评估表明,SYNTHFUZZ 平均将 MLIR 方言对覆盖率提高了 1.75 倍,使分支覆盖率提高了 1.22 倍。此外,我们表明我们的上下文相关自定义变异将有效测试的比例提高了多达 1.11 倍,这表明 SYNTHFUZZ 正确地根据目标上下文具体化了其参数化变异。变异的参数化将违反基本 MLIR 约束的测试比例降低了 0.57 倍,从而增加了用于模糊测试特定方言代码的时间。
引用
@article{arxiv.2404.16947,
title = {Fuzzing MLIR Compilers with Custom Mutation Synthesis},
author = {Ben Limpanukorn and Jiyuan Wang and Hong Jin Kang and Eric Zitong Zhou and Miryung Kim},
journal= {arXiv preprint arXiv:2404.16947},
year = {2024}
}