A sweep only logged how long it took, so a config list holding candidates the
hardware runs badly stayed invisible until someone profiled a run that looked
hung. The completion listener already receives every candidate's timing, so the
spread between worst and best is free to report.
- log the winning config, the spread, and any candidates that could not run
- warn once per config when the selected one spills registers, naming it, since
the sweep line that carries it is debug
Autotune sweeps and kernel compiles run inside the first forward pass at a
new shape and can take minutes with no indication in the log or UI. Add
listeners on the triton autotuning and compilation knobs plus a wrap of the
per-candidate benchmark: a sweep draws a console progress bar over its
candidates and mirrors the count in the live progress text, the completion
line records the kernel, shape, duration and compile share, and standalone
compiles over 1s are logged.
- fix timer_sdnq reading bench_time from the python wrapper functions
instead of the autotuner kernel objects, which left the two matmul
autotune timers permanently empty
- restore the pre-tuning progress text across chained sweeps, so an
abandoned sweep cannot strand its own tuning label in the UI