Skip to content

[HIP] [CK] [FlyDSL] add 32*32/128*128 mxfp8 and add tune with bmm(batch=1) - #6603

Merged
valarLip merged 1 commit into
mainfrom
mxfp8_3232
Oct 16, 2026
Merged

valarLip merged 1 commit into
mainfrom
mxfp8_3232

Conversation

@solinzby1

Copy link
Copy Markdown
Contributor

Motivation

Technical Details

Test Plan

Test Result

Submission Checklist

@solinzby1
solinzby1 requested review from a team and a balanced review from Copilot October 16, 2026 02:05
@github-actions

Copy link
Copy Markdown
Contributor

🏷️ CI Guide

Runs automatically on every PR:

  • ✅ Pre-checks (submodule verification, code formatting)
  • ✅ Aiter op tests (gfx942 + gfx950)
  • ✅ Triton tests on MI35X (only when aiter/ops/triton/** or related paths are changed)

Extended tests (opt-in via labels):

Label Tests
ci:gfx1250-ffm-triton Run the five-shard gfx1250 FFM Triton test suite
ci:triton-300x Run an additional Triton test job on MI300X in PRs (added automatically when gfx942 configs change); main branch always runs both MI35X and MI300X
ci:triton-355 Run the full Triton test suite on MI35X, not only the tests the change affects
ci:windows Windows JIT op smoke test on the gfx1201 ROCm runner
ci:multi-gpu Aiter multi-GPU tests on the 8-GPU runner
ci:sglang SGLang integration tests: DeepSeek-R1-MXFP4 accuracy, Qwen 3.5 accuracy
ci:atom ATOM benchmark: DeepSeek-R1-0528, GPT-OSS-120B
ci:atom_full ATOM accuracy suite for PR and main models from ATOM models_accuracy.json
ci:vllm vLLM benchmark: DeepSeek-V4-Pro, MiniMax-M3-MXFP4
ci:all All standard extended tests (excludes ci:atom_full)

Only add ci:atom_full for FlyDSL or Triton upgrades.
Add labels via the sidebar or gh pr edit 6603 --add-label <label>

One backend per PR:
A PR changes one kernel backend: [Triton/Gluon] (Triton and Gluon count as one), [HIP], [ASM], [CK], [OPUS] or [FlyDSL]. If the title ends up with two backend tags, split the PR -- as stacked pull requests when one part cannot merge without the other.

PR title tags & labels:
Component tags ([Triton/Gluon], [HIP], [CK], [ASM], ...) are added to the PR title and as PR labels automatically from the changed files and re-synced on every push — change-type tags like [fix]/[Perf], op tags like [MLA], and human labels (ci:*) are left untouched. Add the no-auto-title label to stop the title rewrites; labels stay in sync either way.

@github-actions github-actions Bot changed the title add 32*32/128*128 mxfp8 and add tune with bmm(batch=1) [HIP] [CK] [FlyDSL] add 32*32/128*128 mxfp8 and add tune with bmm(batch=1) Oct 16, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Tuner defaults can write to the wrong configuration tables, and mxscale benchmarking still selects an incompatible operator.

2 open findings
What changed in this PR

Extends gfx950 FlyDSL MXFP8 GEMM support to raw 32×32 and 128×128 block scales, with tuning against batched GEMM at batch size one.

Changes:

  • Adds coarse-scale handling to both MXFP8 kernel pipelines.
  • Unifies backend selection and extends tuning and ahead-of-time compilation.
  • Updates numerical tests and removes obsolete scale-shuffle helpers.
File Description
op_tests/​tuning_tests/​test_csv_validation.py Enforces one tuning row per shape and block.
op_tests/​test_gemm_group32_interface.py Tests both MXFP8 pipelines with coarse scales.
op_tests/​test_gemm_a8w8_blockscale.py Passes raw scales to GEMM.
csrc/​gemm_a8w8_mxfp8_bpreshuffle/​gemm_a8w8_mxfp8_bpreshuffle_tune.py Adds coarse-scale tuning against batch-one GEMM.
csrc/​ck_gemm_a8w8_blockscale/​gemm_a8w8_blockscale_tune.py Removes the legacy FlyDSL tuning path.
aiter/​ops/​shuffle.py Removes obsolete blockscale shuffle helpers.
aiter/​ops/​gemm_op_a8w8.py Dispatches raw scales by tuned backend.
aiter/​ops/​flydsl/​mxscale_preshuffle_kernels.py Routes supported raw-scale layouts.
aiter/​ops/​flydsl/​kernels/​mxfp8_gemm_8wave.py Stages coarse scales in the eight-wave kernel.
aiter/​ops/​flydsl/​kernels/​gemm/​mxscale_preshuffle.py Adds coarse-scale loading and packing.
aiter/​ops/​flydsl/​gemm_tune/​flydsl_gemm_mxscale_preshuffle_common.py Adds scale-specific candidates and memory estimates.
aiter/​ops/​flydsl/​gemm_a8w8_mxfp8_8wave.py Validates and forwards scale-block settings.
aiter/​configs/​a8w8_blockscale_mxscale_bpreshuffle_untuned_gemm.csv Removes backend identity from input keys.
aiter/​aot/​flydsl/​gemm.py Compiles kernels for the new scale contracts.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants