mirror of
https://github.com/deepseek-ai/DeepGEMM.git
synced 2026-11-05 00:47:26 +00:00
[PR #352] [CLOSED] Add SM90 FP8 MegaMoE split kernel #384
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepGEMM#384
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/deepseek-ai/DeepGEMM/pull/352
Author: @AichenF
Created: 6/3/2026
Status: ❌ Closed
Base:
main← Head:megamoe_sm90📝 Commits (10+)
5e012d4Optimize SM90 MegaMoE kernelsfb73273Layer local SM90 split tuning on PR10a544b3Optimize SM90 MegaMoE split path615ba0aSplit SM90 MegaMoE into L1 and L2 kernelseece053Clean SM90 MegaMoE split pathc6f98a3Merge pull request #1 from AichenF/sm90-megamoe-split-optimize03a5c9aAdd SM90 MegaMoE config selector60927a1Merge remote-tracking branch 'aichenf/megamoe_sm90' into megamoe_sm901a5bd09Add SM90 MegaMoE H20 H200 profile selectorb033430Refactor SM90 MegaMoE split kernels📊 Changes
15 files changed (+4404 additions, -37 deletions)
View changed files
📝
csrc/apis/mega.hpp(+142 -7)📝
csrc/jit/compiler.hpp(+6 -0)📝
csrc/jit/handle.hpp(+5 -2)📝
csrc/jit_kernels/heuristics/mega_moe.hpp(+741 -0)➕
csrc/jit_kernels/impls/sm90_fp8_mega_moe.hpp(+271 -0)📝
deep_gemm/__init__.py(+2 -0)📝
deep_gemm/include/deep_gemm/comm/barrier.cuh(+7 -1)📝
deep_gemm/include/deep_gemm/common/math.cuh(+9 -1)➕
deep_gemm/include/deep_gemm/impls/sm90_fp8_mega_moe.cuh(+2270 -0)📝
deep_gemm/include/deep_gemm/scheduler/mega_moe.cuh(+71 -19)📝
deep_gemm/mega/__init__.py(+55 -0)📝
deep_gemm/testing/bench.py(+36 -6)➕
tests/bench_mega_moe_sm90.py(+259 -0)📝
tests/test_mega_moe.py(+1 -1)➕
tests/test_mega_moe_sm90.py(+529 -0)📄 Description
co-author: @jychen21
Summary
What's new
Generic touches
Benchmark — H20-3e, 8 ranks, hidden=7168, ih=2048, num_experts=256, topk=8
M ≤ 128 are 10-run medians; M ≥ 256 are from the full sweep. Numbers for M ≤ 128 are 10-run medians because at that scale per-call time is only 700–950 μs, and the result is dominated by routing-draw noise, idle-SM under-utilisation, and roughly M-independent launch/barrier overhead that doesn't amortise away.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.