[#19362][fix] Name the act fusion in the skip reason - #19448
100milliongold wants to merge 3 commits into
Conversation
test_cute_dsl_nvfp4 and its 4-GPU variant skip on anything other than SM 100
or 103 with:
CuTe DSL blockscaling mm supports SM 100 and 103 only
That reads as though CuTe DSL blockscaling matmul as a whole stops at SM 103,
which is no longer where the line is. NVIDIA#18761 and NVIDIA#18765 added SM107 CuTe DSL
dense GEMM and BMM ops. What these two tests need and do not have is the
NVFP4 GEMM with fused SwiGLU, gated separately in cute_dsl_custom_ops.py:
CuteDSL NVFP4 SwiGLU backend requires SM 100 (B200) or SM 103 (B300)
CuteDSL NVFP4 SwiGLU FP4Out requires SM 100 or SM 103
Say that instead. The docstrings on both tests already describe them as
"GEMM+SwiGLU fusion for shared experts", so the message now agrees with them.
This is the second of the two options in NVIDIA#19362 and changes no behaviour: the
same host states skip, for the same reason, with the reason stated accurately.
Porting the act-fusion variants to SM107 is the other option and is not this.
Signed-off-by: 김재억 <gadian88@gmail.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: NVIDIA/TensorRT-LLM/.coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review. WalkthroughBoth CuTe DSL NVFP4 test skip messages now identify NVFP4 GEMM+SwiGLU activation fusion as the SM100/SM103-only feature. The architecture checks are unchanged. ChangesNVFP4 skip message clarification
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~3 minutes Change: Other Suggested reviewers: Merge Risk: ⚪ Minimal · up to The tests retain their existing hardware gates and now report a more specific reason when those gates skip them. No merge-blocking risk was identified. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
brnguyen2
left a comment
There was a problem hiding this comment.
Approving — the comments below are optional touch-ups, not blockers.
Checked the gates: the act-fusion ops (cute_dsl_custom_ops.py:1778, :2310) are SM 100/103 independently of the dense GEMM/BMM path, so the new wording is the accurate one. Both old occurrences are gone.
One thing the message leaves out: these tests also set moe_config=MoeConfig(backend="CUTEDSL"), which is separately restricted to SM 100/103 (see the {moe_backend} backend supports SM 100 and 103 only skips elsewhere in this file). Both restrictions happen to be the same SM set today, so nothing misleads — but if the MoE backend ever diverges, the skip reason will name the wrong half again. Optional: "CuTe DSL NVFP4 GEMM+SwiGLU act fusion and CUTEDSL MoE backend support SM 100 and 103 only".
(The CodeRabbit summary claiming this diff only reformats imports is wrong; the diff does what the description says.)
|
Automatically added "ci: full pre-merge approved" because this PR has satisfied the required GitHub review approvals. Unresolved review conversations and other required checks remain independent merge requirements. |
|
Generated by an AI-assisted triage bot; please correct any mistaken assumptions. Your updated messages make it clearer why these two tests skip on other GPUs, without suggesting that all CuTe DSL blockscaling matmul is unsupported there. Because the same tests still skip under the same conditions, the demonstrated benefit is limited to clearer reporting. Based on the assessment above, we're giving this PR lower review priority for now and adding A practical benefit beyond clarifying the skip reason, such as a change that restores test execution or coverage, would warrant reconsideration. You're welcome to reply, update the PR description, or request maintainer review; a code change is not necessarily required. If there is no further activity for 14 days, this PR will be automatically closed. |
Both tests also run with MoeConfig(backend="CUTEDSL"), which is restricted
to SM 100/103 independently of the act-fusion GEMM (see the
"{moe_backend} backend supports SM 100 and 103 only" skips elsewhere in
this file). The two restrictions cover the same SM set today, but if they
ever diverge the skip reason would again name only half of the story.
Name both, as suggested in review.
Signed-off-by: 김재억 <gadian88@gmail.com>
|
Folded in @brnguyen2's suggestion (eb66cfc): the skip reason now names both restrictions these tests hit, the act-fusion GEMM and the CUTEDSL MoE backend. The description is updated to match. On the triage assessment: the scope is intentional. This implements the second option @farazkh80 asked for in #19362 ("keep the SM100/103 gate and make the skip reason ... say that the SwiGLU fusion is the missing piece"). The kernel port that would restore SM107 coverage is the other option, and it belongs with the owners of #18761/#18765. @mzweilz @schetlur-nv @ZhanruiSunCh, could one of you take a look when you have a moment? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
The previous commit said the CUTEDSL MoE backend supports SM 100 and 103
only. It does not: CuteDslFusedMoE accepts NVFP4 on SM 107 when Rubin
support in CuTe DSL is present ("NVFP4 - SM in {100, 103, 107}" in
fused_moe_cute_dsl.py). The SM 100/103 gate in these two tests is
justified by the NVFP4 GEMM+SwiGLU act fusion alone, which raises on any
other SM.
The "{moe_backend} backend supports SM 100 and 103 only" skips elsewhere
in this file are test-level gates, not the backend contract, so they were
the wrong evidence for naming the backend here.
Restore the wording from the first commit.
Signed-off-by: 김재억 <gadian88@gmail.com>
|
@brnguyen2 I've taken the MoE-backend half back out of the skip reason in abb4b19; the message again names only the act fusion. The semantic check above is right. The SM 100/103 gate in these two tests is carried by the NVFP4 GEMM+SwiGLU act fusion alone, which raises on any other SM (cute_dsl_custom_ops.py#L1776-L1778). The description is updated to match. Whether the test-level Checked on the new head: |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Semantic conflict reviewThe verdict of record is the Latest recorded state: No semantic conflict found (best effort) for head Best-effort AI judgment for the recorded revisions. PASS, FAIL and INCONCLUSIVE may be incomplete or incorrect. PR authors and reviewers should independently verify the evidence and relevant behavior. This semantic review and its status/workflow are advisory, not required merge checks under current repository rules; other merge requirements still apply. Advisory status does not make a confirmed defect safe to ignore.
Processed request and reply comments are minimized to reduce timeline noise; they remain expandable for audit. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
LarryXFly
left a comment
There was a problem hiding this comment.
QA review of abb4b19: approved.
The patch changes only the two pytest.skip reason strings. Both full files parse, and their ASTs are identical after normalizing those two string constants. Test selectors, hardware gates, configuration, and assertions are unchanged. The dense NVFP4 GEMM+SwiGLU BF16 and FP4Out ops independently retain their SM100/SM103 gates, so the revised reasons accurately identify the restriction relevant to these shared-expert tests.
Non-blocking wording refinement: adding "dense" or "for shared experts" would distinguish this path from Rubin grouped MoE activation fusion. CUTEDSL MoE should not be described as universally SM100/SM103-only, since its NVFP4 eligibility includes SM107 with Rubin support and other eligibility conditions.
No GPU integration tests were run in this review. Static verification is sufficient for this diagnostic-only change; this approval does not establish numerical-test results or additional SM107 coverage. Required repository CI checks still apply.
Addresses the second option in #19362.
Problem
test_cute_dsl_nvfp4andtest_cute_dsl_nvfp4_4gpusskip on anything other than SM 100 or 103 with:That reads as though CuTe DSL blockscaling matmul as a whole stops at SM 103. It no longer does: #18761 and #18765 added SM107 CuTe DSL dense GEMM and BMM ops, with their own
*_rubintest files. What these two tests need and do not have is the NVFP4 GEMM with fused SwiGLU, which is gated separately incute_dsl_custom_ops.py:Someone reading the skip on an SM107 run is pointed at the wrong thing.
Change
Two sites, the same string, no behaviour change: the same host states skip, for the same reason, with the reason stated accurately. Both docstrings already describe these tests as "GEMM+SwiGLU fusion for shared experts", so the message now agrees with them.
The message names only the act fusion. An intermediate revision also named the
CUTEDSLMoE backend, following the{moe_backend} backend supports SM 100 and 103 onlyskips elsewhere in this file, but those are test-level gates rather than the backend contract:CuteDslFusedMoEaccepts NVFP4 on SM 107 when Rubin support in CuTe DSL is present, so that wording was dropped again. The SM 100/103 gate in these two tests is carried by the act fusion alone.I kept the message self-describing rather than linking the issue, since the skips in this file reference
https://nvbugs/...and not GitHub issue numbers.Verification
grepfinds exactly the two occurrences of the old string in the repository; both are changed.yapf --style pyproject.toml -d(v0.43.0, the version pinned in.pre-commit-config.yaml) reports no diff on the file.What this is not
This is the reporting half of #19362. Porting the NVFP4 SwiGLU and FP4Out act-fusion GEMMs to SM107 is the other option there, and it is not this change: #18761 and #18765 added roughly 4,400 lines of SM107-specific kernels and dispatch between them, so that work belongs with whoever owns those kernels. I have not touched any gate.
Dev Engineer Review
The two NVFP4 skip messages now identify the NVFP4 GEMM+SwiGLU act fusion as the operation limited to SM100 and SM103. The hardware conditions remain unchanged. The file also has import formatting changes and two string literals changed to docstrings; no functional impact from these edits is evident.
QA Engineer Review
The changed file is
tests/integration/defs/accuracy/test_llm_api_pytorch.py. The two existing test functions keep their selectors and skip conditions; only their skip messages change. No test-list files changed, and no test execution results were provided. Coverage verdict: needs follow-up.Per-File QA Perspective
tests/integration/defs/accuracy/test_llm_api_pytorch.py: The NVFP4 integration tests cover GEMM+SwiGLU act fusion and retain their SM100/SM103 hardware gate. No test-list changes were made; the supplied list search does not establish whether these specific test functions are listed.