vllm-project/vllm · error · NotImplementedError
mori currently only support arch gfx942 and gfx950
Error message
mori currently only support arch gfx942 and gfx950
What it means
Raised in _make_all2all_kwargs for the mori all2all/EP path when the AMD GPU is neither gfx942 (MI300X) nor gfx950 (MI350). The mori kernel launch parameters (warp/block counts for dispatch-combine) are only tuned/implemented for those two architectures, so building kwargs on any other ROCm gfx target raises NotImplementedError.
Source
Thrown at vllm/distributed/device_communicators/all2all.py:965
warp_num_per_block = 16
block_num = 80
else:
# Multi-node: kernel follows --all2all-backend (mirrors deepep_* split).
# mori_low_latency → InterNodeV1LL; mori_high_throughput → V1.
if self._all2all_backend == "mori_low_latency":
kernel_type = mori.ops.EpDispatchCombineKernelType.InterNodeV1LL
else:
kernel_type = mori.ops.EpDispatchCombineKernelType.InterNodeV1
if on_gfx942():
warp_num_per_block = 16
block_num = 32
rdma_block_num = 16
elif on_gfx950():
warp_num_per_block = 8
block_num = 64
rdma_block_num = 32
else:
raise NotImplementedError(
"mori currently only support arch gfx942 and gfx950"
)
return dict(
rank=rank,
world_size=num_ep_ranks,
data_type=quant_dtype,
hidden_dim=token_hidden_size,
scale_dim=scale_dim,
scale_type_size=scale_type_size,
max_token_type_size=input_dtype.itemsize,
max_num_inp_token_per_rank=max_num_tokens_per_dp_rank,
num_experts_per_rank=num_local_experts,
num_experts_per_token=num_experts_per_token,
warp_num_per_block=warp_num_per_block,
block_num=block_num,
kernel_type=kernel_type,
rdma_block_num=rdma_block_num,View on GitHub (pinned to c794754062)
Solutions
- Switch to a supported all2all/EP backend for this GPU (do not select mori on gfx != 942/950).
- If you believe your GPU is MI300X/MI350, verify the detected arch (rocminfo / torch.version.hip / HSA_OVERRIDE_GFX_VERSION) — an override can mask the real target.
- Check the mori project's support matrix for newly added architectures and update mori + vLLM together.
Example fix
# before VLLM_ALL2ALL_BACKEND=mori # on gfx90a # after: use a backend valid for this GPU VLLM_ALL2ALL_BACKEND=<non-mori backend supported on gfx90a>
Defensive patterns
Strategy: validation
Validate before calling
from vllm.platforms.rocm import on_gfx942, on_gfx950
if backend == "mori" and not (on_gfx942() or on_gfx950()):
raise SystemExit("mori all2all requires gfx942 (MI300X) or gfx950 (MI350)") Type guard
def mori_supported_on_this_gpu() -> bool:
from vllm.platforms.rocm import on_gfx942, on_gfx950
return on_gfx942() or on_gfx950() Try / catch
try:
kwargs = manager._make_all2all_kwargs(**kw)
except NotImplementedError as e:
if "gfx942" in str(e):
switch_all2all_backend_and_relaunch()
raise Prevention
- Gate the mori backend selection on the detected gfx arch in cluster templates.
- Beware HSA_OVERRIDE_GFX_VERSION: it can make the runtime report an arch the hardware is not.
When it happens
Trigger: Selecting the mori all2all backend for expert parallelism on a ROCm GPU other than gfx942/gfx950 (e.g. gfx90a MI210, gfx1100 consumer parts); on_gfx942() and on_gfx950() both return false while the mori path is taken.
Common situations: Porting an EP deployment from MI300X to older/newer AMD parts; a container where the ROCm arch flag resolves differently than expected; using a mori build that defaults on for all ROCm GPUs.
Related errors
- HTTP request failed: {0}
- JSON error: {0}
- Tokenizer error: {0}
- tokenize endpoint unavailable: {0}
- Configuration error: {0}
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/d6ae31ab2658e21d.
Report an issue: GitHub.