---
id: pr-flashinfer-2931
repo: flashinfer-ai/flashinfer
pr: 2931
title: 'feat: add get flashinfer-trace interface .fi_trace'
author: yyihuang
date: '2026-04-25'
url: https://github.com/flashinfer-ai/flashinfer/pull/2931
source_category: upstream-code
architectures:
- sm100
tags: []
techniques: []
hardware_features: []
kernel_types: []
languages: []
captured_at: '2026-05-16'
status: merged
merge_sha: 24c4aeedba2297cb133a6e7841cebf6d968b1635
inclusion_reason: defer
changed_paths:
- .claude/skills/add-cuda-kernel/SKILL.md
- CLAUDE.md
- docs/fi_trace.rst
- docs/index.rst
- flashinfer/__init__.py
- flashinfer/activation.py
- flashinfer/api_logging.py
- flashinfer/attention/_core.py
- flashinfer/cascade.py
- flashinfer/comm/allreduce.py
- flashinfer/comm/dcp_alltoall.py
- flashinfer/concat_ops.py
- flashinfer/cudnn/decode.py
- flashinfer/cudnn/prefill.py
- flashinfer/cute_dsl/add_rmsnorm_fp4quant.py
- flashinfer/cute_dsl/attention/wrappers/batch_mla.py
- flashinfer/cute_dsl/attention/wrappers/batch_prefill.py
- flashinfer/cute_dsl/rmsnorm_fp4quant.py
- flashinfer/decode.py
- flashinfer/fi_trace.py
- flashinfer/fused_moe/core.py
- flashinfer/fused_moe/cute_dsl/b12x_moe.py
- flashinfer/fused_moe/cute_dsl/fused_moe.py
- flashinfer/fused_moe/fused_routing_dsv3.py
- flashinfer/gdn_decode.py
- flashinfer/gdn_prefill.py
- flashinfer/gemm/gemm_base.py
- flashinfer/gemm/kernels/grouped_gemm_masked_blackwell.py
- flashinfer/gemm/routergemm.py
- flashinfer/mamba/selective_state_update.py
- flashinfer/mla/_core.py
- flashinfer/norm/__init__.py
- flashinfer/page.py
- flashinfer/pod.py
- flashinfer/prefill.py
- flashinfer/quantization/fp4_quantization.py
- flashinfer/quantization/fp8_quantization.py
- flashinfer/rope.py
- flashinfer/sampling.py
- flashinfer/sparse.py
- flashinfer/topk.py
- flashinfer/trace/__init__.py
- flashinfer/trace/template.py
- flashinfer/trace/templates/__init__.py
- flashinfer/trace/templates/activation.py
- flashinfer/trace/templates/attention.py
- flashinfer/trace/templates/cascade.py
- flashinfer/trace/templates/comm.py
- flashinfer/trace/templates/gdn.py
- flashinfer/trace/templates/gemm.py
- flashinfer/trace/templates/mamba.py
- flashinfer/trace/templates/moe.py
- flashinfer/trace/templates/norm.py
- flashinfer/trace/templates/page.py
- flashinfer/trace/templates/quantize.py
- flashinfer/trace/templates/rope.py
- flashinfer/trace/templates/sampling.py
- flashinfer/trtllm_low_latency_gemm.py
- flashinfer/xqa.py
- tests/trace/example.py
- tests/trace/example_cuda_graph.py
- tests/trace/example_sglang.py
- tests/trace/fi_trace_out/append_paged_kv_cache_kv8_d128.json
- tests/trace/fi_trace_out/chain_speculative_sampling_v32000.json
- tests/trace/fi_trace_out/fp4_quantize_k4096.json
- tests/trace/fi_trace_out/fp4_quantize_k7168.json
- tests/trace/fi_trace_out/fused_add_rmsnorm_h5120.json
- tests/trace/fi_trace_out/fused_add_rmsnorm_quant_h7168.json
- tests/trace/fi_trace_out/gdn_decode_qk4_v8_d128.json
- tests/trace/fi_trace_out/gdn_mtp_qk4_v8_d128.json
- tests/trace/fi_trace_out/gdn_prefill_qk4_v8_d128.json
- tests/trace/fi_trace_out/gelu_and_mul_h16384.json
- tests/trace/fi_trace_out/gelu_tanh_and_mul_h16384.json
- tests/trace/fi_trace_out/gemm_bf16_N256_K7168.json
- tests/trace/fi_trace_out/gemm_bf16_N4096_K4096.json
- tests/trace/fi_trace_out/gemm_fp4_N2048_K7168_block_size16.json
- tests/trace/fi_trace_out/gemm_fp8_N1536_K7168.json
- tests/trace/fi_trace_out/gemm_mxfp8_N4096_K4096.json
- tests/trace/fi_trace_out/gemma_fused_add_rmsnorm_h4608.json
- tests/trace/fi_trace_out/gemma_rmsnorm_h4608.json
- tests/trace/fi_trace_out/gqa_paged_decode_h32_kv8_d128_ps16.json
- tests/trace/fi_trace_out/gqa_paged_decode_h32_kv8_d128_ps64.json
- tests/trace/fi_trace_out/gqa_paged_prefill_h32_kv8_d128_ps16.json
- tests/trace/fi_trace_out/gqa_ragged_h32_kv8_d128.json
- tests/trace/fi_trace_out/layernorm_h768.json
- tests/trace/fi_trace_out/llama31_rope_h32_kv8_d128.json
- tests/trace/fi_trace_out/llama31_rope_inplace_h32_kv8_d128.json
- tests/trace/fi_trace_out/llama31_rope_pos_ids_h32_kv8_d128.json
- tests/trace/fi_trace_out/llama31_rope_pos_ids_inplace_h32_kv8_d128.json
- tests/trace/fi_trace_out/merge_state_h32_d128.json
- tests/trace/fi_trace_out/merge_state_in_place_h32_d128.json
- tests/trace/fi_trace_out/merge_states_h32_d128.json
- tests/trace/fi_trace_out/min_p_sampling_v32000.json
- tests/trace/fi_trace_out/mla_paged_decode_h16_ckv512_kpe64_ps1.json
- tests/trace/fi_trace_out/mla_paged_decode_h16_ckv512_kpe64_ps64.json
- tests/trace/fi_trace_out/moe_fp4_block_scale_default_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp4_block_scale_ds_routing_topk8_e32_h7168_i2048_ng8_kg4.json
- tests/trace/fi_trace_out/moe_fp4_block_scale_llama4_routing_topk1_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp4_block_scale_renormalize_naive_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp4_block_scale_renormalize_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp4_block_scale_topk_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp8_block_scale_default_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp8_block_scale_ds_routing_topk8_ng8_kg4_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp8_block_scale_llama4_routing_topk1_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp8_block_scale_renormalize_naive_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp8_block_scale_renormalize_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/moe_fp8_block_scale_topk_routing_topk8_e32_h7168_i2048.json
- tests/trace/fi_trace_out/mxfp4_quantize_k4096.json
- tests/trace/fi_trace_out/mxfp8_quantize_k4096.json
- tests/trace/fi_trace_out/nvfp4_quantize_k4096.json
- tests/trace/fi_trace_out/rmsnorm_h4096.json
- tests/trace/fi_trace_out/rmsnorm_h7168.json
- tests/trace/fi_trace_out/rmsnorm_quant_h7168.json
- tests/trace/fi_trace_out/rope_cos_sin_cache_d128.json
- tests/trace/fi_trace_out/rope_cos_sin_cache_inplace_d128.json
- tests/trace/fi_trace_out/rope_h32_kv8_d128.json
- tests/trace/fi_trace_out/rope_inplace_h32_kv8_d128.json
- tests/trace/fi_trace_out/rope_pos_ids_h32_kv8_d128.json
- tests/trace/fi_trace_out/rope_pos_ids_inplace_h32_kv8_d128.json
- tests/trace/fi_trace_out/sampling_from_logits_v32000.json
artifact_dir: evidence/pull-bundles/flashinfer/gh-2931
head_ref_oid: 90548eb322e18bb9ada7b8e98e25427d2ad81408
---
# feat: add get flashinfer-trace interface .fi_trace

- Repository: `flashinfer-ai/flashinfer`
- PR: [2931](https://github.com/flashinfer-ai/flashinfer/pull/2931)
- Decision: `defer`
- Reason: defer

## Changed Paths

- `.claude/skills/add-cuda-kernel/SKILL.md`
- `CLAUDE.md`
- `docs/fi_trace.rst`
- `docs/index.rst`
- `flashinfer/__init__.py`
- `flashinfer/activation.py`
- `flashinfer/api_logging.py`
- `flashinfer/attention/_core.py`
- `flashinfer/cascade.py`
- `flashinfer/comm/allreduce.py`
- `flashinfer/comm/dcp_alltoall.py`
- `flashinfer/concat_ops.py`
- `flashinfer/cudnn/decode.py`
- `flashinfer/cudnn/prefill.py`
- `flashinfer/cute_dsl/add_rmsnorm_fp4quant.py`
- `flashinfer/cute_dsl/attention/wrappers/batch_mla.py`
- `flashinfer/cute_dsl/attention/wrappers/batch_prefill.py`
- `flashinfer/cute_dsl/rmsnorm_fp4quant.py`
- `flashinfer/decode.py`
- `flashinfer/fi_trace.py`
- `flashinfer/fused_moe/core.py`
- `flashinfer/fused_moe/cute_dsl/b12x_moe.py`
- `flashinfer/fused_moe/cute_dsl/fused_moe.py`
- `flashinfer/fused_moe/fused_routing_dsv3.py`
- `flashinfer/gdn_decode.py`
- `flashinfer/gdn_prefill.py`
- `flashinfer/gemm/gemm_base.py`
- `flashinfer/gemm/kernels/grouped_gemm_masked_blackwell.py`
- `flashinfer/gemm/routergemm.py`
- `flashinfer/mamba/selective_state_update.py`
- `flashinfer/mla/_core.py`
- `flashinfer/norm/__init__.py`
- `flashinfer/page.py`
- `flashinfer/pod.py`
- `flashinfer/prefill.py`
- `flashinfer/quantization/fp4_quantization.py`
- `flashinfer/quantization/fp8_quantization.py`
- `flashinfer/rope.py`
- `flashinfer/sampling.py`
- `flashinfer/sparse.py`
- `flashinfer/topk.py`
- `flashinfer/trace/__init__.py`
- `flashinfer/trace/template.py`
- `flashinfer/trace/templates/__init__.py`
- `flashinfer/trace/templates/activation.py`
- `flashinfer/trace/templates/attention.py`
- `flashinfer/trace/templates/cascade.py`
- `flashinfer/trace/templates/comm.py`
- `flashinfer/trace/templates/gdn.py`
- `flashinfer/trace/templates/gemm.py`
- `flashinfer/trace/templates/mamba.py`
- `flashinfer/trace/templates/moe.py`
- `flashinfer/trace/templates/norm.py`
- `flashinfer/trace/templates/page.py`
- `flashinfer/trace/templates/quantize.py`
- `flashinfer/trace/templates/rope.py`
- `flashinfer/trace/templates/sampling.py`
- `flashinfer/trtllm_low_latency_gemm.py`
- `flashinfer/xqa.py`
- `tests/trace/example.py`
- `tests/trace/example_cuda_graph.py`
- `tests/trace/example_sglang.py`
- `tests/trace/fi_trace_out/append_paged_kv_cache_kv8_d128.json`
- `tests/trace/fi_trace_out/chain_speculative_sampling_v32000.json`
- `tests/trace/fi_trace_out/fp4_quantize_k4096.json`
- `tests/trace/fi_trace_out/fp4_quantize_k7168.json`
- `tests/trace/fi_trace_out/fused_add_rmsnorm_h5120.json`
- `tests/trace/fi_trace_out/fused_add_rmsnorm_quant_h7168.json`
- `tests/trace/fi_trace_out/gdn_decode_qk4_v8_d128.json`
- `tests/trace/fi_trace_out/gdn_mtp_qk4_v8_d128.json`
- `tests/trace/fi_trace_out/gdn_prefill_qk4_v8_d128.json`
- `tests/trace/fi_trace_out/gelu_and_mul_h16384.json`
- `tests/trace/fi_trace_out/gelu_tanh_and_mul_h16384.json`
- `tests/trace/fi_trace_out/gemm_bf16_N256_K7168.json`
- `tests/trace/fi_trace_out/gemm_bf16_N4096_K4096.json`
- `tests/trace/fi_trace_out/gemm_fp4_N2048_K7168_block_size16.json`
- `tests/trace/fi_trace_out/gemm_fp8_N1536_K7168.json`
- `tests/trace/fi_trace_out/gemm_mxfp8_N4096_K4096.json`
- `tests/trace/fi_trace_out/gemma_fused_add_rmsnorm_h4608.json`
- `tests/trace/fi_trace_out/gemma_rmsnorm_h4608.json`

## Evidence Bundle

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