摘要
针对三维直流电法正演模拟中大型稀疏线性方程组求解,在GPU(Graphic Process Unit)集群上实现了并行预处理共轭梯度(conjugate gradient,CG)算法。矩阵预处理使用可并行的对称逐次超松弛近似逆预处理(symmetric successive over relaxation approximate inverse preconditioner,SSORAI),与传统的对称逐次超松弛预处理(symmetric successive over relaxation preconditioner,SSOR)相比,避免了串行的三角矩阵回代求解过程,增加了并行性。在GPU集群通信上,使用支持跨节点GPU-GPU直接通信的MVAPICH2,省去了GPU间通信时GPU到CPU的数据中转过程。为了提高数据局部性和重复性,使用RCM算法(reverse Cuthill-Mckee algorithm)对预处理后的线性方程组进行带宽缩减,并利用GPU的计算通信重叠,极大地缩减了计算时间。实验结果表明,这里提出的方法在GPU集群上有很好的可扩展性。同时,程序基于CUDA FORTRAN语言实现,可以容易地与现有FORTRAN程序相结合,提高程序的性能。