Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions aiter/configs/model_configs/qwen3_8_flash_fp4_tuned_fmoe.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
gfx,cu_num,token,model_dim,inter_dim,expert,topk,act_type,dtype,q_dtype_a,q_dtype_w,q_type,use_g1u1,doweight_stage1,block_m,ksplit,us1,kernelName1,err1,us2,kernelName2,err2,us,run_1stage,xbf16,flat,tflops,bw,_tag
gfx950,256,1,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_hpf_nt,2.5%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_nt_sbm16,2.5%,16.28,0,0,0,6.6,0,
gfx950,256,2,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_hpf_nt_xcd4,2.3%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_sbm16,2.3%,18.5,0,0,0,11.7,0,
gfx950,256,4,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x256x256_f16in_hpf_nt_xcd4,3.3%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_sbm16,3.3%,27.1,0,0,0,16.0,0,
gfx950,256,8,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_hpf_nt_xcd2,3.0%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_nt_sbm16,3.0%,39.9,0,0,0,21.7,0,
gfx950,256,16,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x256x256_f16in_hpf_nt_xcd2,3.3%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x256x128_atomic_nt_sbm16,3.3%,64.03,0,0,0,27.0,0,
gfx950,256,32,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_nt,3.4%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_nt_sbm16,3.4%,107.22,0,0,0,32.3,0,
gfx950,256,64,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_hpf_nt,3.2%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_persist_nt_sbm16,3.2%,165.51,0,0,0,41.8,0,
gfx950,256,128,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_hpf_nt_xcd4,3.2%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_sbm16,3.2%,214.69,0,0,0,64.5,0,
gfx950,256,256,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x128x256_f16in_hpf_nt,3.5%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x128x128_atomic_nt_sbm16,3.5%,227.43,0,0,0,121.7,0,
gfx950,256,512,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,16,0,0,flydsl_mxmoe_g1_a4w4_16x256x256_f16in_nt_xcd2,3.7%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t16x256x128_atomic_persist_nt_sbm16,3.7%,240.47,0,0,0,230.2,0,
gfx950,256,1024,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,64,0,0,flydsl_mxmoe_g1_a4w4_64x256x256_nt_xcd4,3.6%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t64x256x128_atomic_sbm64,3.6%,256.4,0,0,0,431.9,0,
gfx950,256,2048,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,64,0,0,flydsl_mxmoe_g1_a4w4_64x256x256_xcd4,3.6%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t64x256x128_atomic_sbm64,3.6%,326.38,0,0,0,678.5,0,
gfx950,256,4096,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,64,0,0,flydsl_mxmoe_g1_a4w4_64x256x256_xcd4,3.5%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t64x256x128_atomic_sbm64,3.5%,450.16,0,0,0,983.9,0,
gfx950,256,8192,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,64,0,0,flydsl_mxmoe_g1_a4w4_64x256x256_xcd4,3.6%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t64x128x128_atomic_sbm64,3.6%,735.64,0,0,0,1204.2,0,
gfx950,256,16384,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0,128,0,0,flydsl_mxmoe_g1_a4w4_128x256x256_xcd4,3.5%,0,flydsl_moe2_layout_afp4_wfp4_bf16_t128x256x128_scatter_sbm128,3.5%,1117.73,0,0,0,1585.1,0,
16 changes: 16 additions & 0 deletions aiter/configs/model_configs/qwen3_8_flash_fp4_untuned_fmoe.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
token,model_dim,inter_dim,expert,topk,act_type,dtype,q_dtype_a,q_dtype_w,q_type,use_g1u1,doweight_stage1
1,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
2,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
4,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
8,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
16,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
32,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
64,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
128,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
256,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
512,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
1024,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
2048,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
4096,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
8192,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
16384,2560,640,513,11,ActivationType.Silu,torch.bfloat16,torch.float4_e2m1fn_x2,torch.float4_e2m1fn_x2,QuantType.per_1x32,1,0
1 change: 1 addition & 0 deletions aiter/ops/moe_mxfp4_aux.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
(512, 4096, 512, 10),
(513, 4096, 512, 11),
(513, 8192, 256, 11),
(513, 2560, 768, 11),
(288, 4096, 1024, 8),
(288, 4096, 512, 8),
(288, 4096, 256, 8),
Expand Down
1 change: 1 addition & 0 deletions csrc/kernels/mxfp4_moe/moe_aux/codegen/gen_instances.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
(512, 4096, 512, 10), # Qwen3.5 TP=1
(513, 4096, 512, 11), # Qwen3.5 shared-expert variant
(513, 8192, 256, 11), # Qwen3.8 TP=8 (shared-expert variant)
(513, 2560, 768, 11), # Qwen3.8-Flash-Next TP=1 (INTER 640 pads to 768)
(512, 2048, 512, 10), # Qwen3-Coder-Next TP=1
(256, 6144, 2048, 8), # GLM-5.3 TP=1
(256, 6144, 3072, 6), # Inkling TP=1
Expand Down
17 changes: 17 additions & 0 deletions op_tests/test_mxfp4_moe_aux_codegen.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# Copyright (C) 2026, Advanced Micro Devices, Inc. All rights reserved.
"""CPU-only checks for MXFP4 MoE auxiliary source generation."""

import ast
import importlib.util
import sys
import tempfile
Expand All @@ -13,6 +14,17 @@
/ "csrc/kernels/mxfp4_moe/moe_aux/codegen/gen_instances.py"
)
JIT_CACHE = Path(__file__).resolve().parents[1] / "aiter/jit/utils/jit_cache.py"
AUX_OPS = Path(__file__).resolve().parents[1] / "aiter/ops/moe_mxfp4_aux.py"


def supported_shapes():
"""`MXFP4_MOE_SUPPORTED_SHAPES`, read without importing aiter."""
for node in ast.parse(AUX_OPS.read_text()).body:
if isinstance(node, ast.Assign) and any(
getattr(t, "id", None) == "MXFP4_MOE_SUPPORTED_SHAPES" for t in node.targets
):
return set(ast.literal_eval(node.value.args[0]))
raise AssertionError("MXFP4_MOE_SUPPORTED_SHAPES not found")


def load_module(name, path):
Expand All @@ -23,6 +35,11 @@ def load_module(name, path):


class TestMxfp4MoeAuxCodegen(unittest.TestCase):
def test_supported_shapes_have_generated_instances(self):
module = load_module("mxfp4_moe_aux_codegen", GENERATOR)
missing = supported_shapes() - set(module.SHAPES)
self.assertEqual(missing, set())

def test_regeneration_removes_stale_instance_source(self):
module = load_module("mxfp4_moe_aux_codegen", GENERATOR)

Expand Down
Loading