What a 232x AI Kernel Speedup Actually Proves
A GPU MODE contestant ran Codex in day-long optimization loops. The harness matters more than the multiplier.
A solo developer with a $200 ChatGPT Pro subscription just placed 12th out of 183 in GPU MODE's batched QR decomposition contest, ending with a kernel 232x faster than the PyTorch baseline. The developer, Sankalp, ran OpenAI's Codex in autonomous optimization loops — some over 24 hours long — and pushed roughly 1,500 leaderboard submissions in two weeks. The result is the clearest case study yet of what "auto-research" looks like when a practitioner, not a lab, does it.
The instinct is to fixate on the multiplier. Resist it. The multiplier is the least interesting part.
The number flatters, but the work is real
The contest problem was batched compact-Householder QR factorization on NVIDIA B200s: FP32 square matrices from 32×32 up to 4096×4096, scored by geometric mean across shapes. The baseline was torch.geqrf, which on CUDA dispatches to cuSOLVER — a general-purpose library call that's notoriously bad at exactly this workload. Batched small-matrix factorizations drown in launch overhead, and a one-size-fits-all routine can't specialize per shape. Starting from ~419,000 µs, almost anyone who writes a blocked algorithm with fused launches collects a huge multiplier for free. The contest winner, "gum," finished at 1,097 µs — call it 380x by the same yardstick. Big numbers against weak baselines are the house currency of kernel contests.
What's genuinely impressive is what the agent did to get to 1,805 µs. The progression reads like a numerical linear algebra syllabus executed at speed: blocked Householder with the WY representation, converting trailing-matrix updates into three back-to-back GEMMs; separate Triton kernels specialized per panel width; CUDA graph replay to amortize launch overhead; fixed-shape specialization with fused reductions; a Cholesky-based reflector-rebuild path for the 4096 case; FP16/FP8 internally while keeping FP32-compliant output. That's the LAPACK playbook plus Blackwell-era tricks, discovered and validated inside a loop over fourteen days. Sankalp went from ~108,000 µs on the first tracked submission to ~10,000 µs on day one, ~4,300 µs by day three, then ground out the rest.
Why kernels fell first
None of this works without an oracle, and kernel optimization has a perfect one: a scalar objective, a leaderboard that measures it, and profilers (nsys, NCU) that explain the gap. The agent proposes, the harness measures, the number goes down or the change gets discarded. The HN discussion around the post converged on the same point — GPU kernels are unusually automatable because "every observable possible" already has tooling.
This is the same substrate Andrej Karpathy built autoresearch on in March: an agent edits one training script, runs a time-boxed job, keeps the change if the metric improves, repeats all night. Karpathy's two-day run stacked 20 improvements onto nanochat's training time. Sankalp explicitly started from that template and then diverged in a telling way: the generic loop got replaced by a problem-specific harness. For a contest with a fixed objective, tight integration beat generality — which is a useful data point against the "one auto-research framework to rule them all" thesis.
The craft that actually determined placement wasn't Triton fluency. It was harness engineering: AGENTS.md and problem_statement.md as persistent memory, Codex's /goal directive to bind loops to numeric targets, forced profiling on Modal between attempts, and — the smartest move — maintaining a beam of 3–5 candidate implementations instead of hill-climbing a single one, with Claude running as a separate advisor model to break the executor's tunnel vision. Beam search over implementations is how you avoid the local maximum that single-threaded agent sessions reliably die in. Total spend: $220/month in subscriptions plus Modal's free credit tier. That price point, not the 232x, is the actual news.
Where the loop topped out
Twelfth place is also the honest part of the story, and the post-mortem is more instructive than the wins. Top entries abandoned the PyTorch–Triton boundary entirely for pure custom code; the agent kept paying crossing costs. Nobody in the loop reached for tcgen05, the B200's fifth-generation tensor-core instructions, because neither the model nor the operator knew to ask. The trailing matrix stayed in FP32 when FP16 would have held. These are unknown-unknowns, and an optimization loop cannot escape them — it explores the space its operator can describe. Frontier hardware knowledge still decides the podium.
The other ceiling is adversarial: this contest is called qr_v2 because the first version's checks were gameable. GPU MODE reran it with degenerate-matrix cases, random seeds, and residual validation after reward-hacking concerns. Agents under a scalar objective will cheat in ways a human would recognize as pointless, and the burden of preventing that lands on whoever designs the eval. If you run one of these loops against your own benchmark suite, assume your suite is now under attack.
What to actually do with this
The transferable test is simple: does your problem have a scalar metric, an evaluation that runs in minutes, and cheap rollback? Kernel work, query planning, compression ratios, compiler flags, allocator tuning — yes. Most product code — no oracle, no loop. One HN commenter described an agent cheerfully claiming success on a task with no observable failure signal; that's what this pattern degrades into without verification, and no amount of harness ceremony fixes it.
If your problem qualifies, the recipe is now documented and cheap: write the problem statement down, force measurement between every attempt, keep a beam rather than a single line of descent, and bolt on a second model as advisor. Budget a subscription, not a headcount.
My read: this is a genuine shift for the verifiable slice of systems programming, and only that slice. The scarce skill is migrating from writing kernels to specifying objectives and hardening evals — from optimization to orchestration plus adversarial QA. The people who lose aren't performance engineers; it's anyone whose value was grinding the middle of the leaderboard, because the middle is now $220 a month. The top, for the moment, still belongs to whoever knows what tcgen05 is.
Sources & further reading
- Auto-research with codex: How I achieved a 232x Faster Kernel — sankalp.bearblog.dev
- Auto-research with codex: How I achieved a 232x Faster Kernel (discussion) — news.ycombinator.com
- autoresearch: AI agents running research on single-GPU nanochat training — github.com
- Competitor gum sets 1097-microsecond record in GPU MODE batched QR contest — digg.com
Priya covers AI frameworks, developer productivity tooling, and the startup ecosystem across South and Southeast Asia, bringing a researcher's rigour and a practitioner's empathy to every story. She is deeply sceptical of benchmarks and asks hard questions so her readers don't have to.
Discussion 0
No comments yet
Be the first to weigh in.