Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ those commits.
**Foreign HIP** (leapdragon, a17t, anyone who is not this lab) keeps
**their** Author **and** Committer. Same rule as extras
[PR #1](https://github.com/opengfx1030/vllm-rdna/pull/1) (leapdragon
`rdna_ar`, now dest extras @ `a4060647` squash / tip `f3dd65fa`; pick unique Aron Hsiao commits,
`rdna_ar`, now dest extras @ `a4060647` squash / tip `68a635ed`; pick unique Aron Hsiao commits,
not the GitHub squash). Do not rewrite those as Blivion or Cursor.

| Rule | Meaning |
Expand Down
2 changes: 1 addition & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ One V1 id per tile (`HIPPIHX_V1_OP_*`). Serve wraps as
`torch.ops.hippihx.<op>` — never a second Triton path in this library.
Python mirror: `hippihx.v1` (`V1OpId`, `ABI_REVISION`). Caps include
optional activation `dtype` (revision **2**). Qualnames `attention.*`
(revision **3**; ids unchanged). Dest extras tip `f3dd65fa7063` still
(revision **3**; ids unchanged). Dest extras tip `68a635ed8d78` still
has no `torch.ops.hippihx.*` rewire — see [`BACKPORT.md`](BACKPORT.md).
Do not edit `opengfx1030/vllm-rdna` from this tree.

Expand Down
41 changes: 23 additions & 18 deletions docs/BACKPORT.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# extras → hippihx backport review

Lock: [`opengfx1030/vllm-rdna`](https://github.com/opengfx1030/vllm-rdna)
`rdna_extras` @ `f3dd65fa7063` (2026-09-20 20:29 UTC). Dest **default
`rdna_extras` @ `68a635ed8d78` (2026-09-24 17:49 UTC). Dest **default
branch is `rdna_extras`**, not `main` (`c00091e02670` upstream vLLM — no
dest HIP). **No** `torch.ops.hippihx.*`. Observe only: no `.cu` dump, no
tok/s, no extras maxdiff.
Expand Down Expand Up @@ -43,16 +43,20 @@ until a body migrates and extras binds it.
| `ed94e3f3d299` | Qwen4Exp MTP proposer allowlist + skinny `w2_zp` | Stay extras. MTP still not dest. No HIP body. |
| `b33f9b66eb2b` | `get_device_name` torch fallback when amdsmi has no handles | Stay extras. Platform only. |
| `f3dd65fa7063` | extras PR **#15** merge (QSA live-context bound + folded **#12** PLE/MTP/graph-redirect) | Stay extras. Python/Triton/serve. No HIP body. Foreign George + Codex. Do not pick merge. Do not copy tok/s. |
| `e131562936f9` | extras PR **#17** merge (resident W4A16 MoE / Mamba #55450 retire) | Stay extras. ATen HIP (`moe_resident_decode.cu`). `VLLM_RDNA_MOE_RESIDENT*` default **off**. Dest `VLLM_RDNA_AR` still **0**. Foreign George + Codex. Do not pick merge. Do not dump. Do not copy tok/s. |
| `48c56efbe80b` | pin `AttentionConfig.backend = RDNA_ATTN` when `VLLM_USE_RDNA2_FA=1` | Stay extras. Python platform (`vllm/platforms/rocm.py`). API-server env; workers inherit config. Dest `VLLM_RDNA_AR` still **0**. Unique Blivion. No HIP. Do not copy tok/s. |
| `68a635ed8d78` | extras **#20** capture + dest-integrated **#21** FULL+PIECEWISE | Stay extras. Python/serve. Keeps FULL decode graphs; piecewise for mixed/prefill. Foreign Waldecir + Cursor. Do not pick merges. Do not copy tok/s. Dest `VLLM_RDNA_AR` still **0**. Zoo does not own graph mode. |

Other dest-fixed ISA (keep in tile locks, not a dump): GDN prefill `o`
`i_t_local`; causal_conv FIR pre-shift then shift; ConfigH
(`K_STEP=64`) reverted. Live dest bugs: [Dest extras defects](#dest-extras-defects).

Open extras PRs **#2** (GLM Later), **#17**, **#18**, **#19**. Draft
**#9/#10** sdot — skip. Closed **#3/#16** unmerged,
**#11** dest-reverted wvSplitK (**no zoo tile**), **#12** superseded
by dest **#15**. Merged **#13/#14/#15** dest *presence*, observe, do
not pick. `rdna_extras_wip_20260910` is not dest.
Open extras PRs **#2** (GLM Later), **#18**, **#19**. Draft **#9/#10**
sdot — skip. Closed **#3/#16** unmerged, **#21** dest-integrated
unmerged, **#11** dest-reverted wvSplitK (**no zoo tile**), **#12**
superseded by dest **#15**. Merged **#13/#14/#15/#17/#20** dest
*presence*, observe, do not pick.
`rdna_extras_wip_20260910` is not dest.

## Action

Expand All @@ -64,25 +68,26 @@ not pick. `rdna_extras_wip_20260910` is not dest.
| GDN decode fp16 SSM state | **Later** `attention/gdn_scan`. Recurrence stays 16 fp32 VGPR. |
| leapdragon `rdna_ar` + PIX helpers + dest T44b (`3b59ee16`) | **Later** `comm.pcie`. Still opt-in. Dest extras `MAX_KB` **64**; zoo **512**. Do not pick squash. |
| PR **#2** GLM-5.3 KDA/DSA | **Later** `kda_scan` / `dsa_nope` / `qsa_indexer`. Do not name tiles `glm5_*`. |
| GDN arenas, `rdna2_graph_keepalive.cuh`, breakable cudagraphs, Hybrid W4 gfx10, Flash-Next HC/QSA/PLE/M-RoPE HIP, skinny GEMM / `gemv_f16_rdna2`, PLE schema, W4 MoE oracle, `new_zeros`/`zeros_like`, V1 FULL→PIECEWISE, vLLM custom AR, `bench_report.py`, seq cap 6, Flash-Next launcher knobs, HC `_contig()` cache, QSA Triton bounds, mamba spec-decode, T44b wedge, V620 MoE JSON / amdsmi / PLE, ROCm platform init, extras EXL3 docker arch-guard, Qwen4Exp MTP, recovered extras probes, `qwen4_exp/**` | **Stay extras.** Product gates default off (S6 revert). No new V1 op until dest locks a class. |
| PR **#3** a17t / explore **#9/#10** sdot / closed **#12** / closed **#16** / PR **#17** / PR **#18** / PR **#19** | **Skip.** Second W4 family, not dest, serve-only. **#16** unmerged. **#17** resident MoE. **#18** GPTQ `BLOCK_KN_SIZE` 256. **#19** MTP unquantized-weight detect. |
| PR **#5** / **#8** Flash-Next, extras **#11** wvSplitK, extras **#13** T44b, extras **#14**, extras **#15** | **Closed.** Dest-landed T44b / #14 / #15 are observe-only. Dest reverted wvSplitK (`5c4ab989`). Do not re-merge. Do not grow `gemv_f16`. |
| GDN arenas, `rdna2_graph_keepalive.cuh`, breakable cudagraphs, Hybrid W4 gfx10, Flash-Next HC/QSA/PLE/M-RoPE HIP, skinny GEMM / `gemv_f16_rdna2`, PLE schema, W4 MoE oracle, `new_zeros`/`zeros_like`, V1 FULL→PIECEWISE, vLLM custom AR, `bench_report.py`, seq cap 6, Flash-Next launcher knobs, HC `_contig()` cache, QSA Triton bounds, mamba spec-decode, T44b wedge, V620 MoE JSON / amdsmi / PLE, ROCm platform init, extras EXL3 docker arch-guard, Qwen4Exp MTP, recovered extras probes, resident MoE, FA RDNA_ATTN pin, `qwen4_exp/**` | **Stay extras.** Product gates default off (S6 revert). No new V1 op until dest locks a class. |
| PR **#3** a17t / explore **#9/#10** sdot / closed **#12** / closed **#16** / PR **#18** / PR **#19** | **Skip.** Second W4 family, not dest, serve-only. **#16** unmerged. **#18** GPTQ `BLOCK_KN_SIZE` 256. **#19** MTP unquantized-weight detect. |
| PR **#5** / **#8** Flash-Next, extras **#11** wvSplitK, extras **#13** T44b, extras **#14**, extras **#15**, extras **#17**, extras **#20**, extras **#21** | **Closed.** Dest-landed T44b / #14 / #15 / #17 / #20 / dest-integrated #21 are observe-only. Dest reverted wvSplitK (`5c4ab989`). Do not re-merge. Do not grow `gemv_f16`. |

Bodies stay in extras because every dest HIP file includes `torch/all.h`.
A dump is not a migrate. CONTRIBUTING: do not edit extras from this repo.

## Dest file → tile

Observed at `f3dd65fa7063`. Numbers are extras observations, not dest
Observed at `68a635ed8d78`. Numbers are extras observations, not dest
locks. Fill tile READMEs.

| extras path | hippihx tile | Notes |
|---|---|---|
| `csrc/rocm/fa_rdna2.cu` | `attention/fa_fdot2` | ~33 KiB decode / ~48 KiB prefill smem. GQA-subgroup default. O accumulator register-resident @ `d1b200b1`. Persist O stay extras. |
| `csrc/rocm/fa_rdna2.cu` | `attention/fa_fdot2` | ~33 KiB decode / ~48 KiB prefill smem. GQA-subgroup default. O accumulator register-resident @ `d1b200b1`. Dest @ `48c56ef` pins `RDNA_ATTN` from API-server `VLLM_USE_RDNA2_FA`. Persist O stay extras. |
| `csrc/rocm/gdn_decode_rdna2.cu` | `attention/gdn_scan` | 16 fp32 VGPR/thread. SSM `fp16` or `fp32` @ `02adbfd4`. `NULL_BLOCK_ID=0` is a vLLM sentinel — zoo is “invalid slot → zero out”. |
| `csrc/rocm/gdn_prefill_*_rdna2.cu` | `attention/gdn_scan` | `o` uses `i_t_local`. Prefill HIP opt-in @ `cd1231fd`. Dispatch still misses dtype. |
| `csrc/rocm/q_gemm_rdna2.cu` + `q_gemm_rdna2_prefill.cu` + `qdq_4_rdna2.cuh` | `gemm/w4a16_fdot2` | One family (`use_v2_format`). ConfigA for `M>256`. Dest deleted `q_gemm_rdna2_awq_prefill.cu` @ `1046782`. ZP still scale-baked. K-split still unaligned. |
| `csrc/rocm/moe_q_gemm_rdna2.cu` | `moe/routed` | Reuses W4 helpers. |
| `csrc/rocm/moe_q_gemm_rdna2.cu` | `moe/routed` | Reuses W4 helpers. Dest @ `e1315629` dequant/eight-row stay extras. Do not dump. |
| `csrc/rocm/moe_resident_decode.cu` | `moe/routed` (watch) | Dest @ `e1315629`. ATen HIP. `VLLM_RDNA_MOE_RESIDENT*` default **off**. Stay extras. Do not dump. |
| `csrc/rocm/exl3_dot2_{dense,moe,dequant,hadamard}.*` | `gemm/exl3_3inst` | `LDS_PAD=8`. Dest @ `3d6df9ed` widened extras compile guard for docker multi-arch. Zoo still one arch per fatbin. Produce stays `-cb 3inst` outside. Do not dump. |
| `csrc/rocm/causal_conv1d_rdna2.cu` | `sequence/causal_conv` | Scalar FMA, wave32. FIR on pre-shift then shift. |
| `csrc/rocm/indexer_paged_mqa_rdna2.cu` | `attention/qsa_indexer` | DeepSeek-class indexer. |
Expand All @@ -102,7 +107,7 @@ extras consume.
journals FPP13 16k c=8 green via serve arenas — still extras.
2. Tile README LDS / `__launch_bounds__` / wave / DOT unit are filled.
3. hippihx ships one HIP entry extras can bind. **Started:** V1
`plan`/`run`. `run` is `NOT_READY`. extras @ `f3dd65fa7063` has no
`plan`/`run`. `run` is `NOT_READY`. extras @ `68a635ed8d78` has no
`torch.ops.hippihx.*`.
4. extras is rewired **in extras**. The extras copy is then deleted.

Expand All @@ -111,10 +116,10 @@ Until then: observe, lock numbers, keep stubs. Tracker:

## Dest extras defects

Dest tip `f3dd65fa7063`. Live dest bugs / rolled-back paths — hippihx
Dest tip `68a635ed8d78`. Live dest bugs / rolled-back paths — hippihx
must not reproduce them.

| Defect | Where | Status @ `f3dd65fa` | Zoo lock |
| Defect | Where | Status @ `68a635ed` | Zoo lock |
|---|---|---|---|
| `llvm.amdgcn.fdot2.bf16.bf16` ISel abort | Hybrid W4 gfx10 + bf16. Dest HIP has **no** `fdot2.bf16`. | **Serve-mitigated** (`59237b3`). | Never `fdot2.bf16`. DOT + GDN HIP = **fp16 act**. |
| Scale-baked W4 zero-point | `qdq_4_rdna2.cuh` `prep_zero_scale_fp16`: `0xE400 \| zero` then `scale * (-1024 - zero)` in `half`. | **Still live** | Integer `q - zero`, then `* scale`. |
Expand All @@ -135,7 +140,7 @@ must not reproduce them.
| HC `_contig()` graph-stale temps | `hc_rdna2.py` per-call `.contiguous()` | **Dest-fixed isolated** (`50120e13`) per-shape cache. Gate still **off**. Same-shape clobber still live. | Stay extras. Serve zeros. Per-call-site scratch from `plan`, not a shared shape cache. |
| GDN one-shot `zero_()` state wipe | First `gdn_decode_rdna2` after prefill | **Dest-fixed (serve)** (`388a61b6`) | Zeros **once at allocation**. |
| GDN batched-decode n≥8 | Corrupts recurrent state | **Still live.** Launchers cap `max-num-seqs` 6 (`b78006a4`, `3bddd3c9`). | Stay extras. No serve seq-cap in tiles. |
| Flash-Next FULL_AND_PIECEWISE one-request corruption | `compilation-config` FULL_AND_PIECEWISE at c=8 even with seq cap 6 | Dest serve @ `609c9c0d`: production launcher now FULL_AND_PIECEWISE (ROCm executes as PIECEWISE). Dest retraces the c=8 report to probe artifacts, not graphs. | Stay extras. Zoo does not own graph mode. |
| Flash-Next FULL_AND_PIECEWISE one-request corruption | `compilation-config` FULL_AND_PIECEWISE at c=8 even with seq cap 6 | Dest serve @ `68a635ed`: keeps FULL decode graphs; piecewise for mixed/prefill. Dest retraces the c=8 report to probe artifacts, not graphs. | Stay extras. Zoo does not own graph mode. |
| gfx1030 wvSplitK decode (`n<=5`) | `wvSplitK_hf_big_` device `assert(false)` under cudagraph capture | **Dest-reverted** (`5c4ab989`; was `c350fa218`). Decode stays `gemv_f16_rdna2` `M<=8`. | **No zoo tile.** Do not grow `gemv_f16`. |
| QSA prefix cache always-zero | `CircularBufferManager.find_longest_cache_hit` returned 0 at empty group ring | **Dest-fixed (serve)** (`e45dd5cb`) | Stay extras. Empty ring at group boundary is valid. |
| Mamba spec-decode batch-row tables | captured `data_ptrs` indexed by batch row under deferred postprocess | **Dest-fixed (serve)** (`741e5bc3`). V1 unchanged. | Stay extras. Persistent per-request-slot tables; index by `req_idx`. |
Expand Down Expand Up @@ -176,5 +181,5 @@ This review is documentation, not a kernel migrate.
| PR #2 `glm5_kda_*` / `glm5_dsa_*` | BlivionIaG | BlivionIaG; rename off `glm5_` in a follow-up hippihx commit |
| PR #3 a17t unique W4 (`d53572644`, later Simon Siebert) | **Not taken** | Closed unmerged. If dest ever locks that family, pick **their** commits |
| Explore PRs **#9/#10** sdot | **Not taken** | Not dest |
| extras dest-presence serve (**#13** T44b / **#14** / **#15** / mamba `741e5bc3` / closed **#12**) | observe | Python/Triton/serve. No HIP migrate. Do not pick Cursor/George/Codex/Karl rewrites. Unique Aron Hsiao `rdna_ar` still pickable. |
| extras not dest (**#16** closed / **#17** / **#18** / **#19**) | **Not taken** | Resident MoE, GPTQ `BLOCK_KN_SIZE` 256, MTP detect. |
| extras dest-presence serve (**#13** T44b / **#14** / **#15** / **#17** / **#20** / dest-integrated **#21** / mamba `741e5bc3` / closed **#12**) | observe | Python/Triton/serve + dest-landed ATen HIP. No HIP migrate. Do not pick Cursor/George/Codex/Karl/Waldecir rewrites. Unique Aron Hsiao `rdna_ar` still pickable. |
| extras not dest (**#16** closed / **#18** / **#19**) | **Not taken** | GPTQ `BLOCK_KN_SIZE` 256, MTP detect. |
2 changes: 1 addition & 1 deletion docs/CONSUME.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ fa_fdot2.run(binding)
Register **one** `torch.ops.hippihx.<op>` that calls `hippihx_v1_run`.
No Triton→HIP double-fire. Bind keys on **arch + wave**, not GFX name
alone. extras V1 consume is the HIP fatbin. Dest extras tip
`f3dd65fa7063` still has no `torch.ops.hippihx` bind. FlyDSL extras
`68a635ed8d78` still has no `torch.ops.hippihx` bind. FlyDSL extras
consume waits on `FLYDSL_V1_CONSUME` (graph-safe JIT) — see
[`FLYDSL.md`](FLYDSL.md).

Expand Down
Loading