Skip to content

[None][perf] Fuse DeepSeek-V4 Indexer Q projection with CuTe DSL#16532

Merged
mingyangHao merged 8 commits into
NVIDIA:mainfrom
mingyangHao:user/mingyangh/dsv4-indexer-q-fusion
Jul 24, 2026
Merged

[None][perf] Fuse DeepSeek-V4 Indexer Q projection with CuTe DSL#16532
mingyangHao merged 8 commits into
NVIDIA:mainfrom
mingyangHao:user/mingyangh/dsv4-indexer-q-fusion

Conversation

@mingyangHao

@mingyangHao mingyangHao commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Description

Paths compared

  • Original: FP8 quant + original DeepGEMM Q projection +
    mlaRoPEInplaceKernel + fusedCatFp4Kernel + output scale copies.
  • Forced fused CuTe: FP8 quant + one CuTe Q projection/RoPE/FP4-concat
    kernel + output scale copies. It uses the swapped small-M kernel for M<=8
    and the native CuTe fused kernel for every M>=16.

There is no fallback to the original chain at any measured M. NSYS topology
validation found no standalone RoPE or FP4-concat kernel in any forced-fused
candidate graph.

Results

Times are the average of the forward/reverse capture medians. The percentage
column is the range from the two independent capture orders; positive means
forced-fused CuTe is faster.

M Original output-ready (us) Forced fused (us) Output-ready gain
1 29.576 21.864 +23.21% .. +28.92%
2 30.040 22.096 +22.67% .. +30.19%
4 31.528 24.432 +21.73% .. +23.29%
8 33.008 28.824 +12.33% .. +13.02%
16 33.376 32.528 +2.11% .. +2.97%
32 34.624 32.992 +3.66% .. +5.77%
64 35.576 32.360 +8.80% .. +9.28%
128 35.745 29.944 +16.05% .. +16.40%
256 23.048 18.560 +19.28% .. +19.67%
512 29.712 22.672 +23.68% .. +23.71%
1024 42.633 31.008 +27.25% .. +27.28%
2048 69.920 44.968 +35.68% .. +35.70%
4096 124.408 75.984 +38.91% .. +38.94%
8192 245.849 143.800 +41.44% .. +41.58%
16384 511.074 287.009 +43.54% .. +44.14%

Test Coverage

PR Checklist

Please review the following before submitting your PR:

  • PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.

  • PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.

  • Test cases are provided for new code paths (see test instructions)

  • If PR introduces API changes, an appropriate PR label is added - either api-compatible or api-breaking. For api-breaking, include BREAKING in the PR title.

  • Any new dependencies have been scanned for license and vulnerabilities

  • CODEOWNERS updated if ownership changes

  • Documentation updated as needed

  • Update tava architecture diagram if there is a significant design change in PR.

  • The reviewers assigned automatically/manually are appropriate for the PR.

  • Please check this after reviewing the above items as appropriate for this PR.

GitHub Bot Help

To see a list of available CI bot commands, please comment /bot help.

Dev Engineer Review

  • FP8 quantization / scale-layout correctness

    • fp8_blockscale_quant_packed.cu introduces OutputCuteDslSf to switch UE8M0 scale output format:
      • Packed-scale (false): packs four UE8M0 scale bytes into a 32-bit packed value (with K-bound masking) and writes packed_scale_output.
      • CuTe/indexer path (true): bypasses packed; replicates each UE8M0 scale byte into a replicated 32-bit pattern and writes into the SM100 CuTe 128×4 swizzled layout, emitting only lanes where lane_id % 8 == 0 and zero-filling padded rows.
    • Host launch wiring now instantiates the kernel with OutputCuteDslSf=false for the default launcher and true for the CuTe launcher, passing padded_m as scale_leading_dim_uint32.
  • New SM100-only FP8 quant op (CuTe DSL / UE8M0)

    • fp8_blockscale_quant_packed.h adds launch_fp8_quantize_1x128_cutedsl_bf16_e4m3(...) with padded_m for the swizzled scale layout.
    • thop/fp8Quantize.cpp adds fp8_quantize_1x128_cutedsl_ue8m0(Tensor) (SM100-family + input validation, including k % 128 == 0), returning (fp8 values, ue8m0 scale tensor).
    • cpp_custom_ops.py adds the corresponding fake/meta registration for trtllm::fp8_quantize_1x128_cutedsl_ue8m0, computing padded scale shapes from m (padded to 128) and the k-dependent padded scale dimensions.
  • DeepSeek-V4 indexer-Q fused routing

    • deepseek_v4.py refactors Q handling to unify projection→RoPE→quantization in _project_and_quantize_q, using the CuTe fused op torch.ops.trtllm.cute_dsl_fp8_indexer_q_gemm_rope_fp4_blackwell when the CuTe/DSv4 constraints are satisfied (MXFP4_BLOCKWISE cache, non-Neox, exact head/rope dims, CuTe cutedsl scale attributes present, SM100f, bf16 path, and qr bf16).
    • Otherwise it falls back to the previous sequence (project → apply RoPE in-place → quantize).
  • CuTe DSL runner + operator (Blackwell path)

    • cute_dsl_custom_ops.py adds:
      • CuteDSLIndexerQBlackwellRunner (SM100-family gated) with autotuning that:
        • Uses forced position_ids = 0 during tuning to keep RoPE cache lookups consistent.
        • Chooses between small-M swap_ab tactics and a native tactic set; includes an eager fallback when tactic == -1.
      • Custom op cute_dsl_fp8_indexer_q_gemm_rope_fp4_blackwell(...) plus matching fake/meta registration.
    • Dispatch selects wrapper entrypoints (wrapper_indexer_q_swap_ab vs wrapper_indexer_q) and returns packed FP4 bytes (int8) and output scale (int32).
  • Blackwell persistent GEMM epilogue integration

    • dense_blockscaled_gemm_act_fusion.py and dense_blockscaled_gemm_persistent.py add an indexer_q_fusion mode:
      • Plumbs required tensors (indexer_scale_tensor, position_ids_tensor, cos_sin_cache_tensor).
      • Updates epilogue flow to apply rotary embedding in the fused path and alters FP4 SFC/scale handling to support indexer-Q packing/addressing.
      • Introduces wrapper entrypoints including wrapper_indexer_q_swap_ab.
  • Weight transform / buffers for fused layout

    • tensorrt_llm/_torch/modules/linear.py extends the FP8 resmoothing/layout flow to generate CUTEDSL-specific indexer-Q buffers (indexer_q_weight_scale_cutedsl, indexer_q_alpha_cutedsl) when the new fused layout is enabled.
  • CI stability / failure correlation

    • CI was repeatedly retriggered with bot control commands; some runs for earlier commits reported failures where helper jobs sometimes succeeded.
    • Given the breadth of changes (quant kernel, new fused custom op/runner, and persistent GEMM epilogue wiring), if regressions persist, the highest-risk areas to investigate first are (1) scale/layout correctness in the CuTe quant/packing path and (2) packed-vs-swizzled FP4/scale bit-exactness in the fused indexer-Q route.

QA Engineer Review

Test files touched

  • tests/integration/test_lists/test-db/l0_dgx_b200.yml
    • Added: unittest/_torch/attention/sparse/test_cpp_custom_ops.py::test_cute_dsl_fp8_indexer_q_gemm_rope_fp4_matches_unfused
    • Placement/Gating: under the “DSA FP4 indexer (Blackwell-only)” section; system_gpu_count: gte: 4, lte: 4, Ubuntu, *b200* GPUs, stage: pre_merge, backend: pytorch, orchestrator: mpi.
  • tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py
    • Added: test_cute_dsl_fp8_indexer_q_gemm_rope_fp4_matches_unfused(num_tokens)
      • Parameterized over num_tokens (and performs bit-for-bit equality vs an unfused reference chain).
      • Also asserts expected runner/tactic behavior for small vs larger token counts.

Coverage / verdict

  • Covered in test-db integration list? Yes (single new entry in l0_dgx_b200.yml).
  • Verdict: needs follow-up (CI L0 instability was reported for other triggered commits, and no additional CBTS/manual-QA coverage status was provided here beyond the new test being added to the L0 list).

@mingyangHao
mingyangHao requested review from a team as code owners July 17, 2026 07:01
@mingyangHao mingyangHao changed the title User/mingyangh/dsv4 indexer q fusion [None][perf] Fuse DeepSeek-V4 Indexer Q projection with CuTe DSL Jul 17, 2026
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a Blackwell CuTe DSL path for FP8 indexer-Q quantization, fused RoPE and FP4 output, including CUDA operators, persistent GEMM kernels, runtime tactic selection, DeepSeek-V4 integration, and bit-exact tests.

Changes

Indexer-Q CuTe DSL fusion

Layer / File(s) Summary
CuTe scale layout and quantization operator
cpp/tensorrt_llm/kernels/cutlass_kernels/fp8_blockscale_gemm/*, cpp/tensorrt_llm/thop/fp8Quantize.cpp, tensorrt_llm/_torch/custom_ops/cpp_custom_ops.py
Adds replicated/swizzled UE8M0 scale output, the fp8_quantize_1x128_cutedsl_ue8m0 CUDA operator, launcher wiring, and fake shape inference.
Blackwell fused GEMM epilogues
tensorrt_llm/_torch/cute_dsl_kernels/blackwell/dense_blockscaled_gemm_{act_fusion,persistent}.py
Adds indexer-Q fusion inputs, RoPE processing, FP4 packing, indexer scale writes, fusion validation, and dedicated wrapper entry points.
Runner dispatch and weight preparation
tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py, tensorrt_llm/_torch/modules/linear.py
Adds Blackwell tactic selection and compilation, fused custom-op dispatch, fake outputs, and CUTEDSL indexer-Q weight-scale buffers.
DeepSeek-V4 Q-path integration
tensorrt_llm/_torch/attention_backend/sparse/deepseek_v4/deepseek_v4.py
Selects fused indexer-Q projection and quantization for supported runtime conditions, with the existing path retained as fallback.
Blackwell fusion validation
tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py, tests/integration/test_lists/test-db/l0_dgx_b200.yml
Compares fused and unfused packed FP4 outputs and scales byte-for-byte and adds the test to the B200 integration list.

Estimated code review effort: 5 (Critical) | ~90+ minutes

Sequence Diagram(s)

sequenceDiagram
  participant DeepseekV4Indexer
  participant cute_dsl_fp8_indexer_q_gemm_rope_fp4_blackwell
  participant CuteDSLIndexerQBlackwellRunner
  participant fp8_quantize_1x128_cutedsl_ue8m0
  participant BlackwellGEMM
  DeepseekV4Indexer->>cute_dsl_fp8_indexer_q_gemm_rope_fp4_blackwell: request fused Q projection
  cute_dsl_fp8_indexer_q_gemm_rope_fp4_blackwell->>CuteDSLIndexerQBlackwellRunner: select tactic and dispatch
  CuteDSLIndexerQBlackwellRunner->>fp8_quantize_1x128_cutedsl_ue8m0: create FP8 input and UE8M0 scales
  CuteDSLIndexerQBlackwellRunner->>BlackwellGEMM: launch GEMM with RoPE and FP4 epilogue
  BlackwellGEMM-->>DeepseekV4Indexer: return packed FP4 Q and scales
Loading

Suggested labels: deepseek-v4

Suggested reviewers: joyang-nv, junyixu-nv, yunruis

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 67.65% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change: fusing DeepSeek-V4 Indexer Q projection with CuTe DSL.
Description check ✅ Passed The description explains the change, motivation, results, and checklist, though the Test Coverage section is left empty.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
tensorrt_llm/_torch/custom_ops/cpp_custom_ops.py (1)

734-742: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add the fake kernel’s return annotation.

Proposed fix
 `@torch.library.register_fake`("trtllm::fp8_quantize_1x128_cutedsl_ue8m0")
-def _(input: torch.Tensor):
+def _(input: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:

As per coding guidelines, “Annotate every function” and “prefer built-in generic types.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tensorrt_llm/_torch/custom_ops/cpp_custom_ops.py` around lines 734 - 742, Add
a return type annotation to the fake kernel function registered as
trtllm::fp8_quantize_1x128_cutedsl_ue8m0, using the appropriate built-in generic
tuple type describing its float8 tensor and uint8 tensor results.

Source: Coding guidelines

tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py (1)

496-498: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Exercise the TVM-FFI branch used in production.

deepseek_v4.py Line 1170 always passes use_tvm_ffi=True, but this test forces False; the production stream and pointer invocation path remains untested. Coverage is insufficient—add at least one small-M and one native-M TVM-FFI case in this test file. Please also annotate the new test signature.

Proposed parametrization
-@pytest.mark.parametrize("num_tokens", [1, 4, 5, 8, 128])
-def test_cute_dsl_fp8_indexer_q_gemm_rope_fp4_matches_unfused(num_tokens):
+@pytest.mark.parametrize(
+    ("num_tokens", "use_tvm_ffi"),
+    [
+        (1, False),
+        (4, False),
+        (5, False),
+        (8, False),
+        (128, False),
+        (1, True),
+        (128, True),
+    ],
+)
+def test_cute_dsl_fp8_indexer_q_gemm_rope_fp4_matches_unfused(
+    num_tokens: int, use_tvm_ffi: bool
+) -> None:
...
-    runner = CuteDSLIndexerQBlackwellRunner(use_tvm_ffi=False)
+    runner = CuteDSLIndexerQBlackwellRunner(use_tvm_ffi=use_tvm_ffi)
...
-        use_tvm_ffi=False,
+        use_tvm_ffi=use_tvm_ffi,

As per path instructions, test reviews must assess coverage and provide a concrete test location; follow up in tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py.

Also applies to: 534-534, 554-562

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py` around lines
496 - 498, Extend test_cute_dsl_fp8_indexer_q_gemm_rope_fp4_matches_unfused to
cover the production TVM-FFI path by adding parameterized cases for at least one
small-M and one native-M configuration, ensuring use_tvm_ffi=True reaches the
stream and pointer invocation logic. Annotate the updated test signature with
the required typing, and preserve the existing unfused comparison coverage.

Sources: Coding guidelines, Path instructions

tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py (1)

3659-3660: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fully type the new runner and custom-op interfaces.

unique_id, _ptr, tactic, dtype, **kwargs, and the fake implementation lack precise annotations, while several signatures use legacy List/Tuple. Please add Python 3.10+ built-in annotations and document the public custom-op arguments.

As per coding guidelines, “Annotate every function” and “prefer built-in generic types,” with documented public function arguments.

Also applies to: 3706-3718, 3747-3769, 3909-3917, 3933-3941

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py` around lines 3659 -
3660, Fully annotate _prepare_cutedsl_indexer_q_tuning_inputs and the related
runner, custom-op, and fake implementations, including precise types for
unique_id, _ptr, tactic, dtype, and **kwargs. Replace legacy List/Tuple
annotations with Python 3.10+ built-in generics throughout the affected
signatures, and document arguments exposed by public custom-op interfaces.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tensorrt_llm/_torch/attention_backend/sparse/deepseek_v4/deepseek_v4.py`:
- Around line 56-62: Update DEEPSEEK_V4_INDEXER_Q_FULL_FUSION_MIN_TOKENS from
128 to 16 so the fused native path is selected for M=16 and above, while
preserving the existing small-M threshold and maximum-token boundary.

In
`@tensorrt_llm/_torch/cute_dsl_kernels/blackwell/dense_blockscaled_gemm_act_fusion.py`:
- Around line 186-207: Update the activation validation in the constructor
around _act_is_identity so ActivationType.Identity is accepted only when
indexer_q_fusion is enabled. Reject identity activation with indexer_q_fusion
disabled before epilogue execution, while preserving the existing
identity-specific tile and scale-factor validation for fused configurations.

---

Nitpick comments:
In `@tensorrt_llm/_torch/custom_ops/cpp_custom_ops.py`:
- Around line 734-742: Add a return type annotation to the fake kernel function
registered as trtllm::fp8_quantize_1x128_cutedsl_ue8m0, using the appropriate
built-in generic tuple type describing its float8 tensor and uint8 tensor
results.

In `@tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py`:
- Around line 3659-3660: Fully annotate _prepare_cutedsl_indexer_q_tuning_inputs
and the related runner, custom-op, and fake implementations, including precise
types for unique_id, _ptr, tactic, dtype, and **kwargs. Replace legacy
List/Tuple annotations with Python 3.10+ built-in generics throughout the
affected signatures, and document arguments exposed by public custom-op
interfaces.

In `@tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py`:
- Around line 496-498: Extend
test_cute_dsl_fp8_indexer_q_gemm_rope_fp4_matches_unfused to cover the
production TVM-FFI path by adding parameterized cases for at least one small-M
and one native-M configuration, ensuring use_tvm_ffi=True reaches the stream and
pointer invocation logic. Annotate the updated test signature with the required
typing, and preserve the existing unfused comparison coverage.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 61f1fdaa-05a5-4946-98cd-340034cb844d

📥 Commits

Reviewing files that changed from the base of the PR and between ed1a0b9 and 13b204f.

📒 Files selected for processing (11)
  • cpp/tensorrt_llm/kernels/cutlass_kernels/fp8_blockscale_gemm/fp8_blockscale_quant_packed.cu
  • cpp/tensorrt_llm/kernels/cutlass_kernels/fp8_blockscale_gemm/fp8_blockscale_quant_packed.h
  • cpp/tensorrt_llm/thop/fp8Quantize.cpp
  • tensorrt_llm/_torch/attention_backend/sparse/deepseek_v4/deepseek_v4.py
  • tensorrt_llm/_torch/custom_ops/cpp_custom_ops.py
  • tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py
  • tensorrt_llm/_torch/cute_dsl_kernels/blackwell/dense_blockscaled_gemm_act_fusion.py
  • tensorrt_llm/_torch/cute_dsl_kernels/blackwell/dense_blockscaled_gemm_persistent.py
  • tensorrt_llm/_torch/modules/linear.py
  • tests/integration/test_lists/test-db/l0_dgx_b200.yml
  • tests/unittest/_torch/attention/sparse/test_cpp_custom_ops.py

Comment thread tensorrt_llm/_torch/attention_backend/sparse/deepseek_v4/deepseek_v4.py Outdated
Signed-off-by: Mingyang Hao <200044211+mingyangHao@users.noreply.github.com>
@mingyangHao
mingyangHao force-pushed the user/mingyangh/dsv4-indexer-q-fusion branch from 13b204f to 73ca517 Compare July 17, 2026 07:23
@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60158 [ run ] triggered by Bot. Commit: 467fa5d Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60158 [ run ] completed with state FAILURE. Commit: 467fa5d
/LLM/main/L0_MergeRequest_PR pipeline #48535 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60204 [ run ] triggered by Bot. Commit: 467fa5d Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60204 [ run ] completed with state FAILURE. Commit: 467fa5d
/LLM/main/L0_MergeRequest_PR pipeline #48579 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60236 [ run ] triggered by Bot. Commit: cf51886 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60236 [ run ] completed with state FAILURE. Commit: cf51886
/LLM/main/L0_MergeRequest_PR pipeline #48603 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60303 [ run ] triggered by Bot. Commit: 8def6d6 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60861 [ run ] triggered by Bot. Commit: befb43a Link to invocation

@zhaoyangwang-nvidia zhaoyangwang-nvidia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve with little comments.

Comment thread tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py Outdated
Comment thread tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py Outdated
Signed-off-by: Mingyang Hao <200044211+mingyangHao@users.noreply.github.com>
@mingyangHao
mingyangHao force-pushed the user/mingyangh/dsv4-indexer-q-fusion branch from 9b3726e to c74f213 Compare July 22, 2026 04:36
@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot kill

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60884 [ kill ] triggered by Bot. Commit: c74f213 Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60861 [ run ] completed with state ABORTED. Commit: befb43a

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60884 [ kill ] completed with state SUCCESS. Commit: c74f213
Successfully killed previous jobs for commit c74f213

Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60889 [ run ] triggered by Bot. Commit: c74f213 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #60889 [ run ] completed with state FAILURE. Commit: c74f213
/LLM/main/L0_MergeRequest_PR pipeline #49157 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61146 [ run ] triggered by Bot. Commit: c74f213 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61146 [ run ] completed with state SUCCESS. Commit: c74f213
/LLM/main/L0_MergeRequest_PR pipeline #49396 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61213 [ run ] triggered by Bot. Commit: c74f213 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61213 [ run ] completed with state SUCCESS. Commit: c74f213
/LLM/main/L0_MergeRequest_PR pipeline #49456 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61307 [ run ] triggered by Bot. Commit: c74f213 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61307 [ run ] completed with state FAILURE. Commit: c74f213
/LLM/main/L0_MergeRequest_PR pipeline #49537 completed with status: 'FAILURE'

CI Report

⚠️ Action Required:

  • Please check the failed tests and fix your PR
  • If you cannot view the failures, ask the CI triggerer to share details
  • Once fixed, request an NVIDIA team member to trigger CI again

CI Agent Failure Analysis

Link to invocation

@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot run --disable-fail-fast

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61463 [ run ] triggered by Bot. Commit: c74f213 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61463 [ run ] completed with state SUCCESS. Commit: c74f213
/LLM/main/L0_MergeRequest_PR pipeline #49686 completed with status: 'SUCCESS'

CI Report

Link to invocation

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py`:
- Around line 3762-3770: Update _fallback_tactic to validate native
configurations with the same kernel_class.can_implement logic used by
TunableRunner.get_valid_tactics. Iterate through _native_tactics and return the
first feasible native tactic for the given m, n, and k; preserve the existing
small-M selection and ensure a safe fallback is handled if no native tactic is
implementable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5c13b42b-1dc7-4544-ab1f-31c89ceb165c

📥 Commits

Reviewing files that changed from the base of the PR and between c74f213 and c29c067.

📒 Files selected for processing (2)
  • tensorrt_llm/_torch/attention_backend/sparse/deepseek_v4/deepseek_v4.py
  • tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py

Comment thread tensorrt_llm/_torch/custom_ops/cute_dsl_custom_ops.py
@mingyangHao

Copy link
Copy Markdown
Collaborator Author

/bot skip --comment 'accidentally update branch'

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61512 [ skip ] triggered by Bot. Commit: 43b4ca4 Link to invocation

@tensorrt-cicd

Copy link
Copy Markdown
Collaborator

PR_Github #61512 [ skip ] completed with state SUCCESS. Commit: 43b4ca4
Skipping testing for commit 43b4ca4

Link to invocation

@mingyangHao
mingyangHao merged commit c1f78d9 into NVIDIA:main Jul 24, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants