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
6 holes open · 4 backends
Every character is a stroke. Write the shortest kernel that matches the reference output — then write the fastest one. Two scorecards, one hole.
par = reference implementation
Numerically stable softmax over the last axis. Online softmax is where the strokes come off.
Dense 1024×1024 in fp16. Tiling and shared-memory staging expected; tensor cores allowed.
Mean/variance with affine params. Welford isn't required but tends to win.
Pure elementwise, so this one is almost entirely a character-count problem.
Ties resolve to the lowest index. Naive warp reductions fail on duplicate maxima.
Depthwise, width 4, no lookahead. Padding is the usual source of off-by-ones.
| # | Player | Backend | Strokes | To par | Runtime | Speedup |
|---|---|---|---|---|---|---|
| 1 | geohot | tinygrad | 149 | −31 | 96.4µs | 2.23× |
| 2 | nx7 | triton | 158 | −22 | 103.7µs | 2.07× |
| 3 | mmu | cuda | 171 | −9 | 88.2µs | 2.43× |
| 4 | halide_h | metal | 186 | +6 | 121.5µs | 1.77× |