论文部分内容阅读
“熵”作为衡量系统的无序或混乱程度,其在信息论、控制论、数论、概率论、生命科学、天体物理等领域起着重要作用和广泛应用。作为典型代表,信息论的创始人香农定义熵就是建立在概率统计模型下的信息度量,它的宏观理解为在信息世界里,熵越高,传输的信息越多。熵起源于物理学的分支热力学,对现代科学的发展具有至关重要的意义。熵格子玻尔兹曼方法(又称熵格子Boltzmann方法)作为计算流体力学中一种有效模拟复杂流体的介观数值计算方法,已经被成功应用在多孔介质流、多相流、湍流和磁流体等工作,并渗透在大规模科学与工程计算领域。由于熵格子Boltzmann方法改进了标准格子Boltzmann方法,它不仅具有适合并行计算、简单的复杂边界条件处理、物理量直接求解等特点,而且具有更加稳定模拟复杂流体运动的潜力。然而,利用熵格子Boltzmann方法可以取得稳定数值模拟的成果时,却必然要增加计算时间成本。因此,通过对熵格子Boltzmann方法的并行化研究,已成为计算流体力学中的重要研究课题。 为此,本文就熵格子Boltzmann方法并行化工作从硬件支撑和软件算法两个层面共同展开了研究,总体上分别对均匀网格和非均匀网格下的熵格子Boltzmann方法并行算法进行探讨。本文的研究内容包括四个方面: (1)面向均匀网格的熵格子Boltzmann方法GPU并行算法。随着GPU作为协加速处理器的应用越来越广泛,尤其是计算流体力学中的复杂流体流动模拟。为此,提出了一种非常有效的基于GPU平台的均匀网格下熵格子Boltzmann方法并行实现策略,利用该方法对基准测试进行模拟比CPU上模拟的计算时间短,效率高。针对熵格子Boltzmann方法中的关键步骤—松弛时间参数的调整,提出了三种基于GPU平台求解熵格子Boltzmann方法中松弛时间参数的并行算法,通过实现数据表明直接逼近方法求解参数比其他两种方法更加有效。为了验证熵格子Boltzmann方法在GPU上并行算法的有效性,实现了均匀网格下的雷诺数为1000、2000、5000、10000的方腔顶盖驱动流模拟,并通过考察加速比、每百万格子更新率等性能指标证实结论。 (2)面向均匀网格的熵格子Boltzmann方法CPU/GPU协同并行算法。面对CPU/GPU异构体系在高性能计算领域中的日益流行,而熵格子Boltzmann方法作为复杂流体模拟的强数值稳定性重要方法,两者的结合在工程科学计算中具有重要的应用价值。为此,建立了ELBM异构协同计算的最优分配负载均衡模型,并针对给定的网格规模,提出了CPU/GPU异构平台下的最优数据分配比例。基于负载均衡模型以及异构平台的特点,继而提出了一种非常有效的基于CPU/GPU异构平台下的ELBM并行算法,通过数值模拟实验证实了算法的有效性。同时,面对异构平台下ELBM并行算法的实现,详细讨论了通信开销以及数值结果的误差分析。 (3)面向非均匀网格的块状熵格子Boltzmann方法。针对流体重要的流动区域和沿着曲线边界的流体流动,非均匀网格是真实流体模拟的首选。为此,研究了面向非均匀网格的熵格子Boltzmann方法。通过对非均匀网格的基础划分—层级网格的研究,对标准的熵格子Boltzmann方法进行了相关理论推导,进而提出了一种块状熵格子Boltzmann方法。通过三维方腔顶盖驱动流作为基准测试的数值模拟实验,验证了该方法的有效性。 (4)面向非均匀网格的熵格子Boltzmann方法异构协同并行算法。结合块状熵格子Boltzmann方法在数值模拟实验中计算时间长的缺点,对非均匀网格的熵格子Boltzmann方法异构协同并行算法进行了研究。考虑异构计算资源不等的处理能力以及熵格子Boltzmann方法本身的特点,提出了一种有效的关于块状熵格子Boltzmann方法异构并行计算的任务划分及调度策略方案,并在此基础上,设计了一种在CPU/GPU异构计算环境下的面向非均匀网格的块状熵格子Boltzmann方法并行算法,通过在不同GPU环境配置的异构平台上进行了数值模拟实验,结果表明算法具有有效性和可扩展性。 在研究熵格子Boltzmann方法并行化工作的过程中,得到了一些结论。首先,通过CUDA编程框架并行实现GPU上的熵格子Boltzmann方法,其中运用直接逼近法对松弛时间参数的并行求解能够有效提高方法的计算效率。其次,在CPU/GPU异构计算系统中执行熵格子Boltzmann方法并行算法,无论是非均匀网格还是均匀网格,其网格的具体划分方式和任务调度方案对整体计算性能影响较大。最后,面向非均匀网格的块状熵格子Boltzmann方法的异构计算很大程度上依赖于交界区域的处理。