Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
a618ab3
build(rocm): gfx1030 build plumbing on v0.31.0
BlivionIaG Oct 7, 2026
0994bce
Port opt-in served resident skinny MoE decode
GeorgeMurAlkh Oct 7, 2026
00ac7ee
feat(rocm): RDNA2 HIP kernel library and op bindings
BlivionIaG Oct 7, 2026
cd100da
feat(rocm): port Aron Hsiao's kernels-csrc changes (3 commits)
leapdragon Oct 7, 2026
9f3dc48
feat(rocm): RDNA2 platform detection, config and env knobs
BlivionIaG Oct 7, 2026
ea4b784
feat(rocm): port Aron Hsiao's platform-config changes (2 commits)
leapdragon Oct 7, 2026
ccc8ad0
feat(rdna2): W4A16/W4A8/W8A16/FP8 dense linear paths
BlivionIaG Oct 7, 2026
a567946
feat(rdna2): port Aron Hsiao's quant-linear changes (2 commits)
leapdragon Oct 7, 2026
52e79c3
feat(rdna2): native RDNA2 MoE (W4A16/W4A8/W8A16/MXFP4) and dispatch
BlivionIaG Oct 7, 2026
96d3027
feat(rdna2): port George Muravei-Alkhavoi's moe changes (4 commits)
GeorgeMurAlkh Oct 7, 2026
6f43b9e
feat(rdna2): port Aron Hsiao's moe changes (2 commits)
leapdragon Oct 7, 2026
93df2d1
feat(rdna): EXL3 quantization on RDNA
BlivionIaG Oct 7, 2026
e8d1701
feat(rdna2): FA-RDNA2 attention, GDN and Mamba paths
BlivionIaG Oct 7, 2026
6a314f5
feat(rdna2): port recipe Triton LDS/softmax, skinny MoE GEMV, MTP-und…
leapdragon Oct 7, 2026
ba94c4f
[Bugfix] Index mamba spec-decode block tables by request slot, not ba…
Karl0007 Oct 7, 2026
01e259c
feat(rocm): rdna_ar one-shot all-reduce for gfx10x PCIe
BlivionIaG Oct 7, 2026
4b8444c
fix(rocm): engine, cudagraph, scheduler and KV-cache fixes for gfx1030
BlivionIaG Oct 7, 2026
f69aaf8
fix(rocm): port George Muravei-Alkhavoi's engine changes (10 commits)
GeorgeMurAlkh Oct 7, 2026
d5b3372
fix(rocm): port Aron Hsiao's engine changes (2 commits)
leapdragon Oct 7, 2026
dd85ff2
feat(rdna2): adaptive prefill scheduling (dynamic chunk cap + step ca…
wsantos Oct 7, 2026
95aed84
feat(rdna2): Qwen3.8 Flash-Next (Qwen4Exp) and DeepSeek-V4 on gfx1030
BlivionIaG Oct 7, 2026
92b2cb1
feat(rdna2): port Aron Hsiao's qwen4exp-dsv4 changes (2 commits)
leapdragon Oct 7, 2026
83ef316
Fuse AMD PLE grouped normalization on V620
GeorgeMurAlkh Oct 7, 2026
7306979
fix(models): detect unquantized MTP weights from checkpoint metadata
Oct 7, 2026
cd1c549
feat(rocm): PLE CPU sidecar offload (kept, not wired on v0.31)
BlivionIaG Oct 7, 2026
460da29
feat(rdna2): port Qwen4Exp / Qwen3.8 Flash-Next for gfx1030
leapdragon Oct 7, 2026
5ab3033
tools: RDNA launchers, recipes, probes and bench drivers
BlivionIaG Oct 7, 2026
84fe940
tools: port George Muravei-Alkhavoi's tools changes (22 commits)
GeorgeMurAlkh Oct 7, 2026
ed255c9
tools: port Waldecir Santos's tools changes (2 commits)
wsantos Oct 7, 2026
231b8df
docs: RDNA2 docs, bench artifacts and TunableOp rows
BlivionIaG Oct 7, 2026
7d6e9e3
docs: port George Muravei-Alkhavoi's docs-bench changes (20 commits)
GeorgeMurAlkh Oct 7, 2026
fc64e86
feat(rdna2): V620 PIECEWISE launcher and measured report
wsantos Oct 7, 2026
7bbf4fc
docs(rdna2): v0.31.0 port notes, open questions and test plan
BlivionIaG Oct 7, 2026
8cb1c50
fix(rdna): keep upstream behavior off RDNA; gate fork paths to ROCm RDNA
BlivionIaG Oct 7, 2026
85aecb6
tools(rdna): move launchers to tools/rdna/; Flash-Next uses upstream …
BlivionIaG Oct 7, 2026
6c3390c
docs(rdna2): port notes: PLE/KV decisions, RDNA gating policy, tools/…
BlivionIaG Oct 7, 2026
8202cb6
fix(rdna2): port RDNA2 W4A16 kernels to post-#54809 GPTQ API; adaptiv…
BlivionIaG Oct 7, 2026
234c799
tools(rdna): port_v031 build, unit and serve validation drivers
BlivionIaG Oct 8, 2026
b36211b
test(rdna2): drop act-order kwargs removed by upstream #54809
BlivionIaG Oct 8, 2026
0f592be
fix(qwen4_exp): accept compressed-tensors checkpoints for the PLE table
BlivionIaG Oct 8, 2026
ac3599f
tools(rdna): port_v031 unit.sh SKIP/ONLY path filters
BlivionIaG Oct 8, 2026
ded3288
docs(rdna2): v0.31.0 port validation log (box facts, first results)
BlivionIaG Oct 8, 2026
e5ecbfd
fix(rdna2): restore K-first MoE weight layout after upstream #52798
BlivionIaG Oct 8, 2026
3f37767
fix(rdna): dense W4A16 dequant reads packed 4-bit zero-points
BlivionIaG Oct 8, 2026
a9c9fa1
test(rdna2): _get_linear_backend takes a quantization keyword
BlivionIaG Oct 8, 2026
30f72c2
fix(rocm): gate the BF16x3 router GEMM warmup on CUDA
BlivionIaG Oct 8, 2026
ca0ce26
docs(rdna2): port notes: #52798/#54965 fixes, gfx10 capability alias
BlivionIaG Oct 8, 2026
5919633
tools(rdna): port_v031 prefix-cache TTFT probe; narrower dmesg fault …
BlivionIaG Oct 8, 2026
bc882a3
fix(rdna2): resident MoE layout skips the N-first transpose
BlivionIaG Oct 8, 2026
c02e5c9
test(rdna2): MoE W4A16 tests use an fp32 torch reference
BlivionIaG Oct 8, 2026
288fd94
tools(rdna): port_v031 serve_validate can boot a baseline tree (SERVE…
BlivionIaG Oct 8, 2026
523eb84
fix(rdna2): MXFP4 dense/MoE kernels: accept 32/8-bit weights and e8m0…
BlivionIaG Oct 8, 2026
66291b8
test(rdna2): fix MXFP4 references; cover 32/8-bit weights and e8m0 sc…
BlivionIaG Oct 8, 2026
cd8056f
fix(qwen4_exp): RDNA: run the PLE n-gram embedding as a graph-splitti…
BlivionIaG Oct 8, 2026
952c4ba
docs(rdna2): port notes: PLE padded-replay regression, MXFP4 kernel f…
BlivionIaG Oct 8, 2026
6e56ecb
fix(rdna): GDN update_block_table keeps the RDNA state-arena layout
BlivionIaG Oct 8, 2026
0550c0f
chore(qwen4_exp): drop stale amd/hc.py duplicate of amd/ops/hc.py
BlivionIaG Oct 8, 2026
66cb4ab
tools(rdna): 27b-awq recipe disables AOT compile like the other recipes
BlivionIaG Oct 8, 2026
edd8399
test(ple_offload): skip the CPU-sidecar PLE tests on the v0.31 port
BlivionIaG Oct 8, 2026
1578e25
fix(rdna): gate the QSA rope/rmsnorm fast paths on RDNA and device te…
BlivionIaG Oct 8, 2026
97addb1
test(rdna): align QSA and mamba-split tests with the v0.31 port
BlivionIaG Oct 8, 2026
12f80f6
tools(rdna): port_v031 unit.sh runs the qwen4_exp tests per file
BlivionIaG Oct 8, 2026
0ce2b73
tools(rdna): serve_validate cleanup kills only its own process group
BlivionIaG Oct 8, 2026
e9bff53
docs(rdna2): port notes: GDN arena fix, QSA gating, AOT, unit triage
BlivionIaG Oct 8, 2026
d11df8c
fix(rdna): keep JIT kernel warmup under --enforce-eager on RDNA
BlivionIaG Oct 8, 2026
f41482d
feat(rdna2): RDNA2 W4A16 MoE kernel for GPTQ (MoeWNA16) checkpoints
BlivionIaG Oct 8, 2026
43315c0
tools(rdna): 27b-exl3 recipe defaults to FULL_AND_PIECEWISE cudagraphs
BlivionIaG Oct 8, 2026
7b10818
fix(deepseek_v4): load checkpoints with fused routed-expert projections
BlivionIaG Oct 8, 2026
dc36062
fix(mhc): torch mHC pre accepts fp16 residuals
BlivionIaG Oct 8, 2026
ece3b43
tools(rdna): dsv4-flash recipe (TP=4, 32k, fp8 KV, PIECEWISE)
BlivionIaG Oct 8, 2026
bda1589
fix(rdna): mamba block-aligned splits for all V2-runner hybrids at TP>2
BlivionIaG Oct 8, 2026
d0ecd97
docs(rdna2): DeepSeek-V4-Flash fp16 attention plan (stage map, effort…
BlivionIaG Oct 8, 2026
834c5df
tools(rdna): port_v031 benches report prefill/decode tok/s, TTFT, ITL
BlivionIaG Oct 8, 2026
00fcc97
fix(rocm): rdna_ar returns a fresh output tensor per all-reduce
BlivionIaG Oct 8, 2026
3e9ca70
refactor(rdna): csrc/rocm/rdna layout skeleton, move DSV4 kernels to …
BlivionIaG Oct 8, 2026
01b439b
feat(rdna): DSV4 q-norm + RoPE + fp8_ds_mla KV insert HIP kernel (fp1…
BlivionIaG Oct 8, 2026
ea8785b
style(rdna): ruff format, ruff --fix and clang-format on fork-owned f…
BlivionIaG Oct 8, 2026
b08d5dc
fix(rocm): keep mrope kernel name on the launch line for hipify
BlivionIaG Oct 8, 2026
8b06c28
fix(rocm): return fresh output tensors from RDNA2 GEMM/attention ops
BlivionIaG Oct 8, 2026
ba2284f
tools(rdna): serve_validate BENCH_EXTRA passes extra bench serve args
BlivionIaG Oct 8, 2026
2cc2fbc
fix(rdna): HIP gated RMSNorm takes the per-head 3D GDN input
BlivionIaG Oct 8, 2026
182fc69
docs(rdna2): port notes: 27B EXL3 MTP=2 / AWQ regressions vs 0.28 res…
BlivionIaG Oct 8, 2026
7b98e3f
fix(rocm): correct E2M1 fp16 bit patterns in the RDNA2 MXFP4 LUT
BlivionIaG Oct 8, 2026
5eb773b
fix(rocm): apply swiglu_limit in the RDNA2 MXFP4 MoE activation
BlivionIaG Oct 8, 2026
6f5333e
fix(rocm): sparse_mla_prefill_rdna2 staged rows out of bounds
BlivionIaG Oct 8, 2026
7df0283
feat(rdna): DSV4 attention ops in fp16 on gfx1030 (plan steps 3-4)
BlivionIaG Oct 8, 2026
6093e3a
feat(rdna): DeepseekV4RDNAAttention for fp16 DeepSeek-V4 on RDNA (pla…
BlivionIaG Oct 8, 2026
08adedc
tools(rdna): perplexity probe for degraded checkpoints in serve_validate
BlivionIaG Oct 8, 2026
a904afd
chore(rdna): drop ad-hoc debug prints, route kept debug aids via logger
BlivionIaG Oct 8, 2026
c1be845
style(rdna): fix ruff findings in fork-owned files
BlivionIaG Oct 8, 2026
5b42519
chore(rdna): pre-commit allowlists, typos and shellcheck for fork files
BlivionIaG Oct 8, 2026
ab5a35d
fix(types): mypy clean for fork-owned files
BlivionIaG Oct 8, 2026
36c4164
fix(rdna): block-aligned mamba splits only for MTP and Flash-Next on V2
BlivionIaG Oct 9, 2026
14678c9
tools(rdna): dsv4-flash recipe on FULL_AND_PIECEWISE with breakable g…
BlivionIaG Oct 8, 2026
dcd2388
fix(rdna): memory-bounded indexer prefill MQA logits on gfx1030
BlivionIaG Oct 9, 2026
9504d80
fix(rocm): RDNA2 fp8 E4M3 decode treated the 256..448 binade as Inf/NaN
BlivionIaG Oct 9, 2026
eec301a
perf(rdna): select RDNA2W8A16Fp8BlockLinearKernel for fp8 block linears
BlivionIaG Oct 9, 2026
ec349e9
perf(rdna): fused HIP mHC pre/post for DeepSeek-V4 on RDNA
BlivionIaG Oct 9, 2026
16e890d
perf(rdna): pick the RDNA2 MXFP4 MoE block size from the token count
BlivionIaG Oct 9, 2026
bd96530
perf(rocm): 7-38x faster gemm_w8a16_fp8_dense at decode shapes
BlivionIaG Oct 9, 2026
395d283
perf(rocm): branch-free E2M1 decode in the RDNA2 MXFP4 GEMMs (10-14x)
BlivionIaG Oct 9, 2026
c44db43
perf(rdna): DSV4 compressor score GEMMs on the RDNA2 fp16 GEMV
BlivionIaG Oct 9, 2026
9adea88
perf(rdna): split-KV sparse_mla_decode_rdna2 + branch-free fp8 decode
BlivionIaG Oct 9, 2026
c19e8c0
style(rdna): ruff format / clang-format the DSV4 perf changes
BlivionIaG Oct 9, 2026
0cfce96
tools(rdna): flashnext/full recipes on the validated v0.31 config
BlivionIaG Oct 9, 2026
5148ba7
perf(rdna2): branch-free E4M3 decode in qdq_fp8_rdna2.cuh
BlivionIaG Oct 9, 2026
e685911
perf(rdna): DSV4 wo_a on the W8A16 fp8 kernel per group
BlivionIaG Oct 9, 2026
36da3f9
recipe(rdna): dsv4-flash SEQS=8, KV=6e9
BlivionIaG Oct 9, 2026
7961afd
perf(rdna2): fused clamped SwiGLU in the MXFP4 MoE experts
BlivionIaG Oct 9, 2026
59d8d6b
perf(rdna): DSV4 C128 compressor decode on the two-stage split
BlivionIaG Oct 9, 2026
e6b692a
docs(rdna2): plan for the rdna_ars reduce-scatter + allgather all-reduce
BlivionIaG Oct 9, 2026
c2cbf00
perf(rdna2): EXL3 decode-once GEMM for decode and MTP verify batches
BlivionIaG Oct 9, 2026
0835e3c
perf(rdna2): run the EXL3 6 bpw lm_head on the decode-once GEMM
BlivionIaG Oct 9, 2026
d1c3e6c
tools(rdna): 27b-exl3 recipe on the rdna_ar one-shot all-reduce
BlivionIaG Oct 9, 2026
78d62cf
tools(rdna): VLLM_RDNA_PHASE_TIMING per-step GPU phase timer
BlivionIaG Oct 9, 2026
5890e7f
tools(rdna): mixed-batch stall probe (decoders vs long prefills)
BlivionIaG Oct 9, 2026
28a0375
tools(rdna): stall probe warm-up, dead-server stop, wedge-marker hygiene
BlivionIaG Oct 9, 2026
7d92443
docs(rdna2): mixed-batch stall baselines (v0.31, 0.28) + suggested gates
BlivionIaG Oct 9, 2026
fdbddb9
chore(rdna): tethering allowlist entry for the stall probe test
BlivionIaG Oct 9, 2026
2907c75
perf(rdna2): W8A16 fp8 linears use dequant + rocBLAS for prefill-sized M
BlivionIaG Oct 9, 2026
0f596e6
perf(rdna): split the decode mHC pre GEMM across blocks, parallel Sin…
BlivionIaG Oct 9, 2026
44a8cc7
perf(rdna): tiled v_dot2 paged MQA logits for the DSV4 indexer decode
BlivionIaG Oct 9, 2026
cc8beb8
perf(rocm): top_k_per_row_decode uses the radix path on gfx10x
BlivionIaG Oct 9, 2026
20ab451
perf(rdna): fused tiled MQA logits for the DSV4 indexer prefill
BlivionIaG Oct 9, 2026
092d7ea
test(rdna): DSV4 indexer/mHC kernel edge cases; serve_validate reques…
BlivionIaG Oct 9, 2026
a43be93
fix(rdna): rdna_ar one-shot waits tolerate late peers (wall-clock bound)
BlivionIaG Oct 9, 2026
b03bf9d
test(rdna2): W4A8 fused-entry A/B no longer assumes a deterministic W…
BlivionIaG Oct 9, 2026
1467ee7
fix(rdna2): index the GDN conv1d update state through its strides
BlivionIaG Oct 9, 2026
f7d4fa7
fix(rdna): warm up the GDN decode and MTP-verify kernels at profile time
BlivionIaG Oct 9, 2026
611063c
fix(rdna): remove the two-shot all-reduce from rdna_ar
BlivionIaG Oct 9, 2026
5bf02f7
fix(mamba): aligned state indices read batch rows, not source slots
BlivionIaG Oct 9, 2026
d95428e
tools(rdna): greedy concurrency-correctness probe in serve_validate
BlivionIaG Oct 9, 2026
eb503cd
Revert "fix(rdna): keep JIT kernel warmup under --enforce-eager on RDNA"
BlivionIaG Oct 9, 2026
6fd30fd
docs(rdna2): backports, eager root cause and concurrency probe results
BlivionIaG Oct 9, 2026
f4c0ac4
docs(rdna): advertise the opt-in W4A8 prefill path (27B AWQ +24-34 % …
BlivionIaG Oct 9, 2026
e7e63a0
perf(rdna2): gemv_f16_rdna2 for MTP verify batches (M <= 24)
BlivionIaG Oct 9, 2026
f419d8d
perf(rdna2): prefetch the next tile words in the EXL3 v3 GEMM
BlivionIaG Oct 9, 2026
e078c69
tools(rdna): bench_metrics reports aggregate prefill next to per-request
BlivionIaG Oct 9, 2026
d43f935
tools(rdna): aggregate prefill counts one concurrency wave, not all r…
BlivionIaG Oct 9, 2026
1c595eb
tools(rdna): concurrency probe treats a flip also seen solo-vs-solo a…
BlivionIaG Oct 9, 2026
b074874
fix(rdna2): keep the gemv_f16_rdna2 dispatch at M <= 8
BlivionIaG Oct 10, 2026
a5a4569
debug(rdna): host time, per-custom-op spans and sync sites in the pha…
BlivionIaG Oct 9, 2026
ad356d1
fix(rdna): size GDN state arenas by the decode batch, not the capture…
BlivionIaG Oct 9, 2026
8aa4530
perf(rdna2): pad Flash-Next HC prefill GEMM rows to tuned sizes + mix…
BlivionIaG Oct 9, 2026
a25f2e0
tunableop(rdna2): coverage rows for Qwen3.6, DSV4, EXL3 MTP=2 and AWQ…
BlivionIaG Oct 10, 2026
0178580
tools(rdna): concurrency probe: fluent repetition after a near-tie is…
BlivionIaG Oct 10, 2026
dc9e536
perf(rdna): share piecewise-graph input buffers across capture sizes
BlivionIaG Oct 10, 2026
0095c9d
feat(rdna): VLLM_RDNA_GDN_OPAQUE=0 keeps GDN projections in the compi…
BlivionIaG Oct 10, 2026
38d2a44
feat(sched): bound prefill work in steps that carry decodes (RDNA def…
BlivionIaG Oct 10, 2026
5d9f76f
feat(rdna): decode-stall cap off by default, enabled in the dense 27B…
BlivionIaG Oct 10, 2026
9cc6d6c
perf(rdna): fused HC prefill mix kernels for Flash-Next (opt-in)
BlivionIaG Oct 10, 2026
a553d55
perf(rdna): fused HC prefill mix on by default on gfx1030
BlivionIaG Oct 10, 2026
42dc168
docs(rdna): fused HC prefill mix notes (design, microbench, serve, ol…
BlivionIaG Oct 10, 2026
946668b
style(rdna): ruff format the fused HC prefill files
BlivionIaG Oct 10, 2026
f8af9e1
fix(rdna): decode-stall cap fits mixed steps only; one bucket may shr…
BlivionIaG Oct 10, 2026
7662633
tools(rdna): warm every capture size before the stall probe and bench…
BlivionIaG Oct 10, 2026
ab72778
fix(rdna): allocate the GDN opaque-forward output in the graph
BlivionIaG Oct 10, 2026
2603ff0
bench(rdna): TP all-reduce microbenchmark at serving sizes + RCCL sweep
BlivionIaG Oct 10, 2026
3491035
perf(rdna): remove the CUDA-graph replay-copy wrapper, use upstream r…
BlivionIaG Oct 10, 2026
9239abc
docs(rdna): decode-stall cap settings and trade-off; opt-in for Flash…
BlivionIaG Oct 10, 2026
3b43339
style(rdna): ruff format the all-reduce microbenchmark
BlivionIaG Oct 10, 2026
e09a8c9
fix(rdna): decode-stall cap fit mode per model: all steps on dense, m…
BlivionIaG Oct 10, 2026
dc30658
fix(rdna): keep strong refs in breakable-graph eager breaks on RDNA
BlivionIaG Oct 10, 2026
27861d3
tools(rdna): agentic Flash-Next recipe on the flashnext-mtp0 performa…
BlivionIaG Oct 10, 2026
2d6e1cd
tools(rdna): decode-stall cap off in full.env (27B TP=2)
BlivionIaG Oct 10, 2026
e9d22de
tools(rdna): dense recipe cap comments carry the 2026-10-10 measurements
BlivionIaG Oct 10, 2026
ed4a1c5
tools(rdna): unit.sh covers the fused HC prefill, stall cap, stall pr…
BlivionIaG Oct 10, 2026
0272b15
Revert "tools(rdna): agentic Flash-Next recipe on the flashnext-mtp0 …
BlivionIaG Oct 10, 2026
076fd4d
test(rdna): GDN arena test follows the decode-batch sizing (ad356d1135)
BlivionIaG Oct 11, 2026
20edef5
tools(rdna): agentic Flash-Next recipe on the flashnext-mtp0 performa…
BlivionIaG Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
70 changes: 69 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1478,6 +1478,7 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
"csrc/rocm/torch_bindings.cpp"
"csrc/rocm/skinny_gemms.cu"
"csrc/rocm/skinny_gemms_int4.cu"
"csrc/rocm/rdna_allreduce.cu"
"csrc/rocm/attention.cu")
set(VLLM_ROCM_EXT_FLAGS ${VLLM_GPU_FLAGS})

Expand All @@ -1493,7 +1494,8 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
message(STATUS "Building skinny_gemms for archs: ${VLLM_SKINNY_ARCHES}")
set(VLLM_SKINNY_SRC
"csrc/rocm/skinny_gemms.cu"
"csrc/rocm/skinny_gemms_int4.cu")
"csrc/rocm/skinny_gemms_int4.cu"
"csrc/rocm/moe_resident_decode.cu")
hipify_sources_target(VLLM_SKINNY_HIP_SRCS _rocm_C_skinny "${VLLM_SKINNY_SRC}")
unset(_VLLM_LAST_HIPIFY_TARGET)
add_library(_rocm_C_skinny OBJECT ${VLLM_SKINNY_HIP_SRCS})
Expand All @@ -1512,6 +1514,46 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
list(APPEND VLLM_ROCM_EXT_FLAGS "-DVLLM_SKIP_SKINNY_GEMMS")
endif()

set(VLLM_ROCM_HAS_GFX1030 OFF)
message(STATUS "[DEBUG] VLLM_GPU_ARCHES='${VLLM_GPU_ARCHES}'")
if(VLLM_GPU_ARCHES MATCHES "gfx1030")
set(VLLM_ROCM_HAS_GFX1030 ON)
list(APPEND VLLM_ROCM_EXT_SRC
"csrc/rocm/q_gemm_rdna2.cu"
"csrc/rocm/q_gemm_rdna2_prefill.cu"
"csrc/rocm/w4a8_sdot4_rdna2.cu"
"csrc/rocm/rdna_fused_glue.cu"
"csrc/rocm/hc_prefill_rdna2.cu"
"csrc/rocm/fa_rdna2.cu"
"csrc/rocm/gemm_w8a8_fp8_dense_rdna2.cu"
"csrc/rocm/moe_q_gemm_rdna2.cu"
"csrc/rocm/moe_w4a8_rdna2.cu"
"csrc/rocm/gdn_decode_rdna2.cu"
"csrc/rocm/causal_conv1d_rdna2.cu"
"csrc/rocm/gdn_prefill_prep_rdna2.cu"
"csrc/rocm/gdn_prefill_kkt_rdna2.cu"
"csrc/rocm/gdn_prefill_solve_wy_rdna2.cu"
"csrc/rocm/gdn_prefill_delta_h_rdna2.cu"
"csrc/rocm/gdn_prefill_o_rdna2.cu"
"csrc/rocm/mxfp4_dot2_moe.cu"
"csrc/rocm/mxfp4_dot2_dense.cu"
"csrc/rocm/moe_w8a16_rdna2.cu"
"csrc/rocm/q_gemm_w8a16_fp8_rdna2.cu"
"csrc/rocm/mrope_rdna2.cu"
"csrc/rocm/hc_rdna2.cu"
"csrc/rocm/qsa_rdna2.cu"
"csrc/rocm/ple_short_conv_rdna2.cu"
# DeepSeek-V4 RDNA kernels (csrc/rocm/rdna/<feature>/ layout).
"csrc/rocm/rdna/dsv4/indexer_mqa_logits.cu"
"csrc/rocm/rdna/dsv4/kv_insert.cu"
"csrc/rocm/rdna/dsv4/mhc.cu"
"csrc/rocm/rdna/dsv4/sparse_mla_decode.cu")
# moe_w8a16_fp8_rdna2.cu excluded from gfx1030 build (namespace parser
# error per rdna2_extras commit 9ac015d0a9 / AGENTS.md 2026-08-05).
# MoE experts fall back to existing CompressedTensorsWNA16MoEMethod
# (INT4) or scaled_mm dispatch.
endif()

set(VLLM_ROCM_HAS_GFX1100 OFF)
if(VLLM_GPU_ARCHES MATCHES "gfx1100")
set(VLLM_ROCM_HAS_GFX1100 ON)
Expand All @@ -1521,6 +1563,17 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
"csrc/rocm/moe_q_gemm_rdna3.cu")
endif()

# EXL3 dot kernels are RDNA-generic (gfx1030 + gfx1100). Listed once,
# unconditionally: the __gfx1030__/__gfx1100__ device-pass gate inside
# each .cu decides whether the non-empty kernel is emitted for the arch
# being compiled.
list(APPEND VLLM_ROCM_EXT_SRC
"csrc/rocm/exl3_dot2_moe.cu"
"csrc/rocm/exl3_dot2_dense.cu"
"csrc/rocm/exl3_dot2_dequant.cu"
"csrc/rocm/exl3_hadamard.cu"
"csrc/rocm/layernorm.cu")

define_extension_target(
_rocm_C
DESTINATION vllm
Expand All @@ -1537,9 +1590,24 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
target_compile_definitions(_rocm_C PRIVATE VLLM_SKIP_SKINNY_GEMMS)
endif()

if(VLLM_ROCM_HAS_GFX1030)
target_compile_definitions(_rocm_C PRIVATE VLLM_ROCM_GFX1030)
endif()

if(VLLM_ROCM_HAS_GFX1100)
target_compile_definitions(_rocm_C PRIVATE VLLM_ROCM_GFX1100)
endif()
# torch 2.13 + ROCm 7.2 shim: cusolver was renamed to hipsolver.
# Provide cusolver_common.h shim + hipsolver include path globally.
if(DEFINED ENV{ROCM_PATH})
target_include_directories(_rocm_C SYSTEM PRIVATE $ENV{ROCM_PATH}/include)
endif()
if(EXISTS "$ENV{ROCM_PATH}/include/cusolver_common.h")
target_compile_options(_rocm_C PRIVATE -include $ENV{ROCM_PATH}/include/cusolver_common.h)
endif()
# GCC 15 + torch 2.13 + ROCm 7.2 namespace parser workaround
# (qdq_4_rdna2.cuh:22 false-positive on namespace vllm {)
target_compile_options(_rocm_C PRIVATE -fpermissive)
endif()

# Must run after the last HIP `define_extension_target` so every extension
Expand Down
114 changes: 114 additions & 0 deletions bench_results/2026-09-29_tp4-fp-aroff/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# TP=4 W4A16 FULL-HIP, `RDNA_AR=0`, FULL_AND_PIECEWISE — bring-up result

**Date:** 2026-09-29
**Tree:** `vllm-rdna-0.28.0` @ `8de502574` (`w4a8-wiring`) → `par1-cs25:/home/chenco_adm/vllm-rdna-0.28.0`
**Model:** `cyankiwi/Qwen3.8-27B-AWQ-INT4` (compressed-tensors W4A16)
**Venv:** `/home/chenco_adm/Apps/vllm/venv-7.14.0_0.28.0`
**Run dir (remote):** `/home/chenco_adm/w4a8_runs/2026-09-29_tp4-fp-aroff/`

## Verdict

- **Boot clean: NO.** The chassis hard-reset during the post-compile / cudagraph-capture phase. New `PCI SERR` logged.
- **Coherence: not measured** (server never reached READY).
- **16k/1k numbers: not measured** (never READY).
- **Fork AR is exonerated:** the reset reproduces with `VLLM_RDNA_AR=0`; active all-reduce was `['PYNCCL']` only.

## What ran (exact env/args)

Driver `tools/rdna2_028/fp_aroff_27b.sh` (new) → launcher `scripts/serve_gfx1030_27b_dense.sh` (new `RDNA_AR` knob):

```
MTP=0 W4A8=0 RDNA_AR=0 EAGER=0 ATTN=fa TP=4 PORT=18240
KV=8000000000 SEQS=8 MAXBAT=2048 CG_MODE=FULL_AND_PIECEWISE
VLLM_CACHE_ROOT=$T/cache/hip-fp-aroff
TORCHINDUCTOR_CACHE_DIR=$T/cache/hip-fp-aroff/inductor
TRITON_CACHE_DIR=$T/cache/hip-fp-aroff/triton
TORCH_EXTENSIONS_DIR=$T/cache/hip-fp-aroff/extensions
```

Effective serve args (from `serve.log`):
`--attention-backend RDNA_ATTN --tensor-parallel-size 4 --dtype float16 --block-size 1024
--kv-cache-memory-bytes 8000000000 --gpu-memory-utilization 0.9 --max-num-batched-tokens 2048
--max-num-seqs 8 --enable-prefix-caching --mamba-cache-mode align --language-model-only
--compilation-config {"cudagraph_mode":"FULL_AND_PIECEWISE","cudagraph_capture_sizes":[1,2,4,8],"compile_ranges_endpoints":[]}`
No `--max-model-len` (model default).

Caches were wiped (`rm -rf $T/cache/hip-fp-aroff`) before launch, so no contaminated W4A8 graph
could replay. `serve.log` confirms the fresh root: `cache/hip-fp-aroff/torch_compile_cache/...`.

## Timeline

| Time (CEST) | Event |
|---|---|
| 14:38:00 | serve launched (driver preflight: PCI SERR baseline = **12**, uptime 57 min) |
| 14:39:11 | weights loaded, 5.01 GiB/GPU (all 4 ranks) |
| 14:39:06 | all-reduce selection: active `['PYNCCL']` |
| 14:39:26 | Dynamo bytecode transform: 13.20 s |
| 14:40:14 | inductor graph for compile range (1, 2048): 46.87 s |
| 14:40:18 | `torch.compile took 65.40 s`; `[rdna2_persist] eager grow` ×4; Triton deprecation warnings |
| 14:40:12 → 14:48:13 | `shm_broadcast: No available shared memory broadcast block found in 60 seconds` every 60 s (worker busy post-compile) |
| 14:48:13 | last worker log line |
| ~14:46:47 → 14:50:42 | host hangs / resets; no clean-shutdown journal entries |
| **14:50:42** | **new SEL `e68 | Critical Interrupt | PCI SERR | Asserted`** |
| 14:51:25 | system boot (journal boot id 0) |

**Cold-compile duration:** inductor `torch.compile` = **65.40 s** (Dynamo 13.20 s + range compile 46.87 s);
model load ≈ 5 s. The reset came ≈10.5 min *after* compile finished, in the silent post-compile
worker phase (cudagraph capture / full-graph replay prep), i.e. the previous "the long compile window
resets the chassis" framing is too narrow — the inductor compile itself completed quickly.

## IPMI / SEL delta

- Before (14:38:00): `PCI SERR` = **12**, `Critical Interrupt` = 17, `Correctable ECC` = 10.
- After (post-reboot): `PCI SERR` = **13**.
- New entry: `e68 | 09/29/2026 | 02:50:42 PM CEST | Critical Interrupt | PCI SERR | Asserted`.
- **Note the id is reused** — the SEL already had an old `e68` (09/23, `PCI PERR`), so a set-diff by
record id shows no new id; the reliable signal is the count 12→13 plus the new `14:50:42` timestamp.
- Unlike the earlier resets (e64+e65 and e66+e67 both paired with `Memory | Correctable ECC | CPU 0 DIMM 0`),
**e68 has no paired ECC entry** — this reset was a pure PCI SERR. (Matches the DIMM-ECC-vs-fabric
ambiguity: the DIMM is a suspect, but not proven for this event.)

## Fork-marker audit (over the partial `serve.log`)

| Marker | Expected | Observed |
|---|---|---|
| `RDNA2 W4A8 sdot4 path active` | absent | **absent** (0) |
| `W4A8-DEBUG` | absent | **absent** (0) |
| `rdna_ar:` lines | none (`VLLM_RDNA_AR=0`) | **none** (0) |
| `Custom allreduce force-enabled` | absent | **absent** (0) |
| active all-reduce backends | PYNCCL only | `Using ['PYNCCL'] all-reduce backends … out of potential backends: ['RDNA_ONESHOT', …]` |
| attention backend | RDNA_ATTN | `Using RDNA_ATTN backend` |

`RDNA_ONESHOT` appears only in the *potential* backends list, never in the active list — the knob
(`RDNA_AR=0` → `VLLM_RDNA_AR=0`) works and the fork PCIe-peer AR is definitively out of the picture.

## Conclusion

The TP=4 F&P hard reset is **not caused by the fork's PCIe-peer all-reduce.** It reproduces with the
AR path disabled and the only active collective is RCCL/PYNCCL. The reset occurs during the
cudagraph-capture/post-compile phase and is accompanied by a fabric-level `PCI SERR` (no DIMM ECC
companion this time). Next investigation axes: DIMM/fabric stability (the DIMM was already the
suspect), and the TP=4 FULL_AND_PIECEWISE capture path itself — no further runs were attempted per
the "a reset is evidence, stop and report" rule.

## Evidence files

`remote_logs/` (copied verbatim from the box):
- `driver.log`, `ipmi.log` — driver progress + pre-run IPMI snapshot
- `serve.log` — partial serve log (122 lines, through 14:48:13)
- `before.sel.txt` — 14:38:00 SEL snapshot (SERR=12)
- `after_reboot.sel.txt`, `after_reboot.elist.txt` — post-reboot SEL (SERR=13, includes e68)
- `../args.txt` — non-default args + all-reduce backend line

## Reproduction

```bash
rsync -avz --exclude='.git/' --exclude='cache/' --exclude='*.abi3.so' \
-e "ssh -i ~/.ssh/id_ed25519_ansible" \
./vllm-rdna-0.28.0/ chenco_adm@par1-cs25:/home/chenco_adm/vllm-rdna-0.28.0/
ssh -i ~/.ssh/id_ed25519_ansible chenco_adm@par1-cs25 \
'cd /home/chenco_adm/vllm-rdna-0.28.0 && TAG=2026-09-29_tp4-fp-aroff bash tools/rdna2_028/fp_aroff_27b.sh'
```

**Do not re-run without a hardware-stability answer** — this is the 4th reset in the same class today
(e63/e65/e67/e68).
2 changes: 2 additions & 0 deletions bench_results/2026-09-29_tp4-fp-aroff/args.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
(APIServer pid=49285) INFO 09-29 14:38:21 [api_utils.py:286] non-default args: {'model_tag': '/home/chenco_adm/.cache/huggingface/hub/models--cyankiwi--Qwen3.8-27B-AWQ-INT4/snapshots/63768c10df38c0395e12ef49edac1bd539eaeeea', 'host': '127.0.0.1', 'port': 18240, 'model': '/home/chenco_adm/.cache/huggingface/hub/models--cyankiwi--Qwen3.8-27B-AWQ-INT4/snapshots/63768c10df38c0395e12ef49edac1bd539eaeeea', 'dtype': 'float16', 'served_model_name': ['q27d'], 'attention_backend': 'RDNA_ATTN', 'tensor_parallel_size': 4, 'block_size': 1024, 'gpu_memory_utilization': 0.9, 'kv_cache_memory_bytes': 8000000000, 'enable_prefix_caching': True, 'mamba_cache_mode': 'align', 'language_model_only': True, 'limit_mm_per_prompt': {'image': 1}, 'mm_processor_kwargs': {'max_pixels': 1605632}, 'max_num_batched_tokens': 2048, 'max_num_seqs': 8, 'compilation_config': {'mode': None, 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': [], 'ir_enable_torch_wrap': None, 'splitting_ops': None, 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': None, 'compile_ranges_endpoints': [], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': <CUDAGraphMode.FULL_AND_PIECEWISE: (2, 1)>, 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [1, 2, 4, 8], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': None, 'pass_config': {}, 'max_cudagraph_capture_size': None, 'dynamic_shapes_config': {'type': <DynamicShapesType.BACKED: 'backed'>, 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': None, 'static_all_moe_layers': []}}
(Worker pid=49867) INFO 09-29 14:39:06 [cuda_communicator.py:299] Using ['PYNCCL'] all-reduce backends (in dispatch order) for group 'tp:0' out of potential backends: ['RDNA_ONESHOT', 'NCCL_SYMM_MEM', 'QUICK_REDUCE', 'FLASHINFER', 'AITER_CUSTOM', 'CUSTOM', 'SYMM_MEM', 'PYNCCL'].
Loading