AnICA:微架构代码分析器中的不一致性分析
软件工程
2022-09-20 v2 性能
编程语言
摘要
微架构代码分析器,即估计机器码基本块吞吐量的工具,是性能工程师工具箱中的重要器具。近期如 llvm-mca、uiCA 和 Ithemal 等工具使用了多种技术以及不同的模型来进行吞吐量预测。在实测中,这些 SOTA 工具给出差异很大的结果是常见的。这些不一致性要么是错误,要么指向工具设计者做出的不同且鲜有文档说明的假设。本文中,我们提出 AnICA,一个借鉴差分测试与抽象解释来系统分析这些代码分析器间不一致性的工具。我们的评估表明,AnICA 能用几十条描述概括数千条不一致性,这些描述直接带来对工具不同行为的高层洞见。在若干案例研究中,我们进一步展示 AnICA 如何自动发现并刻画 llvm-mca 中已知与未知的 bug,以及 AMD Zen 微架构中的一个怪异特性。
引用
@article{arxiv.2209.05994,
title = {AnICA: Analyzing Inconsistencies in Microarchitectural Code Analyzers},
author = {Fabian Ritter and Sebastian Hack},
journal= {arXiv preprint arXiv:2209.05994},
year = {2022}
}
备注
To appear in Proceedings of the ACM on Programming Languages (PACMPL), Vol. 6, No. OOPSLA2