论文部分内容阅读
非连续变形分析已被广泛应用于岩体稳定性分析、隧道修建、边坡开挖、爆破等多种工程领域。该方法严格遵守数学与力学原理,可模拟块体运动的大位移与大变形,是一种针对岩石非连续介质受力运动分析的重要数值方法。但非连续变形分析方法面对大型工程问题时,计算效率较低。本文针对非连续变形分析计算效率提升的客观需求,基于具有强大并行运算能力的图形处理器(Graphic Processing Unit,GPU),研究非连续变形分析的并行方法,解决非连续变形分析的效率瓶颈。 本文的主要研究内容包括非连续变形分析并行接触检测方法、并行稀疏线性方程组求解方法及并行数据依赖性与线程分支解决方法。主要创新性工作如下: 1.提出了基于矩阵模型与数据分类的并行接触检测算法 针对接触检测计算的不同阶段,本文基于矩阵模型与数据分类提出了高效的并行接触检测算法。在接触粗检测阶段,建立了矩阵与向量接触模型,对接触矩阵进行重构与子矩阵划分,提出了一种预处理代价低、线程负载平衡及数据复用性高的并行粗检测方法;在接触细检测阶段,提出了对被接触顶点重聚集与分块的距离检测方法,解决了并行负载不平衡与数据复用性低的问题,同时提出了接触对数据预分类方法,基于接触顶点距离与角度关系进行预分类,改善了并行线程分支问题;在接触转移阶段,利用并行分块查找算法实现了接触转移。实际测试表明本文提出的并行接触检测算法在非连续变形分析中可获得百倍的加速比。 2.提出了基于带预处理共轭梯度法的稀疏线性方程组并行求解方法 结合非连续变形分析方程组求解的迭代机制,本文提出了迭代过程中主机端与设备端数据通信的优化方法,优化前每一次迭代均需回传一个双精度浮点数,优化后只需在预估的数十次或者百次迭代后回传一个整形数据。结合非连续变形分析的计算机制与总体刚度矩阵特性,提出了针对非连续变形分析的共轭梯度法预处理因子选择方法,从理论分析与实际测试两个角度论证了方法的正确性。结合刚度矩阵天然对称分块的特性,提出了两种并行稀疏矩阵向量乘方法,一种方法基于刚度子矩阵分割,解决了子矩阵规模与GPU线程束大小不匹配的问题;另一种方法充分利用了总体刚度矩阵对称的特性,上三角子矩阵被读取后作为上三角部分与下三角的转置进行两次计算,由此将刚度矩阵数据的存储与读取量降低了一半。两种方法的计算效率均优于CUDA稀疏矩阵算法库(cuSPARSE)提供的分块稀疏矩阵向量乘算法,前者可达1.48~1.77倍,后者可达2.65~3.27倍。实际测试表明本文提出的非连续变形分析方程组并行求解方法最高可获得65.73倍的加速比。 3.提出了基于并行扫描与基数排序的数据依赖性与线程分支解决方法 本文将非连续变形分析中存在的数据依赖性归结为数据聚合、多维数组索引计算及数据写冲突三点,并提出了基于并行扫描与基数排序的解决方法。采用shuffle指令进行优化计算中的归约操作,分别获得了1.6倍与1.8倍的加速比。针对线程分支问题,在粗粒度的层面上,采用数据预分类的方法,对计算前分支标示已定的数据进行分类,避免这些可预见的线程分支。在细粒度的层面上,采用线程分支计算转换与分支重构的方法,将简单的分支通过异或运算转换为计算,为复杂的分支引入额外的控制元素,合并各分支的计算指令,将线程分支限制于寄存器的写操作。粗粒度与细粒度层面优化方法的结合使用可有效改善非连续变形分析存在的线程分支问题。 4.完成了面向实际工程算例的并行非连续变形分析数值实验与验证 本文实现了完全基于GPU并行的二维非连续变形分析与基于GPU并行粗检测的三维非连续变形分析,并利用解析解算例验证了并行算法的正确性,同时利用三个实际工程大规模算例测试了并行实现的计算结果与效率:其中基于GPU并行的二维非连续变形分析在边坡稳定性与动态落石分析算例中分别获得了56.63与8.4倍的加速比;三维非连续变形分析的并行粗检测在金字塔算例中获得了千倍的加速比。 本文面向非连续变形分析在工程应用中的效率需求,从接触检测、稀疏线性方程组求解及数据依赖性与线程分支处理三个方面,为非连续变形分析的GPU并行提供了全面的算法支持与解决方案,有效提升了非连续变形分析的计算效率,满足了实际应用的需求,可促进非连续变形分析方法的进一步发展与应用。