层流扩散燃烧在GPU上的并行计算和数值分析

时间:2022-10-05 02:45:20

层流扩散燃烧在GPU上的并行计算和数值分析

摘要:

在实际工程应用中,使用传统的CPU串行计算来开展燃烧数值模拟往往难以满足对模拟速度的要求。利用GPU比CPU更强的计算能力,通过在交错网格上将燃烧物理方程离散化,使用预处理稳定双共轭梯度法(PBiCGSTAB)求解离散化方程,并且探索面向GPU编程的矩阵向量乘并行算法和逆矩阵向量乘并行算法,从而给出一种在GPU上数值求解层流扩散燃烧的可行方法。实验结果表明,GPU并行程序获得了相对串行CPU程序约10倍以上的加速效果,且计算结果与实际情况相符,因而所提方法是可行且高效的。

关键词:层流扩散燃烧;数值模拟;GPU并行计算;预处理稳定双共轭梯度法;加速比

中图分类号:TP338

文献标志码:A

0引言

近年来,随着计算机技术的发展,人们在原有理论和技术的基础之上发展出了燃烧过程的数值模拟,用计算机程序代替了耗资巨大的实验设备。但在实际应用中,由于燃烧数值模拟的计算量往往非常大,因而往往需要通过并行计算来加速计算过程。2002年,赵文涛等[1]使用16个处理器对火箭发动机湍流两相燃烧流场进行了数值模拟,获得了相对原串行程序约4倍的加速比。2006年,邵茂敏等[2]使用MPI并行库,对加力燃烧室紊流化学反应流场进行数值模拟,在5个处理器上获得相对单处理器了4.5倍的加速比。2008年,王玉君等[3]对耦合程序进行了二次开发,使用256个处理器模拟了天然气SI发动机的燃烧过程,获得了85.1%的并行效率。2009年,杨顺华等[4]使用MPI并行库,使用1024个CPU对煤油燃料超燃冲压发动机燃烧流场进行了三维并行计算模拟,获得了约8倍的加速比。但因为CPU本身并不擅长并行计算,之前在CPU集群上进行的燃烧数值模拟在加速效果上往往不够理想。

由于GPU拥有相对同时期CPU更强的计算能力,GPU通用计算已成为当前并行计算领域的一个热点。本文将在GPU平台上,通过并行计算实现预处理稳定双共轭梯度法,同时针对二维空间中层流扩散燃烧进行数值求解,以求达到相对于以往方法更快的模拟速度,为使用GPU解决工程应用中的实际问题提供参考。

1二维层流扩散燃烧的问题描述

虽然层流燃烧相对湍流燃烧考虑的情况要简单些,但二者在计算机数值求解方面方法类似,因而研究层流燃烧的数值求解对湍流燃烧,甚至更复杂燃烧过程的研究有着积极的作用。为了研究方便,本文主要针对二维空间内的层流扩散燃烧进行讨论。

稳定双共轭梯度法是一种用于数值求解非对称线性方程组的迭代方法,采用预处理技术的稳定双共轭梯度法称为预处理稳定双共轭梯度法[8]。通过分析可以发现,预处理稳定双共轭梯度法是由向量加/减、向量内积、矩阵向量乘和逆矩阵向量乘这四个基本计算操作组成的。实现这四个计算操作,就能最终实现预处理稳定双共轭梯度法。

2燃烧离散化方程在GPU上的并行求解

GPU强大的计算能力源于其内部数以百计的计算单元,用户可以通过C、C++等语言编写程序,将GPU内部数量众多的处理器作为线程处理器去执行并行计算的任务。实际上,GPU计算是一种CPU+GPU的混合计算模式[9]。由于GPU比较擅长并行计算,因此,本文将离散化方程的求解过程在GPU上并行完成,而将其余计算任务用CPU串行完成。

2.1矩阵乘向量在GPU上的并行算法

按行压缩存储和按列压缩存储是稀疏矩阵的两种常见存储方式,后者如英伟达CUDA稀疏矩阵库[10]。这两种方法在存储矩阵中元素的同时还必须存储元素行和列的信息,这就导致在计算过程中对矩阵元素的存取需要额外的访存操作。在本问题中,由于系数矩阵非零元素的分布有一定特点,因而可以采用更有效的矩阵存储方法来进一步提高GPU存储器的访问效率。针对系数矩阵中非零元素在沿对角线方向上呈带状分布的特点,本文采取了按对角线方向压缩存储的矩阵存储方案,仅存储矩阵中的元素,而将元素行和列的信息隐含地保存在内存地址中,既避免了按行或按列存储所导致的额外访存操作,又避免了计算过程中大量的原子操作,更重要的是让各并行线程能够访问连续内存单元的元素从而提高访存效率。具体地,对于一个规模为6×6的矩阵,按如图1所示来压缩存储。

从上面实验数据可以看出:GPU并行程序获得了相对CPU串行程序最多11.2倍的加速比。依据计算规模的不同,GPU并行程序相对CPU并行程序有3~8倍的加速效果。而且,可以预见,如果计算规模进一步增大,GPU并行程序会得到更加好的加速效果。此外,通过图5~6可以看出:相对在GPU上使用Jacobi迭代法或稳定双共轭梯度法来求解燃烧的离散化方程,使用结合了预处理技术的稳定双共轭梯度法虽然增加了计算量,但在最终的模拟效率上却仍有较为明显的优势,而且在计算规模越大时优势越明显。由于由不同方法计算所得的组分分布、温度分布基本一致,且本文方法所用计算时间更少,因此本文方法是可行的且更加高效。

4结语

本文针对二维空间中层流扩散燃烧数值模拟问题提出了一种在GPU上并行求解的方法。通过在交错网格上将燃烧物理方程离散化,并针对GPU硬件的特点,将预处理稳定双共轭梯度法在GPU上并行化来求解燃烧的离散化方程,最终提高燃烧过程的模拟速度。实验结果表明,本文方法是可行且相对现有的一些方法更加高效,在实际工程应用中能缩短计算时间,提高程序模拟效率。事实上,本文方法还有进一步优化的空间,在以后的研究中将在方法的数据复用和在多GPU上的可伸缩性方面作深入研究。

参考文献:

[1]赵文涛, 王正华. 湍流两相燃烧流场并行程序的改造与测试研究[J]. 空气动力学学报, 2002, 20(1): 34-38.

[2]邵茂敏,刘勇,颜应文,等.模型加力燃烧室燃烧流场的并行计算[J]. 工程热物理学报, 2006, 27(2): 183-186.

上一篇:营造数学课堂氛围激发学生学习数学兴趣 下一篇:钢结构网络课程教学研究与实践