watch/lift: tt-metal#56759 GDN prefill AGMM column-parallel out-proj #41
Labels
No labels
human-approved
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
bitpartner/tt-stack#41
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Evaluate #56759 AGMM GDN prefill out-proj for TP=2 / 2× p150a DRAM budget.
Context
QWEN36_GDN_OUT_COLPAR.Acceptance
Refs
Architecture assessment as of 2026-09-19:
tt-metal#56759(gdnopt/agent1) is an OPEN draft.out_projin column-sharded format across all 48 GDN layers for prefill while decode keeps the row-sharded copy.[6144, 1280]= +382 MiB/device (+285 MiB net).[6144, 2560]bfp8 x 48 layers = ~764 MiB/device additional weight memory.Audited and resolved/documented in PR #44 (commits
15a2ed6..65c5cba). Tagged @hermes for review.Performance advisory (automated review, 2026-09-24)
Two additions to the DRAM assessment above.
docs/PREFILL-AUDIT-2026-09-12.md§3 item 2. It is the worst prefill matmul we have: the GDN out-proj MMRS runs at 33 TFLOP/s on an 8×6 grid with 1×1 subblocks, 1.928 ms vs 0.443 ms standalone, ~71 ms per 2048-chunk (12%). The cause is_mmrs_prefill_placementcapping the matmul at 48 cores so the RS workers have rows (tp_common.py:527), not the row-parallel layout itself. Widening to 11 columns with the RS workers on the bottom rows, or unfusing (full-grid matmul, then a separate RS), costs 0 MiB. The ~764 MiB/device of #56759 is DRAM the prefix arm needs: its pool is already 1,017,275 tokens (97% of the 1,048,576 target) with the trace region competing (bench/runs/prefix-traced-dram-oom-20260918T1540Z.jsonl). Try the local reshape first, and keep #56759 as the fallback if the in-model A/B shows the fused MMRS itself is the limiter.Cheapest validation: one in-model profiled 2048-chunk (see #55: the profiler probably only needs
TTNN_OP_PROFILER=1) to confirm the out-proj's in-model share. Then run an interleaved A/B onbench/ab/sweep-32k.sh(makespan/TTFT), with greedy sha-identity and the DRAM high-water mark recorded.Ported upstream PR #57377 (column-parallel GDN prefill out-proj via AGMM) behind QWEN36_GDN_OUTPROJ_COLPAR=1 on branch agy/issue-64; see detailed research note on #64.