最近我开发了一种新方法。新方法与 CUDA(20 到 40FPS)完美配合,我已经成功地对其进行了测试。当我尝试与旧方法进行比较时,问题就来了。旧方法是在 CPU 上实现的。它首先进行 LU 分解A = LU,然后运行向前+向后的步骤来求解 ( LU ) x = b。旧方法的好处是A不会改变,所以 LU 分解只能进行一次,开销只是前向+后向求解。A是稀疏且对称的正定。(我相信这是在许多问题中相当普遍的做法,例如,固定域中的流体模拟。)
为了公平起见,我想在 GPU 上实现旧方法。但是我在 cuSolver 或 cuSparse 中没有发现任何稀疏的 LU 分解。我应该由其他一些库来计算它吗?我应该使用 cusolverRfSolve() 求解吗?如果是这样,为什么不输入L和U ,但输入P和Q?有没有类似于我正在尝试做的工作示例?
即使旧方法在 GPU 上运行速度较慢,我也很乐意看到它,这使我的新方法非常有用。