gdn_conv_probe.py — the two GDN prefill-conv kernels timed against each other
on the shape the served Qwen3.8-27B presents. Standalone container, no engine
on the card. C = 2*16*128 + 48*128 = 10240, K = linear_conv_kernel_dim = 4,
200 iterations after 20 warmup, local RTX 4090.

RUN 1
B=1 T=2048 C=10240 K=4 dao_gate_accepted=True  triton=90.5us  dao=236.2us  dao/triton=2.611
B=1 T=512  C=10240 K=4 dao_gate_accepted=True  triton=26.2us  dao=112.6us  dao/triton=4.302
B=1 T=128  C=10240 K=4 dao_gate_accepted=True  triton=26.3us  dao=112.9us  dao/triton=4.297

RUN 2 (independent container, after the probe was tidied for the lint gate)
B=1 T=2048 C=10240 K=4 dao_gate_accepted=True  triton=90.5us  dao=242.4us  dao/triton=2.680
B=1 T=512  C=10240 K=4 dao_gate_accepted=True  triton=27.1us  dao=122.1us  dao/triton=4.503
B=1 T=128  C=10240 K=4 dao_gate_accepted=True  triton=29.6us  dao=122.5us  dao/triton=4.140

dao_gate_accepted=True on every row: the Dao path is not quietly declining and
costing nothing. It takes the call, on the B=1 chunked prefill that is most of
our prefill work, and is several times slower there.
