论文部分内容阅读
近年来,一种新的基于GPU(Graphics Processing Unit)的并行计算技术,随着图形快速渲染需求应运而生,备受工程界和学术界的关注。基于GPU异型架构发展新型的并行算法,已成为当前计算流体力学(CFD)领域研究的热点之一。本文紧扣这一并行算法发展的趋势,结合工程应用中经常遇到的Euler方程和Navier-Stokes方程三维复杂流动求解问题,开展了适合处理复杂几何外形的有限体积法和无网格算法的GPU并行化研究。先对显式格式网格方法的GPU并行化改造问题进行了研究。针对格点格式有限体积法,围绕并行计算任务划分、GPU线程结构和核函数(Kernel)构建以及数据存储结构构造等问题,开展了GPU并行化改造工作。具体根据有限体积法计算流程,提出了GPU并行任务划分的一般方法;再根据计算发生的位置对并行任务进行分类,并依此构建出与各自计算规模相适应的GPU线程结构和核函数。进一步为了提高核函数的数据访问效率,提出了适合GPU的格点格式有限体积法数据存储结构,该结构能较好地满足GPU内存合并访问要求。最后,用翼型和机翼典型绕流算例对发展的显式格式有限体积GPU并行算法进行了并行加速效率考核,取得了预期的效果。接着研究了隐式格式网格方法的GPU并行化改造问题。隐式格式固有的强数据依赖性不适合GPU线程运算数据独立性(Data Independency)的要求。本文针对这一瓶颈问题,提出了网格顶点着色分组方法。通过着色处理将网格顶点分为一系列颜色分组,使得每一分组内不同网格顶点的隐式计算相互独立。利用所提网格顶点着色分组方法,成功地对LU-SGS格式进行了GPU并行化改造,发展出适合GPU并行计算的LU-SGS隐式格式,并结合Euler方程和Navier-Stokes方程的求解,用典型绕流算例对发展的隐式格式有限体积GPU并行算法进行了考核运算。结果表明,如预期,发展的隐式格式GPU并行算法计算效率能进一步提升,相比显式格式能进一步提高2至4倍左右。最后开展了无网格方法的GPU并行化研究,致力于发展出无网格GPU并行算法。无网格方法计算区域的离散只涉及布点,具有灵活性而特别适合复杂外形复杂绕流问题的处理,但因其点云结构等特殊性,算法的GPU并行化在国内外还不多见。本文结合无网格点云结构特点,构建并行线程与无网格点云中心点之间的点映射关系,提出了基于这一点映射的无网格GPU并行化改造的实施方法。具体先结合Runge-Kutta格式,发展了显式格式无网格GPU并行算法;再在显式算法取得成功的基础上,开展了隐式无网格GPU并行算法的研究。结合无网格点云结构特点,提出了基于点云拓扑关系的点着色分组技术,成功地发展出隐式格式无网格GPU并行算法。接着对发展的算法开展了并行加速效率进一步提升的研究。具体在上述基于点映射的无网格GPU算法框架下,研究了核函数合并方法,因降低了总内存访问量,提高了整体计算效率;同时,针对不规则点云上GPU算法的计算效率相对较低的问题,提出了无网格点分层着色排序(Multi-Layered Point Reordering,MLPRO)方法,有效地提高了无网格点云卫星点的有序性,提高了GPU算法的并行加速效率。最后,基于所提算法,成功地研制了相应的无网格GPU计算程序,完成了对典型二维流动算例的考核验算,并成功地推广应用到了三维粘性流动问题的求解。所有算例都取得了GPU加速效果,相比单核CPU,显式算法GPU加速最多达85倍,隐式算法还可进一步提升2到5倍,同时算例也表明,所提核函数合并和MLPRO排序等措施也能显著提升算法效率。