论文部分内容阅读
随着数值模拟在科学计算和工程应用中的地位突出及普遍使用,许多行业及领域对数值模拟的软件应用和开发都产生了强烈的需求,而线性系统的求解方法是数值模拟的核心。由于不同的问题得到特征各异的线性系统,在化学过程、热传导、电路模拟以及核物理模拟等许多领域产生的线性系统大多具有稀疏特征。但是随着数据网格的复杂化和问题域边界的不规则性,有时候产生的线性系统的稀疏模式较为多样。随着问题规模的扩大和模拟的精细化,要求解的线性系统的阶数越来越高,有的甚至达到百亿以上,对求解的性能提出了更高的要求。但是目前通用的求解算法很难满足如此高阶的稀疏线性系统的求解性能要求。 目前大规模异构计算系统由于其经济和高效性,已逐步成为各种数值模拟计算普遍选用的高性能计算平台。针对高阶稀疏线性系统的多样性,研究大规模稀疏矩阵的压缩存储方法和其核心运算SpMV在CPU+GPU异构平台上的快速并行算法,以及针对在科学计算和工程应用中广泛存在的准三对角和块三角稀疏线性系统,研究一种高性能并且具有较好鲁棒性的混合并行求解算法,并针对异构体系结构的特征,从数据划分、任务分配和协同编程等方面研究求解算法的异构并行化策略,以充分发挥异构计算系统的计算效率。 本文是在目前流行的CPU+GPU异构并行计算平台上如何提高稀疏线性系统的求解性能从以下4个方面展开研究。 1)针对稀疏线性方程组求解过程中的核心操作SpMV运算,构建一个能够定量描述和分析稀疏矩阵稀疏特征的数学模型,利用该数学模型可以结合计算环境的硬件参数配置来分析SpMV在CPU+GPU的异构并行计算平台的计算性能。通过对稀疏矩阵采用不同压缩格式在CPU+GPU异构计算平台上SpMV的计算性能分析和预测,选择一种最优的压缩格式来实现SpMV计算。在一定程度上解决SpMV由于其计算数据的不规则导致并行计算的效率不高,难以发挥异构并行计算性能的难题。 2)随着求解问题的规模的增大和精度的提高,产生的稀疏矩阵的规模也越来越大,采用单节点对SpMV进行并行计算难以满足其性能需求,对其进行分块,在多个处理器上进行并行计算尤为必要。因此针对异构处理器体系结构的差异,本文提供一个稀疏矩阵的分块策略,利用该策略能够把稀疏矩阵进行分割为不同块然后分配到GPU和多核CPU上执行,提高SpMV的计算性能。这种策略能够通过对稀疏矩阵的非零元素分布进行分析,从中提取稠密数据块,以减少数据的填充,因此能够适应不同类型的稀疏矩阵。并且提供的分块策略能够根据异构处理器的计算能力进行分块,实现异构处理器之间计算任务的均衡性,以充分利用其计算资源。 3)针对一种常见的稀疏线性系统——三对角线性系统,由于边界不规则的数据网格产生的三对角线性方程组并不规范,在对角线之外还存在一些离散点,这样会导致目前常用的求解算法的性能下降。本文针对准三对角线性方程组,提出了一种混合直接法和迭代法的求解算法,我们的方法需要更少的存储空间,在计算过程中,准对角矩阵可以分为三对角矩阵和对角线之外的稀疏矩阵,在迭代过程中,对三对角方程可以用直接方法得到精确解,从而提高整体迭代算法的收敛速度。此外,我们提出了一种改进的循环约化算法,使用分区策略可以把求解三对角方程组中计算的中间数据存储在GPU的共享内存中,从而显著降低内存访问延迟。通过理论分析和实验证明了算法的有效性和可扩展性。 4)针对另一种常见的块三对角线性系统,提出的一种混合分块求解算法,能够较好地利用块三角矩阵的分块构建并行计算的任务序列,充分利用GPU线程网格的并行计算特征,不但能够提高GPU计算核心的占用率,而且能够降低数据访问延时,能够解决求解此类方程组并行效率一直偏低的难题。该求解算法能够应用到云计算中心的资源调度处理中,对提高云计算中心的大规模资源调度性能有较大作用。