Repository navigation
Conversation
Filter small-shape policy combinations while preserving existing registered IDs, and append 180 BN256 and 36 compiler-allocated accumulator variants. The opt-in accumulator path removes the per-panel VGPR constraint without enabling manual A/C AGPR pinning. Update 435 DSV4 gfx950 small-shape rows only when OPUS strictly beats the original FlyDSL CSV. Preserve the other 199 small-shape rows, 421 large-shape rows, and 196 gfx1250 rows byte for byte. Validation: completed and verified all 634 shapes; all 3,332 wide/native candidate and control pairs passed correctness; six shapes improved and three newly beat the baseline. Ordinary code generation covers all 298 published small-shape kernel IDs with no missing BF16 dispatch entries. CSV identity, Split-K, performance metadata and preservation checks passed; git diff --check passed.
Fold b_direct and LDS-panel variants into the existing B-VGPR and m_repeat pipelines. Route small-shape Split-K workspace through the existing bpreshuffle entry and reuse the current bindings and reducer flow. Share the three candidate-selection functions across small and large M, simplify registration and declaration generation, and preserve the recorded 435 small-M and 338 large-M winners. Large-M candidate sets and ordering stay unchanged. Normalize tuned CSV metrics to four decimals while retaining the existing FlyDSL mp_tuner result and CSV save flow. Validation: recorded-winner, registry, and generated-declaration comparisons; 35 candidate tests, 11 interface tests, and 13 CSV infrastructure tests.
Merge small-shape operand and staged schedules into the existing b_vgpr and m_repeat families, update generated launchers and existing CO references, and retain candidate coverage and four-decimal tuned CSV values. Reuse existing shape/resource rules before automatic workspace allocation and leave tensor/layout validation in the checked C++ launchers. Keep the original six-argument calls for non-workspace kernels and append workspace only when needed. Restore baseline test and README contents in the published tree. Validation: 435 small-M and 338 large-M winners retained, all 773 candidate lists identical, 35 candidate tests passed, and 15 kernels have identical machine code. Workspace simplification passed 25 full GPU output checks, 26 invalid-argument checks, and 4 allocation-bound checks. Four baseline bpreshuffle interface checks verify compatibility without test changes.
🏷️ CI GuideRuns automatically on every PR:
Extended tests (opt-in via labels):
One backend per PR: PR title tags & labels: |
WAITING ON AUTHORPR Self-ReviewRevision Waiting for the PR author. The readiness report will appear after the self-review answers are complete for this revision. Questions to answer in the PR description
Edit the Missing or invalid answers
Shadow mode reports what would block but keeps the status successful. Set |
Use the current runtime-K implementation with independent direct_b and staged_b pipelines, a shared small-candidate budget, and ordinary Split-K reduction. Refresh the model table with 425 small-shape Opus winners against the saved FlyDSL baseline and include MXFP8 selections in JIT builds.
Keep the current unified Opus/FlyDSL tuning implementation, which already includes the upstream BMM seed and 1x32 tuning changes. Preserve the combined PR6696 large-shape and current small-shape CSV.
Drop the temporary explicit-candidate replay path and its special batching, retaining the unified PR6696 tuner flow and the small-pipeline candidate budget. Restore the shared argument struct to the existing AGPR traits header, and fix the Black and Ruff findings.
Pass actual M to staged_b host mode and LDS calculations. Reject Split-K workspaces beyond the existing reducer descriptor range in both shape selection and the generated launcher. Add gfx950 regression coverage for capacity boundaries, tuned dispatch, and workspace overflow.
Restore mandatory compilation of the gfx950 bpreshuffle family so fresh JIT code generation includes the kernels selected by the default MXFP8 tuned table. Pass the resolved kernel instance into A8W8 contract validation and derive its workspace capability there instead of forwarding a separate boolean. Preserve caller-workspace presence checks and launch behavior. Add production clean-codegen coverage and CPU tests for direct_b and staged_b workspace allocation, reuse, and rejection by non-workspace kids.
Remove unselected geometry and schedule groups from generation parameters while preserving surviving kernel IDs. Restore the two affected tuned rows to the original FlyDSL nb5 baseline and remove the two OPUS Python tests requested for this PR.
Pass the merged MXFP8 bpreshuffle tuning table to OPUS code generation. Select the gfx950 bpreshuffle family from tuned rows, namespace defaults, successful sidecars, and explicit requests instead of compiling the full tuning sweep during every cold build. Reduce a gfx950-only cold build from 9,494 to 952 steps while retaining all 234 kernels selected by the current default table. Validation: - ROCm 7.2.4 Noble Clang 22 OPUS cold build for gfx942;gfx950: passed. - All five host TUs with Python 3.12/GCC 13 headers: passed. - Default-table dispatch coverage, CU defaults, explicit requests and sidecar preservation: passed.
Extract failed Ninja targets, compiler errors and build termination messages in the always-run prebuild summary. Emit bounded, deduplicated GitHub error annotations so the actual failure is visible outside the complete warning dump. Leave successful-build summaries unchanged. Upload the full prebuild log on failed source builds, using a separate artifact name for each Python version and run attempt. Validation: warning-only and failed compiler logs, duplicate/ANSI handling, annotation escaping, success and failure CLI behavior, a real successful OPUS build log, and workflow YAML parsing all passed.
Use opus::make_tuple explicitly in the gfx950 staged-B SFB layouts to avoid ADL ambiguity with std::make_tuple when building with Ubuntu 24.04 standard library headers.
Allow actions/upload-artifact to upload the explicitly selected .aiter-prebuild.log file after a failed wheel build.
Revert d225d88 to compile the full gfx950 bpreshuffle registry during default prebuilds. Keep the staged-B tuple lookup fix and wheel failure diagnostics. Cold generation matches the original complete key set: 8,784 gfx950 bpreshuffle candidates per CU namespace and 9,519 dual-architecture build steps.
Summary
Add an OPUS backend for blockscale mxfp8 GEMM with B preshuffle on gfx950, and improve performance for small shapes (M <= 1024). Enable the existing gemm_a8w8_blockscale_bpreshuffle interface to select tuned OPUS kernels.
Details
Speedup Distribution
634 gfx950/CU256 small-M shapes (M <= 1024); the tuned table selects OPUS for 425 shapes.