您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 基于GPU集群的格子Boltzmann流体模拟并行计算的设计与实现
作者:俸毅苏智彬徐杨指导老师:覃章荣广西师范大学计算机科学与信息工程学院基于GPU集群的格子Boltzmann流体模拟并行算法的设计与实现作品简介设设计方案实验分析创新特色1234一作品简介2.但是目前在基于LBM流体模拟中,使用GPU集群并行计算方面的研究很少。单个计算机由于硬件资源的限制,不能用于大规模流场的计算。集群并行计算成为实现低成本,高性能计算的重要途径之一1.基于LBM(LatticeBoltzmannMethod)的现代计算流体力学在航空、气象、化工等领域获得了广泛的应用。目前利用CUDA技术在单GPU上进行LBM加速计算的研究也越来越多通过对单机CPU、多机CPU、多机GPU三种方案的计算结果和效率对比分析,验证其可行性及加速性能。为在普通计算机群上进行大规模复杂计算,提供一种低成本、高性能的解决方案本项目使用MPI+CUDA技术在由多GPU组成的集群上进行LBM流体模拟并行计算,并以方腔流为算例,验证在多GPU集群上进行LBM并行计算的可行性和加速性能一项目简介项目背景项目目标二特色创新格子玻尔兹曼方法使用配置有支持CUDA技术的GPU显卡的普通计算机组成集群,并在集群上使用MPI+CUDA技术实现了基于LBM流体模拟的并行计算,实验验证了其可行性和加速性能,我们最高获得72.32倍的加速比。该方案解决了目前基于单GPU计算机由于硬件资源限制而无法处理大规模计算流场的问题,同时获得非常可观的加速性能。为在普通计算机群上进行大规模复杂科学计算,提供一种低成本、高性能的解决方案。三设计方案—实现流程(1)1设计一个正确的单CPU程序。用于实现单机计算方腔流算例,实现流程如右图所示。2在单CPU程序的基础上,通过使用MPI技术,扩展到CPU集群上,实现基于MPI的多CPU程序。实现流程如右图所示。三设计方案—实现流程(2)3在实现基于MPI的多CPU程序的基础上,通过使用CUDA技术,扩展到GPU集群上,实现MPI+GPU集群程序。实现流程如右图所示。三设计方案—实现流程(3)三设计方案—关键技术(1)■集群中多机通信方案交换机网卡CPUGPU计算机1网卡CPUGPU计算机2网卡CPUGPU计算机3网卡CPUGPU计算机4实验方案的集群构成示例如下所示,集群中各计算机之间的数据通信,我们采用目前流行的MPI(MessagePassingInterface,消息传递接口)来实现。三设计方案—关键技术(2)■计算流场网格子区块划分方案对于LBM来说,计算流场网格子区块的划分通常包括纵向划分、横向划分、棋盘划分3种方案。棋盘划分方案会造成边界格点数据交换时通信量增多,增大了程序开发难度,降低了计算效率。横向和纵向划分时边界格点交换数据时通信量均较少,而纵向划分比较符合常人的习惯,因此,我们选择纵向划分方案。(b)横向划分(c)棋盘划分(a)纵向划分三设计方案—关键技术(3)■集群中各子计算区块边界格点数据交换方案当计算流场网格划分为多个子区块并分配到集群的各计算机中,在格点粒子分布函数流动时,各子区块边界格点的数据要交换到邻居计算机的子区块的边界中。为了能够计算方便,在每个子区块两侧边界处,各增加一层虚边界,用来存放从从其他计算机迁移过来的数据,这样可以使得在每个计算机内都可以完成子区块数据的碰撞和流动,过程如下图所示(图中每个子区块的蓝色为实际边界,白色为增加的虚边界)。三设计方案—关键技术(4)■基于CUDA的并行数据存储结构设计方案根据CUDA的要求,为了高效地访问GPU全局内存,必须把要访问数据存储在同一连续地址内,实现合并访问。我们的方案是在GPU的全局内存中创建一个一维数组用来存放全部D2Q9模型格子9个方向的粒子分布函数值,先顺序存放所有格点的0方向的粒子分布函数f0,接着是1方向的f1,依次类推一直到f8(如下图所示),这样可以实现合并访问,提高效率。…….f0f1…f8所有格点f0所有格点f1f2—f7所有格点f8D2Q9模型三设计方案—关键技术(5)■基于CUDA内核函数的设计与实现CUDA程序中在GPU上并行执行的代码,被组织成内核(Kernel),内核就是在GPU中被线程并行地执行的函数。我们把程序中并行部分设计成2个内核函数:碰撞内核函数和流动内核函数,将计算流场中每个格点映射到一个GPU线程上,每个线程按照LBM中的碰撞和流动公式同时并行地进行演化计算。实验环境介绍■实验环境CPU:IntelCorei5-24002.80GHz4核GPU:NVIDIAGeForceGT420显卡,显存容量1024MB,显存频率800MHz,流处理单元48个操作系统:WindowsXP软件平台:VisualStudio2008,MPICH2■为了验证本程序的可行性与计算性能,选择二维顶盖驱动方腔流为实验算例四实验分析■4台MPI+GPU集群程序运行截图程序开始运行截图程序结束运行截图■使用单CPU程序模拟的顶盖驱动方腔流示意图■4台集群,使用MPI程序模拟的顶盖驱动方腔流示意图■4台集群,使用MPI+GPU程序模拟的顶盖驱动方腔流示意图四实验分析如图4台集群的三种方案计算结果相吻合。同样,2台集群、8台集群的实验结果亦相吻合√流场大小256X256运行10000步时三种方案结果对比四实验分析■使用2台计算机组成的集群运行10000步的时间和加速比对比情况流场大小单CPU程序MPI集群用加速比MPI+GPU集加速比64*6419.21914.611.3118.4781.04128*12878.06252.3901.4956.1601.39256*256131.23585.7741.5360.0582.19512*512532.750245.512.17100.7085.29640*640850.5310338.4182.51111.7657.611152*11522763.790576.994.79205.63913.441792*17926675.9511306.495.11379.74717.58四实验分析■使用2台计算机组成的集群运行10000步的加速比折线图四实验分析■使用4台计算机组成的集群运行10000步的时间和加速比对比情况流场大小单CPU程序MPI集群用加速比MPI+GPU加速比64*6419.21911.4391.6815.4991.24128*12878.06240.871.9136.3072.15256*256131.23558.5872.2450.2822.61512*512532.750191.6372.7893.795.68640*640850.5310224.4143.79106.9367.951152*11522763.790377.5667.32165.6016.961792*17926675.951507.60013.152285.54123.38四实验分析■使用4台计算机组成的集群运行10000步的加速比折线图四实验分析■使用8台计算机组成的集群运行10000步的时间和加速比对比情况流场大小单CPU程序MPI集群用加速比MPI+GPU加速比64*6419.21924.7810.77530.5060.63128*12878.06220.2182.35836.3072.15256*256131.23537.6033.4948.0728.06512*512532.75067.0977.9491.85313.78640*640850.531083.14110.23114.93620.691152*11522763.790111.84924.71245.45243.121792*17926675.951201.99533.05375.47572.37四实验分析■使用8台计算机组成的集群运行10000步的加速比折线图四实验分析■使用2台、4台、8台计算机组成的集群运行10000步的加速比折线图四实验分析■使用2台、4台、8台计算机组成的集群运行10000步的加速比柱状图总结分析在流场比较小时(如64*64),MPI和MPI+CUDA方式加速优势并未能体现。因为MPI和MPI+CUDA方式的时间基本花费在了通信上当流场128时,MPI和MPI+CUDA方式的加速性能比CPU有明显的提升,而且加速比随着计算流场规模的增大而增大随着集群中的计算机的数量增加,MPI和MPI+CUDA方式的加速比也会明显增加结论在CUDA框架下设计和实现了在多GPU上基于LBM的方腔流模拟的并行算法。与单CPU、MPI对比结果表明在多个GPU上基于LBM的流体模拟并行计算是完全可行的;使用多GPU后,加速性能得到了大幅度的提高,展示了集群GPU在科学计算方面强大的计算能力,说明了使用集群GPU并行计算,可以极大地提高计算效率。采用我们的方案低成本,高性能敬请您批评指正谢谢!
本文标题:基于GPU集群的格子Boltzmann流体模拟并行计算的设计与实现
链接地址:https://www.777doc.com/doc-2534024 .html