Skip to content

Scaffold hippihx HIP op zoo base - #1

Merged
BlivionIaG merged 8 commits into
masterfrom
cursor/hippihx-scaffold-7b18
Sep 8, 2026
Merged

BlivionIaG merged 8 commits into
masterfrom
cursor/hippihx-scaffold-7b18

Conversation

@BlivionIaG

@BlivionIaG BlivionIaG commented Sep 8, 2026 •

Copy link
Copy Markdown
Owner

Scaffold the hippihx library so opengfx1030/vllm-rdna rdna_extras can stay a thin serve wiring layer.

What this is

HIP kernel / op zoo. gfx1030 and gfx1100/1101/1102 are first-class DOT consumers of the same tile source (one --offload-arch per fatbin, never one multi-arch object). gfx1151, Deck gfx103x (wave32, including Steam Deck gfx1033), and gfx1013 (BC-250 / Cyan Skillfish) build the same DOT stubs — they can run, not dest-tuned.

BC-250 is RDNA2 — same generation as V620 and Steam Deck, a different GFX (not Navi21, not Van Gogh, not Vega20). It is not refused. Do not force -mwavefrontsize32. gfx900 is a Vega stub (mad_mix / pk_fma, no DOT objects). gfx906 is Later Vega20/MI50, not BC-250.

Layering is plan / bind / run (methodology only — not a b12x CUDA/CuTe clone).

Room-locked follow-ups

  • Shared DOT source for FA / EXL3 / AWQ / moe.shared — include/hippihx/dot.hpp; never #ifdef WMMA.
  • sequence/causal_conv stub — scalar FMA, state_len≈4, not under gdn_scan.
  • FA LDS migrate pins (numbers “from extras — fill at migrate”).
  • Craft locks: wave32 on DOT dests, no fdot2.bf16, PCIe Uncached+push Later + INT8/Q8 preferred, zeroed scratch / no D2H.
  • Fatbin matrix (aa720d1): gfx1033 Steam Deck = wave32 RDNA2; gfx1013 = BC-250 RDNA2 Skillfish, portable/unoptimized (SKU wave unverified — RADV reports 64; never force -mwavefrontsize32 / HSA_OVERRIDE; serve bind keys on arch + wave); gfx1151 portable DOT; gfx906 = real Vega20/MI50 Later non-DOT, not BC-250.

Also in this PR

  • README + docs/ARCHITECTURE.md + CONTRIBUTING
  • Tile-class layout + Python list_ops() (includes sequence.causal_conv)
  • Host compile stub when hipcc is absent

Verified

  • pytest: 19 passed
  • Host stub: gfx1013 portable DOT on; gfx1033 wave32 portable DOT; gfx906 configure FATAL
  • No hipcc here — silicon offload not run

Still out of scope

  • No extras ISA migrate, no UNC-26, no vllm-rdna edits, no b12x/CUDA/CuTe/WMMA on shared contracts
Open in Web Open in Cursor 

cursoragent and others added 8 commits September 8, 2026 20:19
Add a gfx1030-first library skeleton so vllm-rdna rdna_extras can stay
thin serve wiring. Includes CMake fatbin-per-arch policy, tile-class
directories, and a torch-free Python protocol.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
Host-stub docs now prefer g++ when the default c++ cannot link libstdc++.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
gfx1030 and gfx1100 compile the same FA/EXL3/AWQ/shared tiles as two
fatbins (no WMMA ifdef, no fdot2.bf16, wave32). gfx900 stays Vega-only;
gfx906 is documented Later. FA LDS migrate pins and PCIe wire-class
locks are docs only.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
Drop the Vega20 pairing. Document Cyan Skillfish gfx1013 as Later
(VERIFY before sharing dot.hpp), gfx1101/1102 as built DOT slots,
and gfx1151 plus Deck gfx103x as Later DOT fatbins. Forbid
HSA_OVERRIDE / foreign ISA load.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
These slots compile the same wave32 stubs as gfx1030 — they can run,
not dest-tuned. Each still owns its --offload-arch; never HSA_OVERRIDE.
gfx906 stays Later non-DOT (real Vega20/MI50, not BC-250).

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
RADV/llama.cpp report Cyan Skillfish warp size 64 and no matrix cores.
Do not share wave32 dot.hpp / FA with gfx1030 until hipDeviceProp.warpSize
is measured. If HIP is wave64, Skillfish-only — never force wave32 or
HSA_OVERRIDE. Serve bind keys on arch + wave size.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
Steam Deck is gfx1033 / wave32 RDNA2, same class as gfx1030. Cyan
Skillfish gfx1013 is not Deck: it builds unoptimized without refusing
the slot, and does not force -mwavefrontsize32. Serve bind keys on
arch + wave. gfx906 stays Later.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
Cyan Skillfish is still a different GFX (not Navi21, not Van Gogh) and
stays portable/unoptimized. The warp-64 note is a SKU wave check, not
a different ISA family.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
@BlivionIaG
BlivionIaG marked this pull request as ready for review September 8, 2026 21:23
@BlivionIaG
BlivionIaG merged commit c0642fd into master Sep 8, 2026
BlivionIaG added a commit that referenced this pull request Sep 8, 2026
* docs: extras backport review — observe locks, do not dump HIP bodies

Review opengfx1030/vllm-rdna rdna_extras @ d71721c79547 and PRs #1–#3.
Zoo-class kernels belong here later, but dest HIP is still ATen-wrapped
and GDN capture is unsafe, so copying csrc/rocm/*.cu would fork ISA with
no consume path. Record observed LDS/launch numbers on tile READMEs and
reject torch/ATen includes under tiles/.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>

* docs: lock cherry-pick attribution for foreign HIP

Imported kernels keep the source Author and Committer. Cherry-pick -x;
do not squash or rewrite leapdragon, kletorch, extras agent, or a17t
commits as Cursor Agent. Cite introducer SHAs on tile READMEs.

Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
BlivionIaG added a commit that referenced this pull request Sep 9, 2026
opengfx1030/vllm-rdna rdna_extras is one commit past the d71721c
review. PR #1 squash-merged Uncached+push AR onto dest extras; PRs #2
and #3 did not move. Record dest presence, keep AR default-off and
occupancy pin closed, and do not pick the dest squash (unique HIP stays
Aron Hsiao). Kernel bodies still stay in extras.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: BlivionIaG <BlivionIaG@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants