---
id: pr-flashinfer-3259
repo: flashinfer-ai/flashinfer
pr: 3259
title: Add dynamic tokens-per-page TRTLLM-GEN GQA kernels
author: PerkzZheng
date: '2026-05-11'
url: https://github.com/flashinfer-ai/flashinfer/pull/3259
source_category: upstream-code
architectures:
- sm100
tags:
- arch_pipeline
- attention_kv
- benchmark_test
- blackwell
- mla
- paged attention
techniques:
- pipeline-stages
hardware_features:
- blackwell
kernel_types:
- attention
- decode
- mla
- runtime
languages:
- cuda-cpp
captured_at: '2026-05-16'
status: merged
merge_sha: 4f072c4fdfd6d4e29e7d493c3b191023b7825ba8
inclusion_reason: Preserve page/KV/layout and plan-run contracts; profile memory traffic separately from math utilization.
changed_paths:
- flashinfer/artifacts.py
- include/flashinfer/trtllm/fmha/fmhaKernels.cuh
- include/flashinfer/trtllm/fmha/fmhaRunnerParams.h
- include/flashinfer/trtllm/fmha/kernelParams.h
- tests/attention/test_attention_sink_blackwell.py
- tests/attention/test_trtllm_gen_attention.py
artifact_dir: evidence/pull-bundles/flashinfer/gh-3259
head_ref_oid: eb503ead68846fbc51f35ebd003fe3a2e5ffd1fe
---
# Add dynamic tokens-per-page TRTLLM-GEN GQA kernels

- Repository: `flashinfer-ai/flashinfer`
- PR: [3259](https://github.com/flashinfer-ai/flashinfer/pull/3259)
- Decision: `Preserve page/KV/layout and plan-run contracts; profile memory traffic separately from math utilization.`
- Reason: Preserve page/KV/layout and plan-run contracts; profile memory traffic separately from math utilization.

## Changed Paths

- `flashinfer/artifacts.py`
- `include/flashinfer/trtllm/fmha/fmhaKernels.cuh`
- `include/flashinfer/trtllm/fmha/fmhaRunnerParams.h`
- `include/flashinfer/trtllm/fmha/kernelParams.h`
- `tests/attention/test_attention_sink_blackwell.py`
- `tests/attention/test_trtllm_gen_attention.py`

## Evidence Bundle

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