论文部分内容阅读
大型稀疏线性方程组求解是科学和工程计算中的一个基础共性问题,由于它所耗费的时间在整个计算时间中占有很大的比重,从而快速求解线性方程组成为高效数值模拟的关键。近年来,图形处理器GPU得到了迅速的发展,已经成为高度并行的协处理器,特别适合于计算密集型、高度并行的计算。如今,越来越多的高性能计算机在向具有协处理器的异构方向发展,面向异构并行机开发高效的并行算法具有重要的意义。 Krylov子空间方法是常用的解大型稀疏线性方程组的迭代法,稀疏矩阵向量乘(SpMV)是Krylov子空间方法中影响性能的最关键的基本运算之一,本文首先关注的是GPU上SpMV的高效求解。对于一般矩阵,提出了一种新的稀疏矩阵存储格式BiELL——基于二分法的Ellpack格式,这种格式可以更好地做到负载均衡。类似于BiELL格式的构造,本文还提出了基于二分法的JAD格式(BiJAD)。数值试验表明与已有的格式相比,BiELL和BiJAD格式在GPU上可以得到更高的性能,特别是对各行非零元素个数差异较大的矩阵。 接着我们将BiELL格式和BiJAD格式的SpMV应用于Krylov子空间方法中,得到类似的结论,即对于大多数不规则矩阵,基于BiELL和BiJAD格式的解法器的性能优于基于其他格式的。并完成了Neumann多项式预处理程序,通过数值试验,调整参数来加速收敛,结果表明当多项式次数取奇数时,可以明显的改进收敛性,且考察了最优多项式次数的选择;与ILUT/IC预处理技术相比,多项式预处理的加速效果显著。 最后对用五点差分离散Poisson方程得到的线性方程组,在异构并行机上用共轭梯度算法求解,与只用CPU的并行计算相比,迭代时间明显减少。在实现SpMV时,运用计算与通信重叠技术,即先在CPU间发送数据,然后GPU上计算内点,同时CPU接收数据并计算边界点,数值试验表明程序性能有所提高。