← 最新论文
💻 computer science

Can Large Language Models Recover Semantic Optimization Opportunities That Compilers Miss?

本文介绍了 SeGaBench,这是一个证明了大语言模型能够有效地恢复 C/C++ 程序中缺失的语义优化机会,从而生成能够补充传统编译器分析的、经过验证且能提升性能的产物的基准测试。

原作者: Hailong Jiang, Feng Yu, Emran Hossain, Jianfeng Zhu, Mengfei Ren, Qiang Guan, Chunwei Xia

发布于 2026-08-05
📖 1 分钟阅读☕ 轻松阅读

原作者: Hailong Jiang, Feng Yu, Emran Hossain, Jianfeng Zhu, Mengfei Ren, Qiang Guan, Chunwei Xia

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

想象一下,你是一位试图制作世界上最快汤品的顶级大厨。你有一位极其严格、恪守规则的副厨(即编译器),他非常清楚如何切菜和烧水。但这位副厨有点过于刻板了;他只能看到眼前摆着的食材。他并不知道锅里的胡萝卜其实大小完全一致,也不知道锅下的炉灶温度始终如一。因为副厨看不见这些隐藏的事实,所以他切菜很慢,烧水也很谨慎,只为了确保万无一失。

现在,想象你有一位超级聪明、充满好奇心的助手(即大语言模型,或简称 LLM),他读过每一本食谱,看过每一档烹饪节目,还了解厨房的历史。这位助手可以观察整个厨房并说道:“嘿,我敢打赌那些胡萝卜都是规格统一的,而且那个炉灶也非常稳定!”如果这位助手能够证明这些事实,那严谨的副厨就能立刻切换到“超速模式”,以惊人的效率进行切菜和烧水。科学家们一直以来都在追问的一个大问题是:这些超级聪明的助手是否真的能找到这些严格副厨所忽略的隐藏捷径,并且能否用一种不会让副厨感到困惑的方式将这些规则解释清楚?

这正是这篇论文的研究人员想要测试的内容。他们想看看 AI 是否可以充当“语义桥梁”,寻找传统编译器会忽略的代码中的隐藏规则,并将这些规则转化为实际的速度提升。他们构建了一个名为 SeGaBench 的特殊测试场,这就像是一个巨大的 AI 障碍赛。它包含了 120 个不同的计算机程序(其中 100 个是专门为测试而设计的,另外 20 个取自真实的超算项目)。在每个程序中,都隐藏着一种“秘密配方”——即关于数据或代码运行方式的一个事实,如果掌握了这个事实,就能让计算机运行得快得多。AI 的任务是找到这个秘密,写下一份解释说明,并修改代码以利用它,且在测试过程中既不被告知答案,也不接受任何提示。

结果呈现出一种“惊艳”与“并非如此简单”并存的复杂局面。他们测试的最强 AI 模型 GPT-5.6 Sol 在侦探工作方面表现得极其出色。它成功识别了 95.0% 的案例中的隐藏秘密,并在 94.8% 的尝试中写出了正确且可运行的代码变更。更令人印象深刻的是,当它写对代码时,它成功让程序运行速度至少提升了 1.05 倍(即 5% 的加速),成功率达到了 83.3%。如果让 AI 对同一个问题尝试五次,它能在所有案例中的 93.3% 找到可行的解决方案。

然而,论文也发现这种“超能力”并非所有 AI 模型所共有。虽然顶尖模型表现优异,但其他模型却表现挣扎,有些模型仅在约 5% 的案例中取得成功。这表明寻找这些优化秘密的能力目前还不是所有 AI 的标准配置;它高度依赖于你使用的是哪种特定的模型。此外,AI 解决那些虚构问题的能力要强于解决来自真实超算项目的现实问题。在处理现实世界的案例时,即使是表现最好的 AI,其成功率也会下降,且实现的加速幅度也较小。

研究人员得出结论,AI 确实可以成为编译器的强大伙伴,充当“推测性语义提议者”(speculative semantic proposer)。它可以观察程序复杂且混乱的上下文,然后说:“如果假设 X 成立,我认为我们可以跑得更快。”但这并不是一根能自动修复一切的魔杖。论文强调,AI 的建议必须经过验证器的仔细检查,并针对实际性能进行测量,才能被信任。AI 是一个天才的创意生成器,但严格的编译器和人类工程师仍然需要验证这些想法是否真正有效,以及是否会破坏原有功能。简而言之,快速代码的未来可能看起来像是一个团队协作:AI 寻找隐藏的捷径,而编译器则负责修筑高速公路。

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

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

试用 Digest →