research: Homa transport for Blackhole card networking — viability (verdict: no-go) #60
Labels
No labels
human-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
bitpartner/tt-stack#60
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?
Labels used below: MEASURED (our
bench/runs/*record cited), THIRD-PARTY (vendor, paper or external report, not reproduced by us), ESTIMATE (our arithmetic or judgement, not measured). This study was desk research only. No tt-metal/vLLM process was started and the cards were not touched.TL;DR verdict
Do not implement Homa on the cards, in any form. Homa fixes tail latency caused by queueing in switched, many-to-many networks: incast at a switch egress port, short messages stuck behind long ones, and sender-side congestion control that has too little information to react. Our card-to-card path has none of those. It is one direct QSFP-DD cable (2 links) between two chips, carrying bulk-synchronous collectives of fixed size, with no switch, no incast and no competing flows. The card Ethernet is also not an IP stack. TT-Fabric requires the controllers to run in TT-link mode, where the hardware already provides a Go-Back-N ARQ, and the fabric router already applies receiver-credit flow control per buffer slot. So the reliability and receiver-driven admission Homa would add already exist in hardware or firmware, and the one thing Homa adds on top (SRPT across switch priority queues) has no switch to act in.
The fabric is also a small part of our critical path. In decode, the collectives are 4.34 ms of a 50.6 ms instrumented device step (8.6%), about 17 µs per collective across 256 ops (MEASURED, B=1/4k eager profile). Decode is only about 21–26% of batch wall time, because prefill is 74–79% of wall (MEASURED, 32k sweep). Removing all decode CCL time would save about 3% of makespan (ESTIMATE, B=8/32k), and no transport can remove it all, because the bytes still have to cross the cable. Homa's realistic gain on this link is ~0.
The only place Homa could run is the host NIC, via the existing Linux module for serving/RPC traffic. That path is irrelevant too: per-request network time is micro- to milliseconds, against a TTFT of 6–609 s. The NIC is a Realtek, which is not on Homa's list of known-good NICs, and vLLM speaks HTTP over TCP, not Homa sockets.
What to do instead: the open question behind this idea is "how much does the fabric cost in prefill?" Answer it with the per-op prefill Tracy table and one fabric bandwidth microbenchmark. If the fabric cost turns out to matter, the levers are a second QSFP-DD cable plus the
get_num_linksoverride, or better overlap in the fused all-gather-matmul / matmul-reduce-scatter ops. Not a new transport.Prior art found
Searched 2026-09-24: GitHub API (tt-metal issues/PRs, repos), the tt-metal tech reports in our local tree (
/home/orchestra/ttm-build/src), and Firecrawl web search.homa0 hits,homa transport0,ultra ethernet0. GitHub repo searchtenstorrent homa0 hits. The tt-metal Ethernet/firmware code contains no IP/UDP or compliance-mode stack (grep oftt_metal/fabric,tt_metal/hw/inc/internal/ethernet,tt_metal/hw/firmware).tech_reports/TT-Fabric/TT-Fabric-Architecture.md§1)C0L/Homa-NIC: a work-in-progress FPGA Homa targeting 100 Gb/s. It appears in search results, but the repo now returns 404. SDP/SMT (SIGCOMM'25, arXiv 2406.15686): transport-level encryption for Homa/NDP with NIC offload. nanoPU (OSDI'21) did hardware-terminated, NDP-style low-latency transport; cited from the literature, not re-verified in this session. Nothing on AI-accelerator-integrated Ethernet.maintracks Linux 6.17.8, with backports on RHEL 8/9.5 branches. Upstreaming reachednet-next v16without a merge. A Sept 2026 protocol change made grant-requiring messages fully scheduled (newSTART_MSGpacket). IANA IP protocol 146. Known-good NICs: ConnectX-4/5/6 and Intel E810. Ousterhout's 2026 AI Engineer talk, "Homa: The End of TCP for AI Clusters", pitches it for small coordination messages over switched datacenter networks (KV-cache existence checks, barriers), claiming ~13x lower P99 for short messages vs TCP, and relies on switch priority queues for its full benefit.Conclusion: no real prior art for Homa on accelerator-integrated Ethernet, Tenstorrent or otherwise. The closest relatives (UET RCCC, EQDS, SIRD) all target switched fabrics with contention.
What Homa is and what it assumes
homa_qdiscfor coexistence with TCP).Its entire value comes from queueing and contention. It does not reduce a link's serialisation time or fixed per-hop latency on an idle point-to-point wire.
What Blackhole Ethernet and TT-Fabric actually are
tech_reports/TT-Fabric/TT-Fabric-Architecture.md§2.1.docs/TWO-HOST-MESH.md). The data path runs NoC → ERISC L1 → Ethernet → peer ERISC L1 → NoC. Only Ethernet cores can send, and only into the L1 of the core at the far end of the link. THIRD-PARTY:tech_reports/EthernetMultichip/BasicEthernetGuide.md.TT-Fabric-Architecture.md§2.2–2.3, §7.4.tt_metal/fabric/impl/kernels/edm_fabric/fabric_erisc_router.cpp, 3,816 lines) has fixed-slot sender and receiver channels (e.g. 8 slots). Workers push only into free slots, and the receiver returns credits as slots drain. That is receiver-driven admission at hop granularity. The low-level Ethernet API also carriesbytes_sent/receiver_acksync fields. THIRD-PARTY: tt-metal source andBasicEthernetGuide.md.docs/GOAL-VLLM-SERVING.md§bring-up andbench/runs/two-cards-2026-09-05.jsonl.get_num_linksis a static table that returns 2 for P300, which is correct for us. Vendor spec: P150a ports are QSFP-DD 800G; nominal ~400 Gb/s ≈ 50 GB/s per link per direction (THIRD-PARTY/ESTIMATE). We have never measured effective link rate (docs/PREFILL-WHERE-THE-TIME-GOES.md§4 says so explicitly).docs/RISCV-OFFLOAD-FEASIBILITY.mdtable;bh_hal_active_eth.cpp.run_routing(). Changing it means a firmware flash, which violates our hard rule: firmware updates are never unattended;tt-flashis not packaged. THIRD-PARTY:BasicEthernetGuide.md"Ethernet routing firmware", "Link Health and Retraining".Applicability to our traffic
Homa's value proposition does not apply to the card fabric. Collectives on a 2-chip line are limited by bandwidth (prefill) or by fixed per-collective latency and synchronisation (decode). Neither term depends on queueing policy.
Where Homa could conceptually apply:
docs/TWO-HOST-MESH.md) uses QSFP-DD direct attach between the cards plus MPI over the host network for the control plane only. The small cross-host MPI coordination messages are the one Homa-shaped traffic class. It is not relevant while the hosts sit at different sites, and it is not measured.Implementation paths compared
bench/runs/host-pinned-leak-20260914T063000Z.jsonl); the Realtek NIC is not a known-good Homa NICfabric_erisc_router.cppbench/runs/lowlevel-audit-runA-20260913T070950Z.jsonl) is unresolvablerun_routing()Does it pay here? (numbers)
Where the time goes (MEASURED):
bench/runs/sweep-32k-20260914T142154Z.jsonl,.table.txt). The goal-doc bracket for B=8 prefill share is 52.4–78.1% at 32k (docs/GOAL-AGENT-SERVING.md,bench/runs/serving-grid-20260913T192352Z.jsonl).bench/runs/target-shape-ttft-B8-128k-20260914T130939Z.jsonl,bench/runs/target-shape-ttft-B4-256k-20260914T134045Z.jsonl).Fabric cost in decode (MEASURED, with caveats):
bench/runs/p0-decode-per-op-profile-20260912T151000Z.jsonl,bench/runs/p0-profile-20260912/itemisation-table.txt). Caveats: an eager profile at B=1/4k on the composed GDN path, not the production fused path. The CCL op count matches production's inventory (128 RS + 128 AG + 1 lm-head gather,bench/runs/lowlevel-audit-program-inventory-20260913T001500Z.jsonl). There is no production-arm per-op table.bench/runs/lowlevel-audit-runA-20260913T070950Z.jsonl), so per-collective host overhead is not an opportunity either.get_num_linksoverride measured −1.35 ms/step (+2.4% decode, −4.6% TTFT) on another team's box (docs/EXTERNAL-LEDGER.md,docs/EXTERNAL-REPO-RUNBOOK.mdrow 24). That is the scale of a real fabric lever: extra bandwidth, not a better transport.Fabric cost in prefill (UNMEASURED, derived bound):
docs/PREFILL-WHERE-THE-TIME-GOES.md§4, derived).bench/runs/serving-16k-20260913T095210Z.jsonl,bench/runs/target-shape-ttft-B8-128k-20260914T130939Z.jsonl). So fully exposed CCL would be ~4–6% of prefill (ESTIMATE), less where the fused all-gather-matmul / matmul-reduce-scatter ops (AGMM/MMRS) overlap it.Serving/host-NIC traffic (ESTIMATE): an OpenAI request plus token stream is kilobytes over the tailnet (WireGuard UDP; Homa's DSCP priorities do not survive the tunnel). Even a pessimistic 10 ms of network latency is 0.15% of the best TTFT we have (6.62 s, B=4/4k) and 0.002% of 609 s.
Ranking against
docs/GOAL-AGENT-SERVING.md: its work list is prefix caching with GDN checkpoints (landed on this branch,bench/runs/phase2a-prefix-e2e.jsonl), prefill interleaving, and prefill throughput. Homa ranks below every item on it and below "second QSFP-DD cable". It does not act on prefill serialisation, which is where 74–79% of wall goes.Recommended next steps / probes (with go/no-go)
/tmp/ttlockconvention when they are free). Use tt-metal's own fabric benchmark (tests/tt_metal/tt_fabric/benchmark/collectives,tests/tt_metal/tt_fabric/test_infra/test_yamls/*) for unicast bandwidth vs packet size and ping latency on the 2-link P300. Record tobench/runs/fabric-linkrate-*.jsonl. This turns the1557/L µs/tokenterm into a number.docs/TRACY-PREFILL-PROFILE.md), at 16k/32k/64k.get_num_linkspatch (hardware purchase; third-party −1.35 ms decode / −4.6% TTFT); (ii) better overlap in AGMM/MMRS. Not Homa.Risks and unknowns
tt-smi -r). Any base-firmware change is a flash, which is forbidden unattended.Sources
Ours:
bench/runs/p0-decode-per-op-profile-20260912T151000Z.jsonlbench/runs/p0-profile-20260912/itemisation-table.txtbench/runs/lowlevel-audit-program-inventory-20260913T001500Z.jsonlbench/runs/lowlevel-audit-runA-20260913T070950Z.jsonlbench/runs/sweep-32k-20260914T142154Z.jsonl(+.table.txt)bench/runs/serving-grid-20260913T192352Z.jsonlbench/runs/serving-16k-20260913T095210Z.jsonlbench/runs/target-shape-ttft-B8-128k-20260914T130939Z.jsonlbench/runs/target-shape-ttft-B4-256k-20260914T134045Z.jsonlbench/runs/two-cards-2026-09-05.jsonlbench/runs/host-pinned-leak-20260914T063000Z.jsonlbench/runs/phase2a-prefix-e2e.jsonldocs/GOAL-AGENT-SERVING.md,docs/GOAL-N-SERIES.md,docs/WHERE-THE-BOTTLENECK-IS.md,docs/PREFILL-WHERE-THE-TIME-GOES.md§4,docs/HOW-IT-WORKS.md§1,docs/TWO-HOST-MESH.md,docs/EXTERNAL-LEDGER.md,docs/EXTERNAL-REPO-RUNBOOK.md,docs/RISCV-OFFLOAD-FEASIBILITY.md,docs/HOST-PLATFORM-LIMITS.md(Realtek NIC)tt-metal (local tree
/home/orchestra/ttm-build/src):tech_reports/TT-Fabric/TT-Fabric-Architecture.md(TT-link mode, Go-Back-N, routing, VCs, EFC, Galaxy scale-out)tech_reports/EthernetMultichip/BasicEthernetGuide.md(ERISC data path, base routing firmware on SPI ROM,run_routing(), link retraining)tt_metal/fabric/impl/kernels/edm_fabric/fabric_erisc_router.cpp,tt_metal/fabric/fabric_edm_packet_header.hpp,tt_metal/llrt/hal/tt-1xx/blackhole/bh_hal_active_eth.cppHoma:
Related transports / hardware: