Skip to content

Add memory-bound GEMM kernel and update bandwidth model#21

Open
zhanglx13 wants to merge 4 commits into
mainfrom
memory_bound_kernel
Open

Add memory-bound GEMM kernel and update bandwidth model#21
zhanglx13 wants to merge 4 commits into
mainfrom
memory_bound_kernel

Conversation

@zhanglx13

Copy link
Copy Markdown
Collaborator

Add a skinny-M GEMM kernel (BLOCK_M=32, BLOCK_N=256, BLOCK_K=64) optimized for HBM bandwidth on GFX950, achieving 6442 GB/s (79% of peak). Key optimizations: 2-stage async pipeline, .cg cache modifier on B loads, and large BLOCK_N for TCP utilization efficiency (89%).

Update the bandwidth model document with a refined buffer limit formula and a new section (Section 4) on TCP utilization efficiency, covering redundant vs unique data in GEMM, the three-way tradeoff between TCP efficiency, CU utilization, and minimum load width, and strategies (A-reuse, Split-K) for improvement.

@zhanglx13 zhanglx13 force-pushed the memory_bound_kernel branch from 82f2117 to e557c34 Compare March 7, 2026 17:24
zhanglx13 and others added 4 commits May 1, 2026 16:15
Add a skinny-M GEMM kernel (BLOCK_M=32, BLOCK_N=256, BLOCK_K=64) optimized
for HBM bandwidth on GFX950, achieving 6442 GB/s (79% of peak). Key
optimizations: 2-stage async pipeline, .cg cache modifier on B loads, and
large BLOCK_N for TCP utilization efficiency (89%).

Update the bandwidth model document with a refined buffer limit formula
and a new section (Section 4) on TCP utilization efficiency, covering
redundant vs unique data in GEMM, the three-way tradeoff between TCP
efficiency, CU utilization, and minimum load width, and strategies
(A-reuse, Split-K) for improvement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add BLOCK_M=M assumption for skinny GEMMs in Section 4.1
- Express TCP efficiency as BLOCK_N/(M+BLOCK_N) with M column in table
- Replace minimum load width tradeoff with TCP capacity constraint

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@zhanglx13 zhanglx13 force-pushed the memory_bound_kernel branch from e557c34 to f095349 Compare May 1, 2026 16:15
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.

1 participant