AGENT PULSESJCPal Special EditionAI 行业证据与趋势
2026年9月7日 · PyTorch

viable/strict/1788773762: [MPS] Add naive triangular_solve for complex numbers (#195861)

发生了什么

PyTorch 的 MPS 后端新增了针对复数(complex64)的 naive triangular_solve 实现,因为 MPSMatrixSolveTriangular 仅支持浮点数。该实现添加了共轭标志:triangular_solve/solve_triangular 使用普通转置(transpose=True 表示 A^T,已与 CPU 验证),而 _cholesky_solve_helper_mps 在其转置求解中使用伴随(A^H),这对复数 cholesky_solve 是必需的,对实数则无操作。同时修复了非连续输出处理及输入输出必须在 MPS 上的检查,并移除了若干 xfails/backward_dtypesIfMPS。该 PR 由 Claude (Anthropic) 辅助编写,Claude Opus 4.8 共同作者。

EVENT STORY

发展脉络

  1. 首次出现viable/strict/1788773762: [MPS] Add naive triangular_solve for complex numbers (#195861)PyTorch Core
  2. 行业反馈trunk/a7a0e15894ee2c285d5065c3672291a19b0a8091: [MPS] Add naive triangular_solve for complex numbers (#195861)PyTorch Core
  3. 当前判断PyTorch 持续扩展 MPS 后端的复数支持,表明 Apple Silicon 在 AI 训练和推理中的重要性日益增加。通过自定义 Metal kernel 填补 MPSMatrixSolveTriangular 的空白,反映了框架层面对硬件特定优化的需求。Agent Pulse · 分析
改变了什么

PyTorch 的 MPS 后端新增了针对复数(complex64)的 naive triangular_solve 实现,因为 MPSMatrixSolveTriangular 仅支持浮点数。该实现添加了共轭标志:triangular_solve/solve_triangular 使用普通转置(transpose=True 表示 A^T,已与 CPU 验证),而 _cholesky_solve_helper_mps 在其转置求解中使用伴随(A^H),这对复数 cholesky_solve 是必需的,对实数则无操作。同时修复了非连续输出处理及输入输出必须在 MPS 上的检查,并移除了若干 xfails/backward_dtypesIfMPS。该 PR 由 Claude (Anthropic) 辅助编写,Claude Opus 4.8 共同作者。

能力边界怎么变了

该实现为 MPS 后端添加了复数 triangular_solve 支持,通过自定义 Metal kernel 绕过 MPSMatrixSolveTriangular 仅支持浮点的限制。关键设计是引入共轭标志:triangular_solve 使用普通转置(A^T),而 cholesky_solve 的辅助函数使用伴随(A^H),这确保了复数 cholesky_solve 的正确性。此外,修复了非连续输出的处理,并强制输入输出在 MPS 上,移除了相关 xfails。

为什么重要

PyTorch 持续扩展 MPS 后端的复数支持,表明 Apple Silicon 在 AI 训练和推理中的重要性日益增加。通过自定义 Metal kernel 填补 MPSMatrixSolveTriangular 的空白,反映了框架层面对硬件特定优化的需求。

对谁有影响

该改进使 PyTorch 在 Apple Silicon 上支持更广泛的数值计算,特别是复数域,有利于科学计算和信号处理等领域的用户。同时,通过移除 xfails 和修复 bug,提升了 MPS 后端的稳定性和可用性,降低了开发者在 Mac 上进行 AI 开发的门槛。

接下来观察

后续可关注 PyTorch 是否将复数支持扩展到其他线性代数操作,以及是否会有更多自定义 Metal kernel 以提升 MPS 后端的完整性和性能。