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