---
id: pr-flashinfer-3080
repo: flashinfer-ai/flashinfer
pr: 3080
title: 'feat: Add b12x_fused_moe / B12xMoEWrapper SM120 APIs with micro kernel and ReLU2'
author: bkryu
date: '2026-04-20'
url: https://github.com/flashinfer-ai/flashinfer/pull/3080
source_category: upstream-code
architectures:
- sm100
tags:
- TMA
- arch_pipeline
- benchmark
- benchmark_test
- blackwell
- compiler_runtime
- cuda kernel
- cute dsl
- cutlass
- fp4
- fused moe
- gemm_quant
- moe_routing
- nvfp4
- sm100
- sm120
- topk
techniques:
- async-copy
- fine-grained-quantization
- kernel-fusion
- pipeline-stages
hardware_features:
- blackwell
- fp4
- nvfp4
- tma
kernel_types:
- compiler
- decode
- gemm
- moe
- runtime
languages:
- cuda-cpp
- cute-dsl
- triton
captured_at: '2026-05-16'
status: merged
merge_sha: 8a9970b45a1e5bddace1f9d26b1b7a07a77ba504
inclusion_reason: Mine shape sets, tolerance rules, warmup logic, and profile commands before mutating code.
changed_paths:
- benchmarks/routines/moe.py
- benchmarks/routines/moe_utils.py
- flashinfer/__init__.py
- flashinfer/cute_dsl/fp4_common.py
- flashinfer/cute_dsl/utils.py
- flashinfer/fused_moe/__init__.py
- flashinfer/fused_moe/cute_dsl/__init__.py
- flashinfer/fused_moe/cute_dsl/b12x_moe.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/__init__.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dispatch.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dynamic_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_micro_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_static_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/triton_compact.py
- flashinfer/fused_moe/cute_dsl/fused_moe.py
- tests/moe/test_b12x_fused_moe.py
- tests/moe/test_cute_dsl_fused_moe.py
artifact_dir: evidence/pull-bundles/flashinfer/gh-3080
head_ref_oid: aa7d1489565d22afa20f0e4bfef800cc9b0cfab1
---
# feat: Add b12x_fused_moe / B12xMoEWrapper SM120 APIs with micro kernel and ReLU2

- Repository: `flashinfer-ai/flashinfer`
- PR: [3080](https://github.com/flashinfer-ai/flashinfer/pull/3080)
- Decision: `Mine shape sets, tolerance rules, warmup logic, and profile commands before mutating code.`
- Reason: Mine shape sets, tolerance rules, warmup logic, and profile commands before mutating code.

## Changed Paths

- `benchmarks/routines/moe.py`
- `benchmarks/routines/moe_utils.py`
- `flashinfer/__init__.py`
- `flashinfer/cute_dsl/fp4_common.py`
- `flashinfer/cute_dsl/utils.py`
- `flashinfer/fused_moe/__init__.py`
- `flashinfer/fused_moe/cute_dsl/__init__.py`
- `flashinfer/fused_moe/cute_dsl/b12x_moe.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/__init__.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dispatch.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dynamic_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_micro_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_static_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/triton_compact.py`
- `flashinfer/fused_moe/cute_dsl/fused_moe.py`
- `tests/moe/test_b12x_fused_moe.py`
- `tests/moe/test_cute_dsl_fused_moe.py`

## Evidence Bundle

`evidence/pull-bundles/flashinfer/gh-3080`
