Add three environment variables to prevent miopenStatusUnknownError and
system stuttering during inference on RDNA4 GPUs:
- MIOPEN_USER_DB_PATH: redirect MIOpen kernel cache to writable, persistent dir
- MIOPEN_CUSTOM_CACHE_DIR: same, for custom operator cache
- MIOPEN_FIND_MODE=FAST: use heuristic kernel selection instead of exhaustive
benchmarking, which fails on RDNA4 with ptr: 0 size: 0 workspace warnings
MIOPEN_FIND_MODE=FAST does not affect output quality. All MIOpen kernel
variants produce the same numerical result; fast mode selects a known-good
kernel using heuristics instead of benchmarking every variant on the GPU.
Tested on RX 9070 (gfx1201) with ROCm 7.2 and PyTorch 2.12.1+rocm7.2.
Hardware note: tested on Ryzen 7 9800X3D + RX 9070 with Gigabyte B650M DS3H
motherboard. The exhaustive benchmarking failures may be related to IOMMU
behavior on this platform. This system was affected by an IOMMU bug patched
upstream in kernel 6.19.10, which may be a contributing factor. May not
affect all RDNA4 systems. MIOPEN_FIND_MODE=FAST is a safe default regardless.
Depends on PR #862 which fixes the broken ROCm Docker build.
* Fix ROCm setup for Linux AMD GPUs
- Ensure Docker ROCm builds resolve PyTorch packages from the ROCm wheel index so later dependency installs do not replace them with CUDA wheels.
- Move ROCm device group handling to a runtime entrypoint that joins the groups owning /dev/kfd and /dev/dri, avoiding distro-specific render/video GID defaults.
- Leave HSA_OVERRIDE_GFX_VERSION unset by default in the ROCm compose overlay so newer RDNA GPUs can use native ROCm detection.
- Add Linux GPU detection to the Unix setup recipe so AMD systems install ROCm torch wheels and NVIDIA systems install CUDA wheels before backend dependencies.
* docs(changelog): add Linux ROCm setup entry
* fix(setup): pin ROCm torch wheels and prefer NVIDIA over amdgpu
- Install torch/torchaudio from the ROCm index only, before the pooled
requirements install, so a plain PyPI (CUDA) wheel can't outrank +rocm
- Detect NVIDIA before AMD and gate ROCm on /dev/kfd, so hybrid
AMD+NVIDIA hosts get CUDA instead of ROCm
* fix(docker): add ROCm GPU support via compose overlay
Fixes#618. The Docker image installs CPU-only PyTorch from PyPI by
default, so even when users correctly pass /dev/kfd and /dev/dri device
nodes into the container, torch.cuda.is_available() returns False and
the GPU is reported as "None (CPU only)".
Changes:
- Dockerfile: add PYTORCH_VARIANT build arg (default: cpu). When set to
"rocm", the ROCm-enabled PyTorch wheels are installed from the
pytorch.org/whl/rocm6.3 index before requirements.txt runs, so pip
sees the ROCm build as already satisfying the torch>=2.2.0 constraint
and does not overwrite it with the CPU wheel. The render and video
groups are created with parameterised GIDs (RENDER_GID / VIDEO_GID,
defaulting to Ubuntu 22.04 values) and the voicebox user is added to
both groups so it can open /dev/kfd and /dev/dri.
- docker-compose.rocm.yml: new compose overlay that wires everything
together — PYTORCH_VARIANT=rocm build arg, /dev/kfd + /dev/dri device
passthrough, group_add for render/video, HSA_OVERRIDE_GFX_VERSION
(defaults to 11.0.0 for RDNA3/Strix Halo with a comment listing
values for RDNA2/RDNA1/Vega), and PYTORCH_HIP_ALLOC_CONF for the
memory allocator. Usage:
docker compose -f docker-compose.yml -f docker-compose.rocm.yml up --build
- docker-compose.yml: add a comment pointing to the ROCm overlay.
The CPU default path is unchanged — no extra build time, no size increase.
Co-authored-by: Cursor <[email protected]>
* fix(docker): address review comments on ROCm overlay
Two issues raised in PR review:
1. CodeRabbit: `docker compose up --build-arg` is not supported by the
`up` subcommand. Replaced the GID override instructions with the
correct env-var export pattern. Added RENDER_GID and VIDEO_GID to
`build.args` using ${VAR:-default} interpolation so a single export
covers both the Dockerfile group creation and the runtime group_add.
Changed group_add entries from hardcoded strings to the same
interpolated vars so host GIDs stay in sync end-to-end.
2. @Xarianne: ROCm 6.3 does not support RDNA 4 (RX 9000 series) cards.
Added a ROCM_VERSION build arg (default 6.3) to both the Dockerfile
and docker-compose.rocm.yml so users can set ROCM_VERSION=7.2 for
RDNA 4 support without editing any files. Added RDNA 4 / 12.0.0 to
the HSA_OVERRIDE_GFX_VERSION comment table.
Co-authored-by: Cursor <[email protected]>
---------
Co-authored-by: Cursor <[email protected]>