Page 33 - 2023年第54卷第6期
P. 33
展,加之 CUDA、OpenCL、Stream、DirectCompute等通用计算标准被相继提出,大大提高了 GPU的
可编程性和开发性,促进了 CPU - GPU异构并行计算在各个领域的成功应用。例如,刘明贵等 [41] 探讨
了 GPGPU在岩土工程中的应用前景,分析了 GPU加速在溶蚀岩体渗透特性的随机模型研究中的显著
作用。覃金帛等 [42] 综述了 GPU并行技术在水动力模拟和分布式水文模型中的应用,展望了 GPU加速
技术在水库调度、中长期水文预报、水文模型和智慧水务大数据计算中的应用前景。CPU - GPU异构
并行计算已经在岩土工程、水动力模型、水文模型等方面取得了良好的结果。此外,GPU中大量的计
算线程十分适合数组循环问题,在洪涝模型的离散化求解中有着很好的适用性。因此,近十余年来,
国内外学者基于 CPU - GPU异构并行计算对洪涝模型开展了大量研究。
4.2 洪涝模型 CPU - GPU异构并行计算研究 GPU异构编程模型可分为 OpenCL、CUDA等显式异构
编程模型和 OpenACC、OpenHMPP等制导式编程模型两种 [40] 。其中,显式异构编程模型的编程接口
偏底层,开发难度较大;制导式编程模型开发维护较为简便,只需通过注释的形式让编译器自动完成
GPU并行工作,但模型计算效率较低,因此目前的 GPU加速研究工作还是以显式异构编程为主。
洪涝模型 GPU并行加速研究主要集中在城市二维地表模型。二维地表模型的空间离散主要基于
结构网格或者非结构网格进行。其中,结构网格拓扑结构简单、网格排列有序,单元信息在计算机内
存中存储连续,具有很好的并行性,在 GPU加速研究中备受关注。在 NVIDIA公司推出 CUDA并行编
程模型初期,Lamb等 [43] 基于有限差分法和 CUDA编程语言建立了 JFlow模型,在英国格拉斯哥市洪
水案例中取得了良好的效果,并行编程模型将运行时间由 18h缩短至 9.5min。之后,Rostrup等 [44] 将
CUDA编程模型应用于结构网格的有限体积法洪涝模型求解中,建立了 SWsolver模型。相较于有限差
分法模型,有限体积法模型守恒性好,在复杂地形、不连续问题中具有较大的优势,因此,基于有限
体积法的 GPU加速二维地表模型研究得到大量开展。Vacondio等 [45] 采用显式有限体积法离散浅水方
程,利用 CUDA实现地表模型的并行化,并在测试案例中实现了两个数量级加速。Carlotto等 [46] 提出
了一种基于 GPGPU且可以考虑潜在蒸发的二维浅水动力模型,在案例测试中可以实现约 34倍的加
速。单 GPU的物理内存有限,在一定程度上限制了并行化模型在大规模高分辨率情景下的应用,因
此,有学者通过联结多 GPU的方式克服单个 GPU的物理内存限制。Xia等 [47] 利用 Godunov型有限体
积格式和 OpenCL加 速 技 术 实 现 浅 水 方 程 的 时 空 离 散 化 求 解,开 发 了 可 同 时 在 多 GPU中 运 行 的
2
HiPIMS模型。他们将模型应用于约 2500km 的伊甸园集水区,并成功再现了德斯蒙德风暴造成的降
雨淹没过程。Ming等 [48] 将 HiPIMS模型与数值天气预报模型耦合,所提出的实时洪水预报系统只需
105min即可完成伊甸园集水区 10m分辨率网格条件下 36h的洪水预报计算。2021年,美国橡树岭
国家实验室 [49] 推出一种开源多 GPU的二维洪水模型 TRITON,该模型使用增强型 Roe格式黎曼求解器
和显式一阶迎风格式求解二维浅水方程,可以在 30min内完成 10m分辨率、大范围的飓风哈维案例
洪水模拟。多 GPU联合并行的方式,极大限度地促进了并行化洪水模型的大规模模拟应用。
相较于结构网格,非结构网格不受边界形状和网格正交特性的限制,在复杂边界和网格生成、调
整及加密等方面具有天然的优势,因此被广泛应用于计算流体领域。但非结构网格拓扑结构复杂,网
格单元排列不规则,数据存储结构具有非连续性,会造成异构并行编程困难、加速效果欠佳问题,导
致目前基于非结构网格的洪涝模型 GPU加速研究相对较少。Castro等 [50] 测试了 CUDA并行化洪涝模
型分别在结构网格和非结构网格上的表现,结果表明非结构网格加速效果较差。Petaccia等 [51] 利用
OpenMP和 CUDA加速技术,提出了可并行化计算的二维溃坝模型,该模型的运行速度较串行版本模
型实现了一个数量级的加速,但 GPU加速对比 CPU加速效果并不明显。这主要是因为 CPU与 GPU之
间的数据交换需要通过 PCIE总线进行传输,会耗费大量的时间,而 CPU多线程加速并不会存在这样
的问题。侯精明 [52] 等构建了基于非结构网格的流域雨洪模型,并通过 CUDA实现并行化,模型在宝
盖寺流域和王茂沟流域得到成功的应用,取得了良好的效果,加速比达到 38.4及以上。此外,优化非
结构网格数据存储结构,结合 GPU特点,探索有利于 GPU线程内存访问的数组形式对提高计算效率
具有十分重要的意义。在计算机编程中,数组的排列方式分为 StructureofArray(SoA)排列和 Arrayof
Structure (AoS)排列两种,两种数组排列方式对 CPU并行加速技术影响不大,但会显著影响异构并行
— 6 6 1 —