[GG] build: pin CUTLASS DSL 4.5.3 for SM120 W4A16 - #128
Conversation
📝 WalkthroughWalkthroughThe CUDA requirements pin ChangesCUDA dependency update
Estimated code review effort: 1 (Trivial) | ~2 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
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 `@requirements/cuda.txt`:
- Around line 27-29: Update the CUDA 12 dependency rewrite in the build script
around its nvidia-cutlass-dsl matching logic so it recognizes the pinned ==4.5.3
requirement and removes the [cu13] extra consistently with the Dockerfile and
setup.py paths. Match the package independently of the version operator rather
than reverting the exact pin.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 5e7626ea-f46c-40b7-86a2-088e924cf00f
📒 Files selected for processing (1)
requirements/cuda.txt
| # 4.6.0 spills the SM120 B12X W4A16 prefill kernel (255 registers and a | ||
| # 256-byte stack per thread); 4.5.3 restores spill-free code generation. | ||
| nvidia-cutlass-dsl[cu13]==4.5.3 |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Update the CUDA 12 CI selector rewrite for the exact pin.
This change from a >= requirement to ==4.5.3 means the rewrite in .github/workflows/scripts/build.sh:11-16, which only matches nvidia-cutlass-dsl[cu13]>=, no longer strips [cu13]. CUDA 12 CI therefore resolves this differently from docker/Dockerfile:245-267 and setup.py:1080-1103.
Make the CI rewrite match the package name independently of the version operator, or retain a requirement syntax compatible with that script.
🤖 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 `@requirements/cuda.txt` around lines 27 - 29, Update the CUDA 12 dependency
rewrite in the build script around its nvidia-cutlass-dsl matching logic so it
recognizes the pinned ==4.5.3 requirement and removes the [cu13] extra
consistently with the Dockerfile and setup.py paths. Match the package
independently of the version operator rather than reverting the exact pin.
e53b92f to
7ea567a
Compare
Summary
Why
CUTLASS DSL 4.6.0 regresses the B12X W4A16 fused-MoE prefill signature on
SM120. With the same vLLM source, B12X source, model, launcher, and benchmark:
The generated kernel changes from
REG:242 STACK:0under 4.5.3 toREG:255 STACK:256under 4.6.0. A rank-0 Torch trace attributes the prefilldelta to
W4A16FusedMoeKernel; attention and indexer timings do not show thesame regression. Decode remains within measurement noise.
The 4.5.3 package is API-compatible with this branch and restores the previous
4.5.2 performance. The Docker build separately guarantees that the CUDA 13
wheel is installed after the overlapping base wheel.
Keeping this pin in
requirements/cuda.txt, rather than overriding only thecontainer, is necessary because the generated vLLM wheel otherwise declares
an exact 4.6.0 requirement and fails
pip checkwith the validated runtime.Validation
cutlass.cute.nvgpu.warp.MmaMXF8Oppresent87.18 tok/s5912 / 5909 / 5906, median5909 tok/s92.18 tok/s5915 / 5909 / 5907, median5909 tok/sSummary by CodeRabbit