在深度学习领域,同一款GPU上运行的代码性能差异可能高达十倍。这种差距并非源于算法或数据量的不同,而是源于对英伟达GPU底层指令的掌握程度。即便是简单的矩阵乘法,不同编程水平写出的代码在速度上也会有显著差异。这种“懂行”与“外行”的差距,体现在能否有效利用英伟达每年为新一代GPU推出的专属PTX指令上。
PTX(Parallel Thread Execution)是英伟达GPU的中间汇编语言,介于CUDA C++和机器码之间,是程序员能够直接控制的最底层编程接口。每年英伟达都会为新GPU增加一批PTX指令,用于操作新的张量核心、内存搬运单元和同步机制。这些指令若运用得当,性能可提升数倍;若使用不当,代码虽能运行,但速度会大打折扣。斯坦福大学团队联合多家机构开展了一项研究,探索当前最先进的AI大模型是否能够自主编写利用这些底层指令的GPU代码。
高性能GPU代码开发领域长期存在一个矛盾:官方库如cuBLAS、cuDNN性能极致但封闭,难以定制;而Triton、CUTLASS等高级工具虽易用,但需编译器工程师持续更新以适应新硬件。这引发了一个核心问题:是否存在一种方法,能让代码直接、精确地控制新硬件指令,且这一过程可自动化,甚至由AI完成?
此前,类似KernelBench的评测工作主要关注模型能否生成更快的GPU代码,但存在一个盲区:模型可能通过调用现成库函数或编写通用CUDA代码来获得不错的速度,而无法判断其是否真正利用了新硬件的专属指令。这类似于考察厨师是否会使用新型分子料理设备,仅看菜品味道是不够的,因为厨师可能完全绕过该设备,用传统方法完成烹饪。
为解决这一问题,研究团队开发了PTXBench评测框架。PTXBench要求模型在完成任务时必须使用特定架构的PTX指令族,并从功能正确性、目标指令执行情况和速度三个维度进行评分。关键在于,团队通过英伟达的Nsight Compute工具动态检查指令是否在实际执行中被调用,避免模型通过在未执行代码中插入指令来“作弊”。
评测流程设计严谨。团队构建了MiniPTXAgent多轮对话代理,模型每次生成代码后,先在CPU容器中用nvcc编译,通过后送至性能分析服务进行内存安全检查、正确性验证和速度测量。模型最多可尝试八轮,每轮反馈之前的代码和错误信息,促使其自我修正。为防止失控代码破坏系统,性能分析服务独立运行,与主流程解耦。
研究还发现,提供详细的架构知识对模型编写有效代码至关重要。团队通过消融实验证明,仅提供架构参数时,模型虽能写出部分正确代码,但从未真正使用目标指令;加入PTX模板函数后,模型开始生成更快代码,但正确率未显著提升;而提供内存一致性、数据布局等“契约”规则后,指令执行成功率大幅提升。这表明,模型缺乏的不是编程能力,而是对新指令规范使用的了解。
团队测试了Gemini 3.1 Pro、Claude Opus 4.8、GLM-5.2和开源的Qwen3.6-27B四个模型,在英伟达H100和B200两代GPU上运行GEMM矩阵乘法和注意力机制任务。结果显示,Claude Opus 4.8在H100上表现最佳,GEMM任务正确率达91.7%至94.8%,速度接近cuBLAS官方库;但在注意力机制反向传播任务中,所有模型表现均大幅下降。反向传播因需维护更多中间状态和复杂内存访问模式,对底层指令编排要求更高。
有趣的是,Gemini 3.1 Pro的知识截止日期与Blackwell架构PTX指令集发布时间相近,理论上对其了解有限,但在Blackwell上的GEMM任务仍达到cuBLAS速度的0.892倍。这表明,模型表现不仅取决于训练数据的新旧,还与通用编程和推理迁移能力有关。开源模型中,GLM-5.2在H100上表现尚可,但在Blackwell上明显落后,且倾向于回避新架构专属指令;Qwen3.6-27B在Hopper上未能写出正确代码,在Blackwell上虽写对一次GEMM,但未使用目标指令。
研究还对比了高级语言Triton与底层CUDA-PTX在新架构上的表现。在Hopper架构上,两者差距不大,CUDA-PTX甚至在某些任务上超越Triton;但在Blackwell架构上,Triton在反向注意力任务上的速度是CUDA-PTX的数倍。这表明,面对新硬件,高级语言因封装了复杂底层调度,反而更可靠;而底层PTX需深入理解新机制,难度更大。
为提升模型编写PTX代码的能力,团队提出了Fixit监督微调方案。Fixit收集模型自身的失败尝试,由更强的“老师模型”生成修正代码,并由“推理老师”撰写解释性推理过程,形成包含“问题+失败尝试+错误反馈+推理过程+正确代码”的训练数据。这种“针对性纠错”训练方式,旨在帮助模型从错误中学习,而非单纯记忆标准答案。
实验结果显示,Fixit训练效果因任务而异。在部分任务上,纠错型训练(如s3)优于直接生成型训练(如s0);但在其他任务上则相反。数据平衡性对训练效果影响显著,数据分布更均衡的训练集(如s1和s5)在所有任务上均能生成正确代码,而数据量更大但分布不均的训练集(如s2和s3)则在某些任务上失败。推理老师的水平直接影响教学质量,由更强模型(如GLM-5.2)担任推理老师的训练集(如s5)表现优于由待改造模型自身担任推理老师的训练集(如s6)。
团队进一步分析了Fixit训练的泛化能力。以“最省数据但解决五类问题”的s1版本为例,其在未接触过的场景中表现有限:能迁移至GEMM任务、头维度为64的注意力变体和头维度为96的正向注意力任务,但在头维度为96的反向传播任务和GQA任务上失败。这表明,Fixit训练的迁移能力受限于计算模式的相似性,硬件层面的对齐限制是主要障碍。
在跨语言迁移测试中,s1在Triton任务上的正确率低于原始模型,但在causal相关任务上的速度显著提升。这说明,针对PTX的训练提升了模型对计算调度优化的理解,这种理解在跨语言时能部分保留。团队比较了微调训练与临场提示词工程的效果,发现微调训练能提升模型的基础能力,而临场提示词更适合应急或补充,难以支撑从零到一的能力建设。











