---
id: pr-flashinfer-2805
repo: flashinfer-ai/flashinfer
pr: 2805
title: '[CuTe DSL] Add modular FMHA prefill and MLA decode attention kernels'
author: pgera
date: '2026-04-14'
url: https://github.com/flashinfer-ai/flashinfer/pull/2805
source_category: upstream-code
architectures:
- sm100
tags:
- attention
- decode
- epilogue-fusion
- flash-attention
- fp8
- kernel-fusion
- mla
- persistent-kernel
- pipeline-stages
- prefill
- tma
- tmem
techniques:
- epilogue-fusion
- kernel-fusion
- persistent-kernel
- pipeline-stages
hardware_features:
- fp8
- tma
- tmem
kernel_types:
- attention
- decode
- flash-attention
- mla
- prefill
languages:
- cute-dsl
captured_at: '2026-04-27'
status: merged
merge_sha: 00ac5053db750d554904d86c62ae600b03b93a62
inclusion_reason: kernel file changes
changed_paths:
- benchmarks/bench_blackwell_attention_cutedsl.py
- flashinfer/cute_dsl/attention/__init__.py
- flashinfer/cute_dsl/attention/collective_builder.py
- flashinfer/cute_dsl/attention/compat.py
- flashinfer/cute_dsl/attention/config.py
- flashinfer/cute_dsl/attention/fusion/__init__.py
- flashinfer/cute_dsl/attention/fusion/mask.py
- flashinfer/cute_dsl/attention/fusion/variant.py
- flashinfer/cute_dsl/attention/mainloop_spec.py
- flashinfer/cute_dsl/attention/mla_config.py
- flashinfer/cute_dsl/attention/mla_decode.py
- flashinfer/cute_dsl/attention/mla_decode_fp8.py
- flashinfer/cute_dsl/attention/mla_warp_schedule.py
- flashinfer/cute_dsl/attention/pipeline_topology.py
- flashinfer/cute_dsl/attention/prefill.py
- flashinfer/cute_dsl/attention/roles/__init__.py
- flashinfer/cute_dsl/attention/roles/correction.py
- flashinfer/cute_dsl/attention/roles/epilogue.py
- flashinfer/cute_dsl/attention/roles/loader_tma.py
- flashinfer/cute_dsl/attention/roles/mla_compute.py
- flashinfer/cute_dsl/attention/roles/mla_correction.py
- flashinfer/cute_dsl/attention/roles/mla_loader.py
- flashinfer/cute_dsl/attention/roles/mla_loader_fp8.py
- flashinfer/cute_dsl/attention/roles/mla_mma.py
- flashinfer/cute_dsl/attention/roles/mla_mma_fp8.py
- flashinfer/cute_dsl/attention/roles/mla_pt_loader.py
- flashinfer/cute_dsl/attention/roles/mma.py
- flashinfer/cute_dsl/attention/roles/softmax.py
- flashinfer/cute_dsl/attention/roles/softmax_math.py
- flashinfer/cute_dsl/attention/scheduler/__init__.py
- flashinfer/cute_dsl/attention/scheduler/mla_persistent.py
- flashinfer/cute_dsl/attention/scheduler/persistent.py
- flashinfer/cute_dsl/attention/tmem_layout.py
- flashinfer/cute_dsl/attention/warp_schedule.py
- flashinfer/cute_dsl/attention/wrappers/__init__.py
- flashinfer/cute_dsl/attention/wrappers/batch_mla.py
- flashinfer/cute_dsl/attention/wrappers/batch_prefill.py
- flashinfer/mla/_core.py
- flashinfer/mla/cute_dsl/__init__.py
- flashinfer/mla/cute_dsl/mla_decode.py
- flashinfer/mla/cute_dsl/mla_decode_fp16.py
- flashinfer/mla/cute_dsl/mla_decode_fp8.py
- flashinfer/prefill.py
- tests/attention/test_cute_dsl_mla_decode.py
- tests/attention/test_modular_fmha_prefill.py
head_ref_oid: b35978839c4cd5ac9ed5b5488592182d84081279
artifact_dir: evidence/pull-bundles/flashinfer/gh-2805
---
# [CuTe DSL] Add modular FMHA prefill and MLA decode attention kernels

- Repository: `flashinfer-ai/flashinfer`
- PR: [2805](https://github.com/flashinfer-ai/flashinfer/pull/2805)
- Decision: `kernel file changes`
- Reason: kernel file changes

## Changed Paths

- `benchmarks/bench_blackwell_attention_cutedsl.py`
- `flashinfer/cute_dsl/attention/__init__.py`
- `flashinfer/cute_dsl/attention/collective_builder.py`
- `flashinfer/cute_dsl/attention/compat.py`
- `flashinfer/cute_dsl/attention/config.py`
- `flashinfer/cute_dsl/attention/fusion/__init__.py`
- `flashinfer/cute_dsl/attention/fusion/mask.py`
- `flashinfer/cute_dsl/attention/fusion/variant.py`
- `flashinfer/cute_dsl/attention/mainloop_spec.py`
- `flashinfer/cute_dsl/attention/mla_config.py`
- `flashinfer/cute_dsl/attention/mla_decode.py`
- `flashinfer/cute_dsl/attention/mla_decode_fp8.py`
- `flashinfer/cute_dsl/attention/mla_warp_schedule.py`
- `flashinfer/cute_dsl/attention/pipeline_topology.py`
- `flashinfer/cute_dsl/attention/prefill.py`
- `flashinfer/cute_dsl/attention/roles/__init__.py`
- `flashinfer/cute_dsl/attention/roles/correction.py`
- `flashinfer/cute_dsl/attention/roles/epilogue.py`
- `flashinfer/cute_dsl/attention/roles/loader_tma.py`
- `flashinfer/cute_dsl/attention/roles/mla_compute.py`
- `flashinfer/cute_dsl/attention/roles/mla_correction.py`
- `flashinfer/cute_dsl/attention/roles/mla_loader.py`
- `flashinfer/cute_dsl/attention/roles/mla_loader_fp8.py`
- `flashinfer/cute_dsl/attention/roles/mla_mma.py`
- `flashinfer/cute_dsl/attention/roles/mla_mma_fp8.py`
- `flashinfer/cute_dsl/attention/roles/mla_pt_loader.py`
- `flashinfer/cute_dsl/attention/roles/mma.py`
- `flashinfer/cute_dsl/attention/roles/softmax.py`
- `flashinfer/cute_dsl/attention/roles/softmax_math.py`
- `flashinfer/cute_dsl/attention/scheduler/__init__.py`
- `flashinfer/cute_dsl/attention/scheduler/mla_persistent.py`
- `flashinfer/cute_dsl/attention/scheduler/persistent.py`
- `flashinfer/cute_dsl/attention/tmem_layout.py`
- `flashinfer/cute_dsl/attention/warp_schedule.py`
- `flashinfer/cute_dsl/attention/wrappers/__init__.py`
- `flashinfer/cute_dsl/attention/wrappers/batch_mla.py`
- `flashinfer/cute_dsl/attention/wrappers/batch_prefill.py`
- `flashinfer/mla/_core.py`
- `flashinfer/mla/cute_dsl/__init__.py`
- `flashinfer/mla/cute_dsl/mla_decode.py`
- `flashinfer/mla/cute_dsl/mla_decode_fp16.py`
- `flashinfer/mla/cute_dsl/mla_decode_fp8.py`
- `flashinfer/prefill.py`
- `tests/attention/test_cute_dsl_mla_decode.py`
- `tests/attention/test_modular_fmha_prefill.py`

## Evidence Bundle

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