# MoE shapes for grouped GEMM
#
# Llama4 Scout:       hidden=5120, expert_dim=8192, E=16,  top-k=1
# Llama4 Maverick:    hidden=5120, expert_dim=8192, E=128, top-k=1
# Qwen2-57B-A14B:     hidden=3584, expert_dim=2560, E=64,  top-k=8
# Qwen3-30B-A3B:      hidden=2048, expert_dim=768,  E=128, top-k=8
# GPT-OSS-20b:        hidden=2880, expert_dim=2880, E=32,  top-k=4
#
# M = B×top-k rows distributed across E experts.
# Decode: B=1 token (sparse). Prefill: B=256.

# ── Llama4 Scout gate/up projection: K=5120, N=8192 (E=16 exact) ────────────
# decode  (B=1 token)
--grouped=0:16:0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0:1
1x5120:16x5120x8192nLlama4-Scout-gate/up-proj-decode-gs128
# prefill (B=512 tokens)
--grouped=0:16:28+31+37+31+30+27+34+45+40+25+33+22+34+39+34+22:45
512x5120:16x5120x8192nLlama4-Scout-gate/up-proj-prefill-gs128

# ── Llama4 Scout down projection: K=8192, N=5120 ────────────────────────────
--grouped=0:16:0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0:1
1x8192:16x8192x5120nLlama4-Scout-down-proj-decode-gs128
--grouped=0:16:28+31+37+31+30+27+34+45+40+25+33+22+34+39+34+22:45
512x8192:16x8192x5120nLlama4-Scout-down-proj-prefill-gs128

# ── Qwen2-57B-A14B gate/up projection: K=3584, N=2560 (E=64 exact) ──────────
# decode  (B=1 token)
--grouped=0:64:0+1+0+0+0+0+0+0+1+0+0+0+0+0+1+1+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+1:1
8x3584:64x3584x2560nQwen2-57B-A14B-gate/up-proj-decode-gs128
# prefill (B=256 tokens)
--grouped=0:64:31+28+28+33+38+38+35+32+32+32+26+18+24+31+43+38+33+43+33+32+28+28+33+26+28+33+35+39+29+45+25+32+33+25+33+31+30+31+39+28+37+37+45+27+35+25+26+38+36+27+30+27+21+31+33+45+28+32+22+27+29+32+41+38:45
2048x3584:64x3584x2560nQwen2-57B-A14B-gate/up-proj-prefill-gs128

# ── Qwen2-57B-A14B down projection: K=2560, N=3584 ──────────────────────────
--grouped=0:64:0+1+0+0+0+0+0+0+1+0+0+0+0+0+1+1+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+1:1
8x2560:64x2560x3584nQwen2-57B-A14B-down-proj-decode-gs128
--grouped=0:64:31+28+28+33+38+38+35+32+32+32+26+18+24+31+43+38+33+43+33+32+28+28+33+26+28+33+35+39+29+45+25+32+33+25+33+31+30+31+39+28+37+37+45+27+35+25+26+38+36+27+30+27+21+31+33+45+28+32+22+27+29+32+41+38:45
2048x2560:64x2560x3584nQwen2-57B-A14B-gate/up-proj-prefill-gs128

# ── Qwen3-30B-A3B gate/up projection: K=2048, N=768 (E=128 exact) ───────────
# decode  (B=1 token)
--grouped=0:128:0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+1+0+1+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+0+1+0+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0:1,\
          0:128:0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+1+0+1+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+0+1+0+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0
8x2048:128x2048x768nQwen3-30B-A3B-gate/up-proj-decode-gs128
# prefill (B=256 tokens)
--grouped=0:128:13+12+11+11+14+11+15+14+13+15+16+21+16+17+12+20+14+21+19+16+24+12+8+23+11+17+13+19+14+21+14+16+17+17+14+23+14+14+17+24+19+13+11+9+17+11+13+11+18+16+11+11+13+10+17+17+17+18+14+16+20+22+20+19+16+13+10+22+15+16+19+16+17+24+13+17+19+20+14+18+19+14+17+18+20+15+20+12+17+13+18+9+18+13+23+15+10+27+15+8+6+18+19+14+17+17+21+16+19+14+15+12+17+20+16+18+25+17+19+18+20+19+16+13+13+16+13+14:27,\
          0:128:13+12+11+11+14+11+15+14+13+15+16+21+16+17+12+20+14+21+19+16+24+12+8+23+11+17+13+19+14+21+14+16+17+17+14+23+14+14+17+24+19+13+11+9+17+11+13+11+18+16+11+11+13+10+17+17+17+18+14+16+20+22+20+19+16+13+10+22+15+16+19+16+17+24+13+17+19+20+14+18+19+14+17+18+20+15+20+12+17+13+18+9+18+13+23+15+10+27+15+8+6+18+19+14+17+17+21+16+19+14+15+12+17+20+16+18+25+17+19+18+20+19+16+13+13+16+13+14
2048x2048:128x2048x768nQwen3-30B-A3B-gate/up-proj-prefill-gs128

# ── Qwen3-30B-A3B down projection: K=768, N=2048 ────────────────────────────
--grouped=0:128:0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+1+0+1+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+1+0+0+0+0+1+0+0+0+0+0+0+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0:1
8x768:128x768x2048nQwen3-30B-A3B-down-proj-decode-gs128
--grouped=0:128:13+12+11+11+14+11+15+14+13+15+16+21+16+17+12+20+14+21+19+16+24+12+8+23+11+17+13+19+14+21+14+16+17+17+14+23+14+14+17+24+19+13+11+9+17+11+13+11+18+16+11+11+13+10+17+17+17+18+14+16+20+22+20+19+16+13+10+22+15+16+19+16+17+24+13+17+19+20+14+18+19+14+17+18+20+15+20+12+17+13+18+9+18+13+23+15+10+27+15+8+6+18+19+14+17+17+21+16+19+14+15+12+17+20+16+18+25+17+19+18+20+19+16+13+13+16+13+14:27
2048x768:128x768x2048nQwen3-30B-A3B-down-proj-prefill-gs128

# ── GPT-OSS-20b gate/up projection: K=2880, N=2880 ─────────────────────────
# decode  (B=1 token)
--grouped=0:32:0+1+0+0+0+0+0+1+0+0+0+0+0+0+0+1+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0:1
4x2880:32x2880x2880nGPT-OSS-20b-gate/up-proj-decode
# prefill (B=256 tokens)
--grouped=0:32:29+28+31+28+39+32+36+34+32+28+28+22+29+28+36+45+36+38+31+31+31+32+24+28+34+27+33+35+32+43+31+33:45
1024x2880:32x2880x2880nGPT-OSS-20b-gate/up-proj-prefill

# ── GPT-OSS-20b down projection: K=2880, N=2880 ─────────────────────────────
--grouped=0:32:0+1+0+0+0+0+0+1+0+0+0+0+0+0+0+1+0+1+0+0+0+0+0+0+0+0+0+0+0+0+0+0:1
4x2880:32x2880x2880nGPT-OSS-20b-down-proj-decode
--grouped=0:32:29+28+31+28+39+32+36+34+32+28+28+22+29+28+36+45+36+38+31+31+31+32+24+28+34+27+33+35+32+43+31+33:45
1024x2880:32x2880x2880nGPT-OSS-20b-down-proj-prefill
