---
source: arxiv
url: http://arxiv.org/abs/2604.04238v1
published_at: '2026-04-05T19:44:02'
authors:
- Benjamin Mikek
- Danylo Vashchilenko
- Bryan Lu
- Panpan Xu
topics:
- code-optimization
- compiler-llm
- multi-agent-systems
- llvm
- program-synthesis
relevance_score: 0.95
run_id: materialize-outputs
language_code: zh-CN
---

# Agentic Code Optimization via Compiler-LLM Cooperation

## Summary
## 总结
本文提出 ACCLAIM，这是一种多智能体系统，把标准编译器 pass 与源代码、IR 和汇编层面的 LLM 重写结合起来。目标是在不牺牲编译器可靠性的前提下获得 LLM 发现的优化，报告评估显示，相比 **clang -O3** 的平均加速最高可达 **1.25×**。

## 问题
- 编译器很可靠，但会错过那些需要从程序意图出发进行更高层推理的优化。
- LLM 能找到幅度更大的重写，但常会生成错误代码；论文引用的错误代码率在 **10% 到 90%** 之间，另一个先前结果报告，未经增强的最佳模型有 **42%** 的错误重写。
- 这很重要，因为即使很小的运行时间收益，在大规模场景下也会有影响，而现有的 LLM 优化方法通常只在单一抽象层上工作，而不是贯穿整个编译管线。

## 方法
- 论文把优化定义为跨多个抽象层的 **重写** 和 **下推** 搜索，涵盖 **C 源码**、**LLVM IR** 和 **x86 汇编** 等层级。
- 它构建了 **ACCLAIM**，一个多智能体系统，包含一个 **guiding agent**、每个抽象层各自的 **level-specific optimization agents**，以及一个 **testing agent**。
- guiding agent 决定何时调用常规编译器组件，何时调用 LLM 优化器，然后根据测试反馈保留、重试或回溯候选程序。
- testing agent 以通过测试的比例检查 **正确性**，并以相对原程序的运行时间改进来衡量 **性能**。
- 核心思路很直接：让 LLM 在语义推理有帮助的地方重写代码，然后让编译器在这些重写之前或之后应用其常规、经过验证的 pass。

## 结果
- 主要报告结果是在一组标准 **C 程序** 上，相比 **clang -O3** 的**平均加速为 1.25×**。
- 摘要说明，在相同计算预算下，compiler-LLM cooperation 的表现**优于现有编译器优化和按层级划分的 LLM 基线**。
- 论文还说，这种方法在相同计算预算下也优于**朴素的多层级基线**。
- 在动机示例中，LLM 在源代码层把一个 population-count 计算从 **O(k log k)** 改成 **O(log k)**，或者在 IR 层通过引入 **@llvm.ctpop.i32** 把它改成 **O(k)**。
- 在这次 IR 重写之后，LLVM 向量化会把每次循环迭代中的 **8 次** population-count 调用排成 **2 条指令，每条包含 4 个操作**；论文说，在支持恒定时间 popcount 的硬件上，这可以把运行时间降到 **4×**。
- 这段摘录没有提供更完整的基准表、数据集规模、方差，或除 **1.25×** 这个总结果之外的各基线具体数值。

## Problem

## Approach

## Results

## Link
- [http://arxiv.org/abs/2604.04238v1](http://arxiv.org/abs/2604.04238v1)
