Skip to content

vLLM 0.19.0 + ROCm 7.12: Triton HIP invalid device ordinal on gfx1151 (Strix Halo) #3

Description

Environment

  • GPU: AMD Radeon 8060S (Strix Halo, gfx1151)
  • Package: vllm0.19.0-rocm7.12.0-gfx1151-x64 (portable build from this repo)
  • Kernel: Linux 7.0.0-rc7 (CachyOS)
  • RAM: 128GB unified
  • PyTorch HIP: 7.12.60610
  • Triton: 3.6.0

Bug

vLLM fails to start with any GGUF model. The EngineCore subprocess crashes during attention initialization with:

RuntimeError: Triton Error [HIP]: Code: 101, Messsage: invalid device ordinal

The error comes from Triton's AMD HIP driver (triton/backends/amd/driver.py) when ROCM_ATTN executes Triton kernels in the forked EngineCore child process.

Key observation

PyTorch HIP works fine in the main process:

import torch
print(torch.cuda.device_count())   # 1
print(torch.cuda.get_device_name(0))  # Radeon 8060S Graphics
x = torch.randn(100, 100, device="cuda:0", dtype=torch.float16)
y = torch.matmul(x, x)  # OK

The crash only happens in the EngineCore subprocess (pid different from APIServer). This suggests Triton's HIP device enumeration breaks after fork/spawn on gfx1151 iGPU.

Reproduction

export PYTHONPATH="$HOME/vllm-rocm/lib/python3.12/site-packages/_rocm_sdk_core/share/amd_smi:$PYTHONPATH"
export HIP_VISIBLE_DEVICES=0

~/vllm-rocm/bin/python3 -m vllm.entrypoints.openai.api_server \
  --model any-model.gguf \
  --port 8000 \
  --max-model-len 4096 \
  --dtype float16 \
  --gpu-memory-utilization 0.70 \
  --enforce-eager

Note: amdsmi also needed a PYTHONPATH fix — it lives at _rocm_sdk_core/share/amd_smi/ but isn't importable by default. Without it, vLLM can't detect the ROCm platform at all.

What I tried (all fail with same Triton error)

  • --enforce-eager (skips inductor, but ROCM_ATTN still uses Triton)
  • HIP_VISIBLE_DEVICES=0
  • VLLM_USE_TRITON_FLASH_ATTN=0
  • VLLM_USE_V1=0
  • --disable-custom-all-reduce
  • VLLM_WORKER_MULTIPROC_METHOD=spawn

Stack trace

(EngineCore pid=632069) ERROR [core.py:1108]
  File "triton/backends/amd/driver.py", line 835, in __call__
    self.launch(self.launch_cooperative_grid, gridX, gridY, gridZ, stream, function, profile_scratch, *args)
  File "triton/knobs.py", line 423, in __call__
    for call in self.calls if not self.reversed else reversed(self.calls):
SystemError: <built-in method __reversed__ of list object at 0x7fe8f669ea00> returned a result with an exception set
RuntimeError: Triton Error [HIP]: Code: 101, Messsage: invalid device ordinal

Expected

vLLM should be able to serve GGUF models on gfx1151 using the portable ROCm 7.12 package, same as it does on discrete GPUs.

Impact

gfx1151 (Strix Halo) has 128GB unified VRAM — it's an ideal target for running large models locally. The portable package detects the GPU correctly and loads model weights fine, but inference fails at the Triton kernel launch stage.

Currently using llama.cpp Vulkan as a workaround via Lemonade SDK, which works at ~80 tok/s on 35B MoE models.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions