如何通过CUDA使用cuSolver重复向前和向后求解?
最近我发明了一种新方法。新方法在CUDA(每秒20到40帧)上运行得非常完美,我已经成功地对它进行了测试。当我试图与旧方法进行比较时,问题就出现了。旧方法是在CPU上实现的。它首先进行LU分解A=LU,然后向前+向后运行步骤来求解(LU)x=b。旧方法非常好的一点是,A没有变化,因此LU分解只能进行一次,开销只是前向+后向求解A是稀疏的和对称正定的。(我认为这在许多问题中是一种相当普遍的做法,例如,固定域中的流体模拟。) 为了公平比较,我想在GPU上实现旧方法。但是我在cuSolver或cuSparse中没有发现任何稀疏LU分解。我应该用其他图书馆来计算吗?我应该使用cusolverRfSolve()进行求解吗?如果是这样,为什么不输入L和U,而将P和Q输入此函数?有没有类似于我尝试做的工作示例如何通过CUDA使用cuSolver重复向前和向后求解?,cuda,gpu,cusolver,Cuda,Gpu,Cusolver,最近我发明了一种新方法。新方法在CUDA(每秒20到40帧)上运行得非常完美,我已经成功地对它进行了测试。当我试图与旧方法进行比较时,问题就出现了。旧方法是在CPU上实现的。它首先进行LU分解A=LU,然后向前+向后运行步骤来求解(LU)x=b。旧方法非常好的一点是,A没有变化,因此LU分解只能进行一次,开销只是前向+后向求解A是稀疏的和对称正定的。(我认为这在许多问题中是一种相当普遍的做法,例如,固定域中的流体模拟。) 为了公平比较,我想在GPU上实现旧方法。但是我在cuSolver或cuSp
即使旧方法在GPU上运行较慢,我也希望看到它,这使我的新方法非常有用。从文档中可以看出,
cusolverRfSolve
的预期用途需要以下调用:
cusolverRfCreate
cusolverRfSetup[主机/设备]