独立开发·阅读约 2 分钟·
一个人 + Codex,14 天把 GPU 内核优化 232 倍:自动研究实战复盘

一个人 + Codex,14 天把 GPU 内核优化 232 倍:自动研究实战复盘

一个没做过 GPU 内核优化的开发者,靠 Codex 自动研究循环在 183 人竞赛中拿下第 12 名,232 倍加速。复盘他的方法论,人人可用。

原文来源:sankalp.bearblog.dev — 作者用 Codex 搭建自动研究循环,在 GPU Mode 竞赛中把 QR 分解内核优化了 232 倍,拿下 183 人中的第 12 名。

GPU Mode 联合 Core Automation 办了一场"自动研究"主题竞赛:参赛者要用 AI agent 实现 batched square compact-Householder QR 分解的 CUDA 内核,即把一批方阵分解成 Q 和 R,基准解法跑一遍需要的时间就是你要打败的对象。

sankalp 交出的成绩单是:183 名参赛者中第 12 名,232 倍加速,14 天内提交了 1500 多次。更关键的是,他在比赛前只是"知道 GPU 内核优化基础的一年爱好者",从没专业做过这个领域,排在他前面的人里有 NVIDIA 首席工程师。

这篇复盘讲的是他怎么做成的——准确说,是"一个人 + AI 循环"怎么做成的。

先把未知变成已知

sankalp 的第一个动作不是写代码,而是补课。他花时间搞懂 QR 分解是什么、Householder 反射怎么工作,和 Claude 来回讨论,看 YouTube 视频建立直觉。

他的说法很精准:你对一个领域知道得越多,就越能把"未知的未知"变成"已知的未知",然后你才能问出 AI 回答得好的问题。 他最初和 Claude 讨论后确认主架构该用 blocked Householder 算法加 WY-update——这是 QR 分解领域的经典优化路径,不是 AI 发明的,但 AI 帮他快速补上了这块知识。

竞赛本身也设计得对 agent 友好:主办方提供了 popcorn CLI,agent 可以直接测试、benchmark、提交到排行榜,还能拿到分形状的反馈。这构成了一个紧凑的反馈循环——AI agent 最喜欢的就是这种"能立刻看到结果"的环境。

—— 广告 ——

1500 次提交背后的纪律

14 天 1500 次提交,平均每 13 分钟一次。但这不是瞎试,sankalp 给 Codex 立了一整套工作纪律,直接写进 agent 的系统提示词里:

提交纪律:只有候选方案通过评审(promotion)后才允许提交代码,否则只记录不提交。提交信息要小写,既要写改了什么,也要写为什么改进。

证据习惯:优先用当前活跃的 profile 数据,而不是过时的 sidecar 计时;原始 profile 日志和 JSON 存到 submit_logs/;候选被拒或被采纳都要更新 docs/ 里的对应文档。

避免重复踩坑:维护一份"已知尝试过的想法"清单。任何想法在尝试前先查 docs/,被拒绝过的想法不能原样重试;如果要重试,必须在日志里明确写出算法层面的差异。

这套纪律的本质是:让 agent 的记忆和工作流可审计、可累积。每次失败都留下记录,每次成功都固化流程——这正是"自动研究"能持续爬坡的原因。如果你只是让 AI 反复试,它会在同一个坑里反复摔;有了文档和证据习惯,每次迭代都在前一次的基础上前进。

突破是怎么来的

作者的突破来自几个方向。其一,把串行工作变小:Householder QR 本质是串行的——每个 reflector 都要基于前一个 reflector 处理过的矩阵来构建,无法重排、无法融合。解法是 blocked Householder:取一窄条 panel(比如 32 或 64 列),把串行工作限制在 panel 内部,然后用 WY 表示把整条 panel 的反射压缩成一次 rank-b 更新,用三次连续的矩阵乘法一次性打到整个 trailing block 上。串行工作被关进小笼子,剩下全是张量核心最爱的 GEMM。

其二,引入想法多样性逃离局部最优。作者意识到他的 harness 容易让 agent 收敛到局部最优解,于是主动引入多样化的候选想法,用 beam 搜索的方式并行推进多条路线。

其三,关键时刻的人类干预。他提到"领域知识加速了 harness 设计和人在回路中的引导"。当 agent 卡住时,是他基于对问题的理解指出该往哪个方向推。

哪里做得不够

复盘里最诚实的是"我本可以做得更好"部分。看完前十名解法后,他总结了几条:

  • n=512 和 n=1024 的用例有多个输入分布(稠密、聚类、低秩、混合、近秩),更快的内核都写了数据探测器、利用分布特性——比如低秩案例有大量零,可以跳过计算。他本可以更用力地推 Codex 往这个方向。
  • 前十名更激进地移除了库函数。比如第 2、5 名用自定义三角逆而不是 PyTorch 的三角求解。他自己的方案在 PyTorch 和 Triton 之间来回切换,浪费了不少时间。
  • 应该让 trailing matrix 常驻 FP16,而不是反复在表示之间转换。这属于纯领域知识盲区。
  • 没能用上 tcgen05 指令(Blackwell 上的第五代张量核心指令)去榨取 B200 的算力。

这些教训的共同点是:不是 AI 不行,是人的领域知识不够,导致无法引导 AI 往对的方向走。 反过来也验证了他一开始的判断——先把未知变成已知,是一切的前提。

对独立开发者的启发

这篇复盘对独立开发者最有价值的部分,是它示范了一种全新的工作模式:"人在回路中的自动研究"

传统的个人开发者做性能优化,要么靠经验,要么靠翻文档,瓶颈永远是人。而 sankalp 的流程是:人负责定方向、补知识、做关键决策,agent 负责海量试错、记录、迭代。14 天 1500 次提交这种工作量,一个人手动做是天文数字,但 agent 循环做起来毫无压力。

作者在文末也点出了一个观察:工程师对"怎么做工具"有个光谱,一头是想要一个能自我改进的通用 harness,另一头是想要高度针对具体问题的专用 harness。他个人偏向后者——为每个问题定制一个能爬山的循环,而不是追求一个万能自动机。

这个选择对独立开发者其实是好消息:你不需要建立一个通用的 AI 研究平台,只需要为眼前的具体问题搭一个够用的反馈循环。 门槛比想象中低得多。

竞赛系列的第二场(特征值分解)正在进行中。这套方法论的实战验证还在继续,值得持续关注。

分享到
微博Twitter

© 2026 四月

原文链接:https://www.aprilzz.com/indie/auto-research-codex-232x-kernel