论文部分内容阅读
近年来,伴随着显卡硬件技术的不断革新,GPU这种新的编程技术为高性能计算提供了一种全新的可能性。尤其是在科学计算领域,其强大的计算能力已经使部分计算任务获得几十甚至几百倍的加速比。在回顾现有GPU技术发展的基础上,本文着重研究GPU技术在计算流体力学中的并行加速方案及实现技巧。具体的,本文通过两个经典案例,方腔流和机翼翼型来阐述如何通过GPU来实现计算流体中的有限差分数值算法。总体上,本文可以分为以下几个部分:
文章初始部分详细介绍了通过有限差分方法求解NS方程的步骤,和以OpenCL和CUDA为代表的GPU编程框架模型。前一部分是对计算模型的描述。而GPU编程模型部分涉及GPU内存布局、执行模型、线程模型以及GPU线程的层次模型。之所以对这些内容进行详细描述是因为硬件知识对程序加速相当重要。为使程序获得最优的加速比,编程人员必须充分理解GPU的相关硬件结构。
本文的重点放在了通过有限差分和GPU硬件加速方腔流和机翼翼型求解的工作上。对于方腔流,本文使用了OpenCL和CUDA这两种最主流的GPU加速技术进行编程实践,在基于共享内存的GPU并行架构上通过区域分解技术将待差分点映射到GPU索引空间从而实现并行计算。对于机翼翼型,本文扩展了已有研究成果,通过多节点GPU的MPI+CUDA模式来实现CPU与GPU的同时并行化以提高程序的运行速度。同时文章还描述了数据传递和计算时会碰到的问题,并给出了GPU优化策略。为了使计算更具有普适型,本文最终基于现有算例构建了基于GPU的流体计算通用NS求解器。本文实验使用OpenCL和CUDA并行集群。对于方腔流加速研究,从实验结果可以看出,无论OpenCL或是CUDA,GPU加速都可以获得30-60倍的加速比,而不同平台的性能对比也为后续平台选择的工作积累了经验。对于机翼翼型问题,程序使用telsaC1060集群在基于消息传递的MPI接口上完成GPU之间的数据传递。实验结果发现随着问题规模的扩大,程序在多节点GPU上可实现5-29倍的加速比。