**AsmEvo:AMD突破无源码GPU优化!汇编级代理最高提速3.88倍**
AsmEvo: Agentic Assembly-Level Optimization of AMD GPU Kernels with Functional Equivalence Verification

在当今的高性能机器学习系统中,GPU内核的执行效率往往决定了整个大模型推理或训练的吞吐天花板。然而,在实际的工业部署环境中,开发者常常面临一个极为棘手的黑盒困境:那些真正跑在显卡上的算子,往往只是一团无法直接阅读和修改的编译后二进制文件。无论是供应商提供的闭源库,还是部署框架在运行时动态生成的机器码,它们都远离了开发者最熟悉的高级源码层面。
ArXiv URL:https://arxiv.org/abs/2608.20711v1
这就带来了一个残酷的现实,即表现最前沿的大语言模型内核优化器,通常需要依赖可编辑的 CUDA 或 Triton 源代码,并且需要一个高级语义的参考实现来比对结果。一旦面对只有已编译的 AMDGPU 代码对象(例如部署环境中的 HSACO 文件)时,现有的自动调优工具便统统失效。想在没有源码的情况下榨干GPU架构的最后一丝性能,无异于在黑暗中蒙眼走钢丝。
为了攻克这一后编译时代的难题,AMD 联合南方科技大学提出了一项突破性的系统工作——AsmEvo。这是一个专为 AMD GPU 内核设计的代理式汇编级优化器(Agentic Assembly-Level Optimizer)。它最核心的亮点在于:完全抛弃了对源代码和高级参考实现的依赖,直接将已部署的二进制文件作为行为等价性的唯一衡量标准。在整个优化周期中,AsmEvo 负责在底层汇编代码上“大刀阔斧”地魔改指令,同时依靠严格的差分验证和系统级沙箱确保代码的安全与正确。
实验数据证明了这条底层突围路线的巨大潜力。在 MI308X 平台上,AsmEvo 对选定的 30 个 KernelBench 算子中的 29 个实现了有效提速,几何平均提速达到 1.35 倍,最高更是实现了惊人的 3.88 倍加速。更为关键的是,在 MI300X 的生产级负载中,AsmEvo 成功优化了 vLLM 和 SGLang 中由 Triton 动态生成的汇编内核,在保证功能百分百等价的前提下,依然榨取出了最高 1.34 倍的真实性能红利。
二进制黑盒优化的生死劫:为什么汇编级优化如此艰难?
要理解 AsmEvo 的价值,必须先看清编译器后端的现实壁垒。现代张量编译器和特定领域语言(如 TVM、Triton)固然强大,但它们优化的是调度、平铺和显存移动策略。当一个 GPU 内核最终降级并被打包成 AMDGPU 代码对象后,真正决定运行周期数的,往往是诸如等待计数器(wait-counter)的放置、指令选择的精妙差异、底层寄存器的紧凑分配以及 ABI(应用程序二进制接口)的元数据布局。
在实际系统中,一旦算子变成二进制文件,暴露出来的就只剩下一堆毫无高级语义的字节。这使得二次优化的风险成倍增加:一条极小的汇编指令修改,如果不慎跨越了界限,就可能破坏内存布局,违背内核参数的接口约定,或者导致元数据脱节。
过去的一年里,学界提出了不少基于大语言模型(LLM)的算子生成与调优工具。但它们大多假设你不仅拥有可编辑的代码,还拥有一个完美且独立的“参考答案”。而在部署环境中,原始的编译二进制本身既是待优化的对象,也是我们唯一能用来判断对错的“预言机(Oracle)”。如果验证机制不够严谨,AI 模型就会不可避免地利用验证漏洞,生成那些执行极快但会破坏计算逻辑的“假冒伪劣”算子。这就引出了 AsmEvo 必须回答的终极问题:如何在无源码的状态下,不仅完成汇编级的深度改写,还能对外提供绝对可靠的正确性背书?
重构与差分预言机:AsmEvo 的底层破局机制
为了让黑盒变得透明且可操作,AsmEvo 构建了一套坚如磐石的重建与验证流水线。这种工程深度使其脱离了纸上谈兵的简单代码生成,真正触及了底层编译器架构的核心。
在初始阶段,AsmEvo 会对给定的 AMDGPU 原始代码对象 $K_{0}$ 进行深度的“逆向重建”。它不仅要提取出 AMDGCN 汇编指令体,更要完整重构 ELF 容器中的节区、符号、内核描述符以及相关的 AMDGPU 元数据。它必须重新建立基于程序计数器(PC)的相对控制流符号,以确保后续哪怕在大模型删减、插入或重排指令后,分支跳转依然能够精准命中。AsmEvo 为此设置了一个“往返保真度(Round-Trip Fidelity)”的一票否决门槛:重组后的汇编必须能够重新链接回与原始二进制完全等效的文件。这确立了后续所有优化的坚实基础。

有了可自由修改的底层画布,最大的挑战便落在了如何验证这幅画是不是画错了。由于毫无高级函数签名可言,AsmEvo 创新性地引入了双层差分验证机制(Two-Tier Differential Oracle)。
对于相对规范的算子,系统能够从底层描述符和元数据中推断出参数的偏移量、标量类型、指针角色乃至工作组的维度。基于这些微弱的线索,AsmEvo 合成出一套涵盖各种边界值、步长和数据类型的防御性输入,以此作为第一层基础验证。通过在原始对象和新对象中输入同样的合成数据,系统严格对比两者的内存输出变化。
然而,对于真实生产线上的巨兽级内核(例如混合精度矩阵乘法、非连续张量运算或是内部充满复杂嵌套指针的自定义算子),仅仅依靠静态推断是远远不够的。为了应对这种复杂局面,AsmEvo 祭出了第二层杀手锏:真实分发捕获(Real-dispatch Capture)。
AsmEvo 会在真实应用运行时,悄无声息地截获针对原始内核 $K_{0}$ 的分发调用。它不仅记录下网格与工作组参数,更是将涉及的显存区域快照、内核参数缓冲区原封不动地扒取下来。当需要验证一个新的汇编候选者时,AsmEvo 会在相同虚拟地址上精确重放(Replay)这个显存状态。这意味着无需知道上层应用是如何构建复杂张量结构的,只需对比底层内存字节和浮点容差,就能判断算子逻辑是否走偏。这一设计极大地拓展了代理优化的工业实用性。
代理探索与确定性守门员:如何管理大模型的幻觉
将错综复杂的底层环境搭建好之后,AsmEvo 引入了基于大语言模型的长视野搜索代理(Long-Horizon Agentic Search)。但与其他直接让模型接管全局的系统不同,AsmEvo 强制实现了一种“控制与探索彻底剥离”的架构哲学。
在这个系统中,确定性的控制器(Controller)掌握着绝对的生杀大权。它负责计时预算、管理工作区状态、执行重建与验证调用,并决定哪些候选者能够真正进入优化的传承血统(Lineage)。而 LLM 驱动的代理只负责根据反馈“出谋划策”。这种分离机制创造了一个极其严酷但安全的进化沙箱:哪怕模型产生了再严重的幻觉,写出了速度惊人但结果荒谬的汇编,也会在严丝合缝的差分等价性校验前被瞬间击碎。
大模型在浩瀚的汇编代码面前同样容易迷失。如果把包含数万条指令的汇编直接扔给代理,注定无法命中优化要害。AsmEvo 的做法是通过硬件性能计数器、指令采样以及静态依赖分析,精准定位出算子执行过程中的耗时“热区(Hot-window)”。代理系统只需要在提供好寄存器压力约束和数据依赖关系的局部窗口内“绣花”。修改完成后,系统再将这段局部代码平滑地缝合回完整内核中去重编译。
有趣的是,尽管 AsmEvo 放开了手脚让代理发挥,但在 KernelBench 测试集上的数千次尝试中,最终只有 5.1% 的汇编改写方案通过了这套地狱级别的验证关卡。这个冷酷的数据揭示了底层指令优化的极限难度,但也从侧面印证了 AsmEvo 的核心信条:宁可拒绝一千个有瑕疵的高速算子,也绝不放过任何一个有损准确性的微小退化。
为了防止代理在局部最优解中陷入死胡同,AsmEvo 设计了丰富的多路线探索策略。当控制器察觉到连续多次尝试均无性能增益时,它会触发重定向机制,强迫代理梳理此前的失败签名,调整战术——例如从试图缩减指令数量,转而尝试隐藏内存延迟或降低寄存器峰值压力。系统甚至支持验证组合(Verified Composition),将不同修改区域的独立成功尝试进行增量合并,只要最终的融合体仍然在差分验证中保持坚挺,就能获得超预期的叠加收益。
榨取算子极限:在基准与生产环境中的全面胜利
在这套严密的机制保驾护航下,AsmEvo 交出了相当亮眼的实验成绩单,证明了编译后优化存在的广阔天地。
在针对 MI308X 的 KernelBench 评估中,AsmEvo 对 15 个 Level 1 基础算子实现了全覆盖提升。其中表现最夸张的是带有非对称输入和方形内核的深度可分离卷积,其单体加速比甚至飙升至 3.88 倍。其他诸如新型 Gelu 激活函数(3.82 倍提速)、RMSNorm(2.63 倍提速)以及上三角矩阵乘法(2.28 倍提速)等内核都获得了惊人的加速。对于包含了多操作融合的 Level 2 算子(如 Matmul+Swish+Sum+GroupNorm),AsmEvo 依旧在不破坏整体流程结果的前提下,找到了 2.55 倍的优化空间。
更令人信服的,是它在真实生产环境中的迁移能力。面对 AITer 提供的供应商级二进制代码对象,AsmEvo 在四个保留内核上全部实现提速,最高将一个极其成熟的 FP8 Blockscale 混合专家模型(MoE)内核进一步提速了 1.31 倍。而在当前开源界炙手可热的 vLLM 和 SGLang 推理栈中,AsmEvo 直接捕获并优化了系统动态生成的 Triton 汇编算子。结果表明,哪怕是 JIT 刚刚吐出的新鲜二进制,AsmEvo 依然能够在 vLLM 的融合 MoE 内核上榨出额外的 1.34 倍加速,在 gemm_a8w8_blockscale 算子上获得 1.23 倍的收益。
这些结果深刻地表明,即便是业界最顶尖的编译器,在最终落地为机器码的那一刻,依然留有与具体微架构紧密相关的优化盲区。这种盲区可能是保守的寄存器溢出策略造成的,也可能是微小的指令调度没能完美覆盖访存延迟导致的。
AsmEvo 的出现,意味着大模型参与底层优化的最后一块拼图正在被补全。它并不是要取代现有的源代码编译器或自动调优框架,而是作为整个张量编译流水线末端的最后一道“高压榨汁机”。在这个极度硬核的后编译战场上,AsmEvo 告诉我们:只要把验证机制做到极致的确定与无懈可击,我们完全可以放心地让 AI 在人类无法直视的机器码深海中,为系统发掘出不可思议的性能宝藏。