Skip to content

Conversation

@LCStayingdullCircuit
Copy link
Contributor

@LCStayingdullCircuit LCStayingdullCircuit commented Aug 2, 2025

PR Category

Execute Infrastructure

PR Types

Bug fixes

Description

1. 背景

Cholesky 分解是一种将正定方阵 A 分解为下三角矩阵 L 与其转置 L' 乘积(A = LL')的常用方法。

2. 存在的问题

旧版的 cholesky_kernel 实现主要存在以下两个问题:

  • cuSOLVER API 限制:由于调用的 API 限制,无法处理元素数量巨大的 Tensor 矩阵。
  • 报错信息模糊:错误提示不够清晰,容易误导问题排查方向。

3. 解决方案

针对上述问题,本次提交进行了如下修改:

  • 升级 cuSOLVER API

    • 问题详情:原先调用的 cusolverDnSpotrf API 中,其工作空间大小参数 Lworkint 类型。当矩阵元素总数超过 int 类型的最大值时,会发生溢出,导致计算失败。
    • 修改方案:将 API 调用更新为 cusolverDnXpotrf(),该 API 支持更大的工作空间。同时,在 cholesky_grad 中也做了对应的兼容性修改,从而可以处理更大规模的矩阵。
  • 优化报错逻辑

    • 问题详情:旧实现中,只要 info[i] 不为零,就笼统地报告为“主子式非正定”的错误。这导致当处理大矩阵因 API 调用失败时,用户看到的报错信息仍然是关于矩阵正定性的,从而产生误导。
    • 修改方案:根据 cuSOLVER 官方文档,对 info 的不同返回值进行更准确、具体的错误提示。

4. 实验结果

image

@paddle-bot
Copy link

paddle-bot bot commented Aug 2, 2025

你的PR提交成功,感谢你对开源项目的贡献!
请关注后续CI自动化测试结果,详情请参考Paddle-CI手册
Your PR has been submitted. Thanks for your contribution!
Please wait for the result of CI firstly. See Paddle CI Manual for details.

@lshpku lshpku merged commit ee2d0e5 into PaddlePaddle:develop Aug 4, 2025
73 of 74 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants