6 holes open · 4 backends

Fewest strokes
wins the hole.

Every character is a stroke. Write the shortest kernel that matches the reference output — then write the fastest one. Two scorecards, one hole.

The course

par = reference implementation

HOLE 01PAR 3

Row Softmax

Numerically stable softmax over the last axis. Online softmax is where the strokes come off.

par 180best 149fastest 88.2µs
HOLE 02PAR 5

Square Matmul

Dense 1024×1024 in fp16. Tiling and shared-memory staging expected; tensor cores allowed.

par 420best 388fastest 198.6µs
HOLE 03PAR 4

LayerNorm Forward

Mean/variance with affine params. Welford isn't required but tends to win.

par 260best 241fastest 142.8µs
HOLE 04PAR 3

GELU (tanh)

Pure elementwise, so this one is almost entirely a character-count problem.

par 96best 68fastest 22.9µs
HOLE 05PAR 4

Row Argmax

Ties resolve to the lowest index. Naive warp reductions fail on duplicate maxima.

par 210best 194fastest 79.3µs
HOLE 06PAR 5

Causal Conv1D

Depthwise, width 4, no lookahead. Padding is the usual source of off-by-ones.

par 340best 327fastest 356.2µs

Hole 01 · Row Softmax

#PlayerBackendStrokesTo parRuntimeSpeedup
1geohottinygrad149−3196.4µs2.23×
2nx7triton158−22103.7µs2.07×
3mmucuda171−988.2µs2.43×
4halide_hmetal186+6121.5µs1.77×