论文部分内容阅读
PCG算法的并行化对许多研究问题有重要意义,可通过提高求解方程组的效率来提高数值模拟的效率。为了科学使用地下水资源往往需要分析预测其流动规律。随着研究的不断发展,地下水数值模拟程序MODFLOW已经不能很好的对大规模实验问题进行模拟分析。为了提高模拟效率,本文主要研究在多GPU环境下对PCG算法的并行化,并将其应用于MODFLOW中,从而实现MODFLOW的并行模拟。本文将PCG算法中的线性代数运算实现为基于CUDA的核函数,重点研究DIA格式并实现了较为高效的SpMV核函数。为了在单节点多GPU环境下对PCG并行化,计算任务被均等划分并分别求解,求解过程中GPU间数据传输是性能瓶颈,为此本文通过减少非必要的数据传输和将SpMV计算与传输重叠的方法来减少数据传输开销,提高PCG的加速比。在单节点环境中使用6个GPU的条件下,PCG的加速比随着GPU数量的增多和数据规模的增大而得到明显提高,最高达到36.3。在多节点环境中,通过MPI创建多个进程来通过多个GPU求解方程组,本文通过合理的数据传输模型来统一节点内和节点间数据传输的差异性,使其具有可移植性和高效性。在使用2个节点4个GPU的条件下,实验数据的最大加速比为17.3,小于单节点环境下的加速比。为了对MODFLOW并行模拟,本文分析了其模块化结构,在单节点系统上设计了OpenMP+CUDA的并行模拟流程,将其中构建方程组和求解方程组模块重新设计,实现计算任务划分和多个线程分别调用PCG求解器来完成模拟计算。在单节点环境的实验结果表明在使用6个GPU条件下,MODFLOW最大达到了11的加速比,小于并行化PCG的加速比,其原因是MODFLOW中可并行化部分的比例降低,导致加速比的减小。结果还表明稳态模拟类型的加速比较大,因为其额外开销更少。为了研究MODFLOW的可扩展性,本文结合多节点环境设计了MPI+CUDA的并行模拟流程。实验结果表明在使用2个节点4个GPU条件下,并行化MODFLOW最高达到了8.5的加速比,表明其具有一定的可扩展性。在多节点环境下,节点间数据传输的低带宽是性能的瓶颈,导致加速比小于相同条件下单节点环境中的加速比。