mirror of
https://github.com/vladmandic/automatic
synced 2026-08-25 22:20:46 +02:00
2cf5a2f207
The linear layers bind their scaled-mm function at import, so SDNQ_USE_TRITON_MM freezes the backend per process and comparing triton against the torch fallback meant two runs, carrying clock drift into the delta. --mm-backends rebinds the function on the consuming modules between benches, so both rows measure the same quantized layer under the same clock state. - swap targets are the four linear modules that from-import a scaled-mm function; every swap resets dynamo, since the layer forwards are compiled and the traced graph pins the previous function - the torch row is captured from kernel_wrappers rather than reimplemented, so it is unavailable where triton is the device default (rerun with SDNQ_USE_TRITON_MM=0) and says so - rounds alternate order and keep the fastest per row, so drift cancels instead of favouring whichever backend runs second - flag output error when backends disagree past 1e-4: they are meant to be numerically equivalent