改动 / #3329

#3329 [Engine] Linux RX 6000 engine package: build_hip_linux.sh variant rx6900 (gfx1030, gfx1031)

open · @elightcap · 0 评论 · 去 GitHub 看

BenchmarksSetup & installAMD / HIPNVIDIA / CUDAModels & quantsDocumentationWindowsLinux

说明

## Problem and result

On Linux the Terminal and `strata update` have no engine for an RX 6000 card. The 0.2.0-beta feed has HIP packages for
gfx1100-1102, gfx1151 and gfx1200/1201 only, so `strata launch` on an RX 6900 XT stops with:

```
The model is ready, but Strata can't start it yet: it couldn't find an engine for this computer (This build of Strata is
for AMD RX 7000 and RX 9000 and Ryzen AI Max cards. This computer has an AMD RX 6000 card (gfx1030). Ask for the RX 6000 build).
```

#3296 reports the same on an RX 6700 XT (gfx1031). The engine itself runs on these cards (the RDNA2 section of
docs/AMD_HIP.md); only the package is missing.

This adds an `rx6900` variant to `packaging/build_hip_linux.sh` (gfx1030 and gfx1031), puts it in the release matrix
test and adds a note to docs/AMD_HIP.md. With the package in the components folder, `strata launch` picks it and serves.

Related discussion: #3296

## Approach

The same script and steps as the `rx9070`, `rx7900` and `halo` packages; only the variant's arch list is new. ROCm is
TheRock's `gfx103X-all` 7.13.0a20260515, the version setup pins for this family (`ROCM_FAMILY_PINS`, #1103). That
library set has rocBLAS kernels for gfx1031 of its own (142 files for each of gfx1030 and gfx1031), so a gfx1031 card
runs its own code and needs no `HSA_OVERRIDE_GFX_VERSION` (which #3145 needed for ROCm 7.1.1). hipBLASLt has no gfx103x
kernels, as before.

Compatibility: no existing package, default or code path changes. The feed offers the package only after a maintainer
builds and publishes it. The release matrix test now lists `rx6900` for linux-x86_64 and expects gfx1030 and gfx1031
on Linux to get it; Windows still has no RX 6000 package, and gfx1030 moved from the "no engine" list to that new test.

## Validation

Machine: RX 6900 XT 16 GB (gfx1030), Ryzen 9 5950X, 128 GB DDR4, Arch Linux (kernel 7.2.5, glibc 2.44, GCC 16.2.1,
CMake 4.4.4). Source e88ee39d plus this change; llama.cpp at setup's `LLAMA_CPP_COMMIT` (3cf03257).

Built with:

```sh
VARIANT=rx6900 LLAMA=<llama.cpp> HP=<venv>/_rocm_sdk_devel CORE=<venv>/_rocm_sdk_core \
  LIBW=<venv>/_rocm_sdk_libraries_gfx103X_all packaging/build_hip_linux.sh
```

(`rocm[libraries,devel]==7.13.0a20260515` from https://rocm.nightlies.amd.com/v2/gfx103X-all/; 950.7 MiB, 314 files.)

**Passed**

- `python packaging/binary_deps.py <package>`: every imported library is bundled or belongs to the OS / GPU driver.
- `python packaging/package_engine.py --verify <package>`: ok (313 files).
- `llvm-objdump --offloading`: `strata` 66 gfx1030 + 66 gfx1031 code objects, `strata-vision-hip` 138 + 138, no other arch.
- `env -i <package>/strata --version`: `strata 0.1.45.3`.
- `strata launch --model ud-q4_k_xl --family unsloth --context 128k --yes --no-tui` with the package in
  `~/.local/share/strata/components/engine/`: the Terminal picks it and serves; the engine and `librocblas.so.5` load from
  the package folder.
- `strata connect <app> --check` for opencode, codex, claude-code and pi: prompt and tool call PASS (8 of 8).
- Both picture readers from the package (`strata-vision-hip` on the card, `strata-vision` on the CPU) read a 640x480
  test picture correctly ("STRATA 6900", a red rectangle and a blue circle): 8.2 s and 9.3 s per request.
- Same engine version, same settings, one fresh 48,453-token UD-Q4_K_XL prompt each: the package 722 tok/s (an earlier
  gfx1030-only build of it: 725), engine 0.1.45.3 built by hand against the system ROCm 7.2.4 with its rocBLAS table
  733 tok/s. Settings: `STRATA_HIP_PROMPT_F16=1 STRATA_ROCBLAS_TUNING=tools/hip STRATA_SH_STREAM=1
  STRATA_ROUTE_TAIL_SKIP=7 STRATA_PREFILL_CPU_SHARE=auto STRATA_HIP_ADAPT_KERNEL_COPY=1`, `--resident-budget-gib 71
  --pcie-frac 0.35 --mtp-draft-vocab data/draft_vocab_en.bin`, the rest as `strata launch` writes it (`--kv int8
  --kv-resident 32768 --max-context 131072 --spec 4`). One run per cell.
- `python -m pytest tests/terminal/test_release_matrix.py`: 11 passed.

**Failed**

- `python -m pytest tests/terminal` in this checkout: 848 passed, 16 skipped, 6 failed. None comes from this change:
  five also fail on a clean origin/main worktree on this machine (`test_discovery.py::GuiLayout` x2,
  `test_launch_tui.py::AccessStep::test_cloudflare_without_the_helper_says_how_to_install_it_and_does_not_block`,
  `test_private_files.py::...not_strictly_private`, `test_procs.py::...engine_orphan...`). The sixth,
  `test_discovery.py::GuiLayout::test_list_and_the_wizard_agree_on_the_install`, fails only because this checkout is
  itself a setup install (`/home/.../Strata != /tmp/strata-discovery-.../install`); with this diff applied to the clean
  worktree it passes, together with the release matrix tests (12 passed).

**Not run**

- A gfx1031 card (RX 6700 XT / 6750 XT): the gfx1031 code is built and in the package, not executed.
- Another distribution: the package above was built on Arch and needs glibc 2.43 / GLIBCXX 3.4.35, so it was only run
  here. The published packages are built in an Ubuntu 22.04 chroot; that build was not made.
- A Linux AppImage installer for RX 6000, a Windows RX 6000 package, CUDA and SYCL builds (no file of theirs changes).

## Limits

- `tools/hip` has no rocBLAS table for the package's rocBLAS (5.4.0.ad84daa81c), so the engine logs that it cannot open
  `gfx1030-rocblas-5.4.0.ad84daa81c.txt` and runs rocBLAS's own kernels. Making one with `tools/hip/tune_rocblas` is
  follow-up work.
- The package reaches users only once a maintainer builds and publishes it in the feed.

Measured and written with Claude Code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_012oqtnhtRwYGZ7yDfoVULrX

本站相关内容

相关页面的快捷入口。