viable/strict/1787680605: [inductor] Vendor and adapt QuACK symmetric GEMM (#194177)
PyTorch 在 viable/strict/1787680605 版本中合入了 PR #194177,将 QuACK 对称 GEMM 内核从上游提交 99bd7973bf3dc6db40961e413d4bdfea6c6fee3e 引入并适配到 PyTorch 运行时接口。该内核利用对称矩阵 X @ X.T 的性质,仅计算一个三角形并将结果写入两个对称位置,支持连续 FP16 和 BF16 矩阵、同质批次以及可选的对称 C epilogue。内核由 GemmSm100 tensor-core mainloop 和 GemmSymmetricMixin 组成,使用 TriangularTileScheduler 仅分配对角线一侧的 tile,SM100 TMA、MMA、流水线和集群实现保持不变。
Development
- First Reportviable/strict/1787680605: [inductor] Vendor and adapt QuACK symmetric GEMM (#194177)PyTorch Core
- Current AssessmentPyTorch 引入对称 GEMM 内核表明,针对特定矩阵结构的优化正在成为深度学习框架的常规能力。这反映了行业对计算效率的持续关注,尤其是在训练和推理成本压力下。对称 GEMM 的优化可能影响依赖矩阵乘法的应用,如 Transformer 模型。Agent Pulse · analysis
PyTorch 在 viable/strict/1787680605 版本中合入了 PR #194177,将 QuACK 对称 GEMM 内核从上游提交 99bd7973bf3dc6db40961e413d4bdfea6c6fee3e 引入并适配到 PyTorch 运行时接口。该内核利用对称矩阵 X @ X.T 的性质,仅计算一个三角形并将结果写入两个对称位置,支持连续 FP16 和 BF16 矩阵、同质批次以及可选的对称 C epilogue。内核由 GemmSm100 tensor-core mainloop 和 GemmSymmetricMixin 组成,使用 TriangularTileScheduler 仅分配对角线一侧的 tile,SM100 TMA、MMA、流水线和集群实现保持不变。
该 PR 展示了在 PyTorch 中复用现有 QuACK 构建块(GemmSm100 mainloop 和 GemmSymmetricMixin)来构建对称 GEMM 内核,而非重新实现 mainloop。TriangularTileScheduler 仅调度对角线一侧的 tile,将结果写入两个对称位置,从而将计算量减半。这为对称矩阵乘法(如自注意力中的 QK^T)提供了优化路径,可能降低计算成本。
PyTorch 引入对称 GEMM 内核表明,针对特定矩阵结构的优化正在成为深度学习框架的常规能力。这反映了行业对计算效率的持续关注,尤其是在训练和推理成本压力下。对称 GEMM 的优化可能影响依赖矩阵乘法的应用,如 Transformer 模型。
对称 GEMM 内核的引入可能降低 PyTorch 中对称矩阵乘法的计算成本,从而减少训练和推理的 GPU 时间,对使用 PyTorch 的 AI 公司具有潜在的成本节约价值。这也有助于 PyTorch 保持竞争力,吸引更多用户。
未来可关注该内核在 PyTorch 中的实际性能表现,以及是否会被扩展到更多数据类型或非连续布局。此外,QuACK 的其他内核(如非对称 GEMM)也可能被逐步引入 PyTorch,进一步丰富优化选项。