[Perf][Bugfix] Prefer MNNVL for single-node FlashInfer allreduce again (#61989)

Signed-off-by: khluu <khluu000@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Wei Zhao <51183510+wzhao18@users.noreply.github.com>
This commit is contained in:
Kevin H. Luu
2026-10-17 02:55:28 -07:00
committed by GitHub
co-authored by Claude Opus 5.5 Wei Zhao
parent 026f6ab268
commit 2b85d9cb65
2 changed files with 8 additions and 6 deletions
+2 -2
View File
@@ -462,8 +462,8 @@ def test_flashinfer_standalone_workspace_size(
@pytest.mark.parametrize(
("node_count", "is_blackwell", "expected"),
[
(1, False, ("trtllm", False)),
(1, True, ("trtllm", False)),
(1, False, ("mnnvl", True)),
(1, True, ("mnnvl", True)),
(2, False, (None, False)),
(2, True, ("mnnvl", False)),
],
@@ -156,10 +156,12 @@ def _resolve_fi_ar_backend(group: ProcessGroup) -> tuple[str | None, bool]:
node_count = _node_count(group)
if node_count == 1:
# TRTLLM supports single-node allreduce on Hopper and Blackwell. Do not
# create an MNNVL workspace when the process group is node-local.
backend = "trtllm"
allow_trtllm_fallback = False
# MNNVL decodes faster than TRTLLM on single-node NVSwitch systems
# (about 3-5% throughput at TP4/TP8 on H200 and B200). Fall back to
# TRTLLM where the node lacks NVSwitch multicast and MNNVL cannot
# create its workspace.
backend = "mnnvl"
allow_trtllm_fallback = True
elif current_platform.has_device_capability(100):
# MNNVL requires Blackwell-class GPUs and is the only supported
# FlashInfer backend for a multi-node allreduce process group.