[CK-Tile] parity#8128
Closed
ozturkosu wants to merge 3 commits into
Closed
Conversation
Numeric/perf/top-K/sweep parity scripts driving the TE->Dispatcher GEMM bridge, plus the captured fp16/rcr sweep CSVs and the consolidated report. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a Phase-2 parity “artifact drop” under projects/composablekernel/parity/ for the TE→Dispatcher GEMM bridge (stacked on #8123), including small analysis scripts plus captured sweep outputs and a consolidated report for gfx942 fp16/rcr.
Changes:
- Add
topk_analysis.pyandperf_medians.pyscripts to summarize sweep top-K kernel rankings and report timing medians/CV%. - Check in captured artifacts (
supported_problems.json,sweep_results*.csv) used by the parity write-up. - Add
PARITY_REPORT.mddocumenting numeric/perf/top-K/sweep outcomes and interpretation.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| projects/composablekernel/parity/topk_analysis.py | Script to rank top-K kernels per problem and optionally compute top-K overlap/Jaccard across two runs. |
| projects/composablekernel/parity/perf_medians.py | Script to compute median/min/max latency, TFLOPS, and CV% for a fixed default kernel across selected shapes. |
| projects/composablekernel/parity/supported_problems.json | Declares the 5-shape problem set used for parity runs. |
| projects/composablekernel/parity/sweep_results.csv | Captured sweep results (run A) used by top-K analysis/report. |
| projects/composablekernel/parity/sweep_results_b.csv | Captured sweep results (run B) used for reproducibility/overlap comparisons. |
| projects/composablekernel/parity/PARITY_REPORT.md | Consolidated Phase-2 parity report describing numeric/perf/top-K and sweep pass/rejection behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+49
to
+52
| sa, sb = {n for n, _ in ta}, {n for n, _ in tb} | ||
| inter, union = len(sa & sb), len(sa | sb) | ||
| jac = inter / union if union else 1.0 | ||
| print(f" top-{args.k} set overlap vs B: {inter}/{args.k} Jaccard={jac:.2f}") |
Comment on lines
+1
to
+2
| #!/usr/bin/env python3 | ||
| """Task #20 — performance medians (>=10 runs) for the bridge default kernel. |
Comment on lines
+32
to
+34
| def main(): | ||
| runner = GpuGemmRunner(lib_path=str(SO)) | ||
| print(f"Kernel: {SO.name}") |
Comment on lines
+54
to
+56
| if not ok or not times: | ||
| print(f"{label:<18}{M:>6}{N:>6}{K:>6} FAILED (status nonzero)") | ||
| continue |
Comment on lines
+20
to
+22
| max_rel ~3–4e-04 is at fp16 accumulation tolerance. 257³ (K=257) is rejected by the | ||
| kernel even with padding — K is the contiguous reduction dim and fp16 needs the inner | ||
| vectorized load aligned; this is a genuine kernel constraint, faithfully surfaced. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Contributor
Author
|
not needed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase-2 parity harness + captured results for the TE→Dispatcher GEMM bridge (stacked on #8123). All artifacts produced through the bridge on gfx942 (MI300X), fp16/rcr.
perf_medians.py— performance medians (≥12 runs +3 warmup) per shape; reports median/min/max ms, TFLOPS, CV%.topk_analysis.py— ranks kernels by TFLOPS per problem; optional second CSV for top-K set overlap + Jaccard.supported_problems.json— the 5-shape problem set fed to the driver.sweep_results.csv/sweep_results_b.csv— two independent bridge sweeps (48 cfgs → 32 unique kernels × 5 shapes).PARITY_REPORT.md— consolidated write-up.Results (Phase-2 parity gate — met)
2x2x1-wave compv3 kernel on every shape; reproducible across two runs (1024³/2048³ Jaccard 1.0; smaller shapes lower from <1.5% near-tie churn).default_config.jsonhaspad_*=false); 16/48 codegen-rejected for invalid4x1x1_32x32x16geometry. All rejections explained.Test plan
Notes
gemm_utils.py/ drivegemm_full_benchmark.py, which only exist on the bridge branch.unified_gemm_codegen, so kernels are byte-identical and ranking parity is shown via reproducibility.