2

我正在从事 CFD 项目,并且正在使用新的 CUDA 5 库“cusparse”来求解线性方程组。我测试了示例代码“conjugateGradientPrecond”。结果表明,使用 ILU 的预处理梯度比没有预处理的共轭梯度花费更多的时间来获得最终答案。前一种算法确实需要较少的迭代,但在“cusparseScsrsv_solve”上需要很多时间,因此整体时间较长。

这是我的问题,是否有任何其他预处理共轭梯度可以大大减少迭代,同时不包括任何耗时的函数,如“cusparseScsrsv_solve”?

4

1 回答 1

1

ILU0/ILUT、IC0/ICT 等预处理技术需要在 CG 的每次迭代中求解三角系统两次(预处理矩阵的上下分解)。从本质上讲,求解三角系统是一个顺序问题,但对于稀疏矩阵的情况,可以执行一些分析阶段以找到某种程度的并行化(请参阅这篇文章)。一般来说,对于稀疏系统,无法提供最好的预处理技术,但简单的对角线(也称为 Jacobi)预处理会产生可忽略的开销,并为 GPU 实现提供高水平的并行化。

于 2013-08-16T17:54:36.210 回答