---
id: pr-flashinfer-3115
repo: flashinfer-ai/flashinfer
pr: 3115
title: 'perf(autotuner): replace power-of-2 token buckets with hybrid spacing & fix missing routing_replay_out arg'
author: StudyingShao
date: '2026-04-24'
url: https://github.com/flashinfer-ai/flashinfer/pull/3115
source_category: upstream-code
architectures:
- sm100
tags:
- attention_kv
- benchmark_test
- cute dsl
- fp4
- fp8
- fused moe
- gemm_quant
- moe_routing
- scheduler_autotune
techniques:
- autotuning
- fine-grained-quantization
- kernel-fusion
- tile-scheduling
hardware_features:
- fp4
- fp8
kernel_types:
- attention
- gemm
- moe
- scheduler
languages:
- cuda-cpp
- cute-dsl
captured_at: '2026-05-16'
status: merged
merge_sha: a265b4e58d785ccc50b7e4ae670b0418a9164f13
inclusion_reason: Separate routing, permutation, top-k, and expert GEMM costs; keep tail-token and expert-layout tests attached to the idea.
changed_paths:
- flashinfer/fused_moe/core.py
- flashinfer/fused_moe/cute_dsl/tuner.py
- flashinfer/fused_moe/utils.py
- flashinfer/gemm/gemm_base.py
- flashinfer/trtllm_low_latency_gemm.py
artifact_dir: evidence/pull-bundles/flashinfer/gh-3115
head_ref_oid: e27bfb75dceb0494a5a78fbc6f0735d3823cb290
---
# perf(autotuner): replace power-of-2 token buckets with hybrid spacing & fix missing routing_replay_out arg

- Repository: `flashinfer-ai/flashinfer`
- PR: [3115](https://github.com/flashinfer-ai/flashinfer/pull/3115)
- Decision: `Separate routing, permutation, top-k, and expert GEMM costs; keep tail-token and expert-layout tests attached to the idea.`
- Reason: Separate routing, permutation, top-k, and expert GEMM costs; keep tail-token and expert-layout tests attached to the idea.

## Changed Paths

- `flashinfer/fused_moe/core.py`
- `flashinfer/fused_moe/cute_dsl/tuner.py`
- `flashinfer/fused_moe/utils.py`
- `flashinfer/gemm/gemm_base.py`
- `flashinfer/trtllm_low_latency_gemm.py`

## Evidence Bundle

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