Pull requests / #2302

#2302 hip: gfx1103 gets the native dot4 and the gfx11 WMMA kernels

open · @AlexisCarbonell · 0 comments · View on GitHub

BenchmarksSetup & installAMD / HIPNVIDIA / CUDAModels & quantsDocumentation

Description

Issue: Refs #1423

## Summary

The Radeon 780M / 760M / 740M (Phoenix / Hawk Point, gfx1103) was outside the `dp4a` guard in
`hip_compat/intrinsics.hpp` and outside the `__gfx11xx__` list of the WMMA kernels: every quantized dot product ran
the four-step byte loop, and the prompt attention, block scorer, prompt GEMMs and prompt experts took the hipBLAS /
portable-kernel paths. This puts gfx1103 in both lists, like gfx1102 and gfx1150 (the same `v_dot4_i32_iu8`; the
gfx1150 port runs the same WMMA files).

## What changed

- `include/strata/hip_compat/intrinsics.hpp`: `__gfx1103__` in the sudot4 guard (native signed dot4).
- `include/strata/kernels/gfx_arch.hpp`: gfx1103 in `gfx_arch_is_gfx11_wmma()` (the runtime gates of every WMMA
  path), and the header comment.
- `src/prefill/wmma_gemm.cu` (6 guards), `src/prefill/kernels.cu`, `src/prefill/moe_fused.cu`,
  `src/prefill/moe_fused_iq.cu`, `src/kernels/cuda/qsa_prompt_attn.cu`, `src/kernels/cuda/qsa_select.cu`:
  `__gfx1103__` in the `#if` guards.
- `cmake/hip_backend.cmake` and `docs/STRIX_HALO.md`: the comments that named gfx1103 as excluded.
- `src/core/arch_defaults_test.cpp`: `arch_default_env("gfx1103")` stays empty (the switches are setup's; see the
  companion setup PR), and `tools/test_setup_strix_halo.py` now expects gfx1103 in the engine's WMMA list.

## Extra Notes

Measured on one 780M (Ryzen 7 8745HS, 60 GB, GTT 50 GiB, ROCm 10.1, Q2_0 + MTP, 32K context):

- decode **8.70 -> 13.44 tok/s** at a 32K prompt with default flags (dot4 is the default change);
- the WMMA parity tests now **run and pass** on gfx1103 instead of skipping (`hip_intrinsics`,
  `hip_prefill_wmma_gemm_parity`, `hip_prompt_attn_wmma`, `qsa_*`, `hip_prefill_fused_moe`, `hip_prefill_fused_iq`,
  `hip_gemm_f16_io_parity`, `hip_prefill_mmq_parity`); `ctest`: 57 passed, 2 skipped (the two hipBLASLt tests, which
  run and pass with the table), 2 environmental failures (`ple_parity` needs the `bench/micro` fixtures,
  `platform_memory_test` needs a memlock limit above 8 MiB);
- the greedy token ids are unchanged against the pre-port build at 4K and 32K (dot4 is exact integer arithmetic);
- HIP builds for gfx1103 and for `gfx1100;gfx1103;gfx1201` compile. CUDA and SYCL were not built here (no toolchains
  on the test box); the added macros are undefined for them, as for the other gfx11 targets.

Raw runs and the numbers: `bench/results/2026-10-12-community-gfx1103`.

Related on strata.com

Editorial links to help you install, pick models, or read release notes — not part of the upstream thread.