Objective: To determine the maximum AllToAll dispatch throughput for MoE
expert parallelism across the DUT fabric.¶
Procedure: Generate a synthetic MoE dispatch workload where each GPU sends token embeddings to the experts selected by a top-k routing function.
Repeat the workload across EP group sizes 8, 16, 32, 48, 64, 96 and a range
of per-GPU batch sizes (e.g., 32, 64, 128, 256 tokens), holding the selected
canonical MoE test matrix config row constant, to populate the
EP-size-by-batch-size grid used in the Reporting Format below.
The dispatch payload per source-destination GPU pair per MoE layer is:¶
T_dispatch = (B × k × H_model × P_bytes) / N. where B = per-GPU batch size (tokens), k = top-k routing count,
H_model = hidden dimension, P_bytes = precision bytes (e.g., BFloat16 (BF16) = 2), N = EP group size¶
The corresponding total egress per GPU per MoE layer, summed over its N-1
destination peers, is:¶
T_egress = B × k × H_model × P_bytes × (N - 1) / N¶
T_egress, not T_dispatch, characterizes the per-accelerator offered load: it
equals T_dispatch × (N - 1). The portion of T_egress that crosses the Fabric
DUT Boundary counts only inter-node destination peers; this quantity is the
Fabric-Visible Data Volume (S_fabric) defined in [TERMINOLOGY], and expert
placement across nodes determines it. Two results obtained at equal B, k, and
N but different expert placement therefore represent different offered fabric
workloads. See the MoE AllToAll appendix for a worked example in which 88 of
95 destination peers are inter-node.¶
Canonical MoE Test Matrix¶
Table 7:
Canonical MoE Test Matrix
| Config |
E (experts) |
k (top-k) |
H_model |
T_dispatch per GPU pair (B=128, BF16, N=96) |
| M1 |
8 |
2 |
4096 |
21.8 KB |
| M2 |
64 |
4 |
7168 |
76.5 KB |
| M3 |
256 |
2 |
7168 |
38.2 KB |
| M4 |
256 |
8 |
7168 |
153 KB |
| M5 |
(implementer-defined — report all parameters) |
|
|
|
NOTE: T_dispatch values are the per-GPU-pair payload computed from the
T_dispatch formula above (e.g., M1: 128 × 2 × 4096 × 2 bytes / 96 =
21,845 bytes ≈ 21.8 KB, decimal KB, 1 KB = 1,000 bytes). The aggregate fabric load per dispatch is
T_dispatch multiplied by the number of communicating GPU pairs; see the
MoE AllToAll appendix for a worked example.¶
Measurement: Report aggregate bandwidth (GB/s), per-dispatch latency (us)
at P50 and P99, and GPU idle time waiting for dispatch completion. The test is repeated a minimum of 20 times per configuration.¶
Reporting Format: Results are reported as a heatmap with EP group size
on the Y axis, batch size on the X axis, and throughput (GB/s) as the color
dimension. A companion latency table is included. Reports state which config row(s) were used. For M5, the values of E, k, H_model, P_bytes, and N are included in the results table.¶
NOTE: When per-accelerator normalized throughput (BusBW) is reported alongside EP_alltoall_bandwidth, BusBW is computed per the BusBW definition in [TERMINOLOGY]; algo_factor is fixed per collective type and does not depend on the algorithm the library selects at runtime. The runtime algorithm in use is verified via library tracing and documented as part of the test conditions.¶