Skip to content

Test: Infinity Fabric Link peer transfer (TOSH_MGPU_PEER) on W6800X Duo / Vega II Duo #49

Description

@engeldlgado

Hey @Basten7, following up on something your rig is uniquely suited to test.

ToshLLM 0.83.1 ships an opt-in feature: for multi-GPU layer splits, when two AMD GPUs sit in the same Metal peer group (the two dies of an Infinity Fabric-bridged module), layer activations copy directly GPU→GPU over the Infinity Fabric Link instead of round-tripping through system RAM. It's off by default because it has never run on real bridged hardware yet, and a peer copy that silently returns wrong data has no fallback. Your Mac Pro is the one machine I know of with exactly the right hardware:

  • W6800X Duo (dies [5]+[6] and [7]+[8]), wave32 / RDNA2
  • Vega II Duo (dies [1]+[2]), wave64 / GCN

Each Duo has an on-module Infinity Fabric bridge, so its two dies should share a peerGroupID and light up this path.

How to enable

Set the env var before launching, same way you ran TOSH_MGPU_EVENTS=1 on #31:

TOSH_MGPU_PEER=1

Test 1: W6800X Duo (do this one first, it's the low-risk case)

The W6800X Duos are wave32, the same architecture I develop on, so the compute kernels are already well-tested here... the only new thing is the transport. That makes this the clean isolation test.

  1. In Settings → Multi-GPU, restrict the split to exactly the 2 dies of one W6800X Duo (e.g. devices [5] and [6]), nothing else. That way every layer boundary crosses the on-module bridge.
  2. Model: a dense model that needs both dies, e.g. Llama-3.3-70B-Instruct Q4_K_M (~40 GB, splits nicely across the 2×31 GB) or any dense 30 to 70B Q4 you already have. Please avoid MoE and avoid the 397B for this test... the 397B has that separate wave64 batch bug (Benchmark - AMD Radeon Pro Vega II - v0.81.61 vs v0.81.62 over differents quant #31), and MoE muddies the hand-off pattern.
  3. Run a normal chat, a few hundred tokens.
  4. Repeat the exact same run without TOSH_MGPU_PEER=1, and once more with TOSH_MGPU_EVENTS=1 instead, for comparison.

What to look for

  • Log line: Infinity Fabric peer transfer enabled: <src> -> <dst> (peer group N). If it appears, the two dies matched a peer group and the path engaged. If it does not appear, they didn't share a peerGroupID and it fell back to staging (that's data too, not a failure).
  • Output coherent? It must be identical quality to default. If it garbles or 0000, that's the bug: drop the token and report.
  • tg (t/s) with the flag vs without vs TOSH_MGPU_EVENTS=1.

Test 2: Vega II Duo (only after Test 1)

Same procedure on dies [1]+[2], but heads-up: these are wave64, which has a separate, still-open batch/perplexity issue (#48), so if output garbles here it may be the wave64 path rather than the peer transport. That's why Test 1 (wave32) is the isolation baseline. For the model, use something you've already confirmed coherent on a single Vega die first (a normal dense model, not the 397B), then repeat split across the two Vega dies with and without the flag.

What I'd love back

A small table is plenty:

config peer log line? coherent? tg (t/s)
W6800X Duo, default n/a
W6800X Duo, TOSH_MGPU_PEER=1 yes/no
W6800X Duo, TOSH_MGPU_EVENTS=1
Vega II Duo, default n/a
Vega II Duo, TOSH_MGPU_PEER=1 yes/no

No need for a big sweep, one dense model and a couple of configs per Duo. If the peer path is coherent and tg holds or improves on the W6800X Duo, that's enough to graduate it out of opt-in. Thanks as always for the hardware and the patience.

Metadata

Metadata

Assignees

Labels

area: engine/metalInference engine, Metal backend, kernels, and GPU execution

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions