应能动学院 陶文铨院士邀请,美国UIUC的 Surya Pratap Vanka教授从9月22日至26日在我校讲学。Vanka教授是Computational fluid dynamics(CFD)领域内著名学者D. B. Spalding教授的学生。至今他已在CFD领域研究42年,由于在CFD中应用GPU取得的卓著成就,获得2012年ASME 的Freeman Scholar Award。他的主要工作目前集中在CFD领域中的Lattice Boltzmann Methods(LBM)、Parallel Computing & Graphics Processing Units(GPU)Computing、Large eddy simulations(LES) of turbulence和Multi-grid methods。
本实验室致力于CFD领域研究,承担国家自然科学基金重点项目 “能源与环境工程中的多尺度、跨尺度问题研究”。该课题中的计算量巨大,为此专门建立了可用于大规模、大计算量数值模拟研究的高性能计算集群。集群上有137个节点,2000个核,另有5个高性能GPU计算节点。为了推广集群的使用并提升集群使用效率,陶老师特意邀请Vanka教授此次前来就加速代码执行的问题做系列讲座,内容为采用GPU和Multigrid technique加速CFD计算。
如图1所示,立足于实验室已有的计算集群,本系列讲座涵盖加速代码执行的全部三个策略(图中的红字部分)。本次讲座内容如下:
1.2014-09-22 下午3点的主题为《Introduction to GPU》
第一次讲座中,Vanka教授给大家详细介绍了GPU的架构。以Nvidia公司的Kepler架构为例,深入浅出的对比了CPU架构与GPU架构的区别,GPU架构并行计算的特点,进而说明GPU辅助计算优势。尤其重点介绍了GPU中的流多处理器(SMX)、流处理器(SP)和代码执行时的线程块(block)、线程(Thread)直接的关心,以及寄存器(Register)、共享内存(Shared memory)和显存(global memory)之间的权限和读取速度。现场演示了简单代码从CPU到GPU上移植。
2.2014-09-23 上午10点的为 《GPU algorithm — conduction problem》
以传热学中最简单的导热泊松方程为例,从方程的离散,到最简单的Jacobi迭代求解的CUDA Fortran实现,进而推广到使用Red-Black方法实现数据不并行的Gauss-Seidel 和SOR方法的并行迭代求解, 最后以一种模拟皮肤导热的Bio-heat程序演示了在GPU与CPU之间的加速比。
3.2014-09-23下午3点《GPU algorithm — fluid flow problem》
立足于代码,逐段详细讲解Fractional step、SIMPLE和LBM方法的GPU加速。现场演示了fractional_step程序和LBM模拟液滴在方腔内的流动结果。
4.2014-09-24下午3点《GPU algorithm — more examples of heat transfer and fluid flow problems》
讲解单节点内的多GPU编程以及跨节点的MPI-GPU编程的相关内容,并演示了对2D 矩形区域内稳态导热问题进行1D区域分解的多GPU并行求解方案及相关代码。还展示使用四百五十万网格的LES模拟熔融钢液流进铸机内的结果、非牛顿流体3D顶盖驱动流的模拟结果、外加磁场的顶盖驱动流和方腔内DNS湍流模拟。
5.2014-09-25上午10点《Multigrid technique — condcution problem》
首先简介了多重网格(Multigrid)技术的特点——是FVM、FEM、FDM等数值模拟方法的快速收敛的求解器。以简单的导热泊松方程为例,从方程的离散,到Jacobi、Gauss-Seidel、SOR和Line Solver都一一进行了详细介绍,并现场展示了相关代码的执行效果。多重网格技术主要由迭代求解的Relaxation、向粗网格传递信息的Restriction和使用粗网格校正细网格结果的Prolongation等三个步骤组成。现场演示了2D 有限差分法的3层网格信息传递过程。
6.2014-09-25下午3点 《Multigrid technique — fluid flow problem》
详细讲解了SIMPLE的多重网格的实现过程,以顶盖驱动流为例展示了加速效果。展示了各种类型的顶盖驱动流,如三角形、方腔、半圆形等等。
7.2014-09-26 上午10点的自由讨论环节
原本行程中安排Vanka教授到西安附近旅游一下,但是Vanka教授更愿意与同学们一起交流。原计划10点开始的1个半小时的讨论会,有同学9点半就来了,将之前参与讲座时留下的不解以及自己之前研究中存在的问题提出来,与Vanka教授交流。尤其是李兆辉同学,提了好几个好问题,赢得Vanka教授不断的称赞。
本文作者:唐振
加速代码执行速度策略
Vanka教授开场白
陶老师带头认真听讲做笔记
自由讨论环节
合影留念