Prhub

#20887 CUTLASS FP8 Blockwise GEMM improvement of SM120

原始 PR 作者 b8zhong 合并时间 2026-03-22 17:55 文件变更 1 提交数 1 评论 3 代码增减 +123 / -66

执行摘要

优化 SM120 FP8 GEMM kernel,通过 pingpong schedule 提升小 M 性能。

根据PR body,SM120 fp8 blockwise GEMM kernel使用KernelScheduleAuto作为schedule,在SM120上只选择cooperative kernel,导致小M时性能不佳。pingpong schedule相比cooperative对于小M快约2倍,因此需要优化以利用这一性能机会。

建议技术管理者关注此PR,因为它展示了性能优化的实际收益和硬件特定调优。工程师值得精读代码,学习基于运行时条件的schedule选择策略和CUTLASS集成最佳实践。

讨论亮点

review过程中无实质性技术讨论,仅由BBuf批准。作者在issue评论中提供了NCU性能报告,进一步验证了性能改进,如pingpong schedule相比cooperative schedule性能提升约一倍。

实现拆解

修改位于sgl-kernel/csrc/gemm/fp8_blockwise_gemm_kernel.cu的launch_sm120_fp8_blockwise_scaled_mm函数。关键改动包括:添加kCanUsePingpong检查;根据M大小(M≤64)选择pingpong路径使用KernelTmaWarpSpecializedBlockwisePingpongSm120,否则使用cooperative路径;重构kernel setup以提高代码清晰度。

文件 模块 状态 重要度
sgl-kernel/csrc/gemm/fp8_blockwise_gemm_kernel.cu sgl-kernel/gemm modified 9.0

关键符号

launch_sm120_fp8_blockwise_scaled_mm

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

性能验证 性能

作者 b8zhong 在 issue 评论中分享了 NCU 报告,显示 pingpong schedule 相比 cooperative schedule 在 SM120 上性能提升约一倍。

结论:性能数据支持 PR 变更的有效性。 · 已解决

CI 执行 other

BBuf 评论 '/tag-and-rerun-ci again',指示重新运行 CI 测试以确保变更稳定性。

结论:CI 通过,PR 被批准合并。 · 已解决

风险与影响

风险点包括:对于M>64使用cooperative路径以避免CUTLASS库问题,但可能存在未解决的准确性隐患;新添加的pingpong路径可能引入回归或兼容性问题,尤其是在不同硬件或配置下;代码变更集中在核心GEMM内核,缺乏充分的单元测试覆盖。

对用户影响:在SM120 GPU上运行小M形状的FP8 GEMM时,推理速度显著提升,如基准测试显示速度从34.14 token/s提升至52.11 token/s。系统层面,优化了内核调度,可能减少延迟和提高吞吐量。团队需关注CUTLASS依赖的潜在问题。

潜在 CUTLASS 库兼容性问题 新代码路径测试覆盖不足 性能回归风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论