城市二维内涝模型的GPU并行方法

2020-12-26 02:42向小华陈颖悟吴晓玲王志伟康爱卿
关键词:内涝步长管网

向小华, 陈颖悟, 吴晓玲, 李 超, 王志伟, 康爱卿

(1.河海大学水文水资源学院,江苏 南京 210098;2.中国水利水电科学研究院流域水循环模拟与调控国家重点实验室,北京 100038)

运用二维水动力模型模拟城市地表水流运动,从而获得实时的积水面积、积水深度以及积水历时,对城市防涝减灾具有重要意义。二维水动力模型模拟精度高,但在大尺度区域或精细分辨率情形下,数值计算量大,模型运行时间长。为提高二维模型模拟速度,可以通过简化控制方程或降低空间分辨率减少运算量,但这样会降低模型模拟精度。另一种方法是引入并行计算,既能保证模型精度又能提高模型运行速度。目前,二维水动力模型的并行化研究已有很多成果:Neal等[1]基于OpenMP构建了LISFLOOD-FP二维模型的并行版本,获得了最大5.18倍的加速比;Lamb等[2]运用DirectX加速JFlow模型,模型运行时间从18 h减少到5~9 min;Kalyanapu等[3]将CUDA运用于溃坝模拟加速中,能够2 min模拟30 min的洪水事件;Vias等[4]在污染物输移模型中利用GPU进行加速,仅需2 h便可完成CPU连续执行10 d的模拟工作。但是将并行技术应用于城市内涝模拟的研究还较少,本文将SWMM模型和LISFLOOD-FP模型进行耦合构建城市内涝模型,基于CUDA对其中的二维水动力模型进行GPU并行化,比较分析其加速效果,以期为城市内涝快速模拟模型的进一步完善提供参考。

1 城市二维内涝模型

1.1 城市产汇流及排水管网模型

城市产汇流及管网模型采用SWMM模型,SWMM模型包括下垫面产汇流模块、管网汇流演算模块以及水质模块,它能够模拟出每个子汇水区每个时刻产生径流的水质与水量,同时还能对每个管道中的水量和水质进行模拟[5-9]。由于SWMM没有进行地表二维水流模拟的模块,因此将其与二维水动力模型进行耦合,从而能够对溢出排水管网的地表积水进行模拟。

1.2 地表二维漫流模型

二维漫流模型采用水动力模型LISFLOOD-FP,该模型的二维漫流模块采用基于矩形网格的水量平衡方程以及网格间流量公式,显式地计算各时刻的网格水深[10-13]。

网格水量平衡方程:

(1)

边界流量公式:

(2)

时间步长公式:

(3)

式中:i,j——第i行第j列网格标示;Qx——网格x方向的出流量;Qy——网格y方向的出流量;ht——t时刻网格水深;z——网格底高程;qt——t时刻单宽流量;n——地表糙率;Δx、Δy——矩形网格大小;α——0~1的系数;g——重力加速度。模型计算流程如图1(a)所示。

图1 二维模型计算流程Fig.1 Computing flowchart of 2D model

1.3 城市二维内涝模型的构建

城市内涝模型的产汇流模块和一维管网演算模块由SWMM模型提供,二维地表漫流模块采用LISFLOOD-FP模型计算。SWMM模型与LISFLOOD-FP模型之间采用双向耦合,当排水管网接纳的水量超过其负荷,水量从管网节点溢出,此时SWMM模型的节点溢流量作为LISFLOOD-FP模型的输入,参与地表二维计算,当管网负荷降低、节点溢流停止,LISFLOOD-FP模型的水量重新回流到SWMM模型中,参与一维管网计算[14-17]。耦合后二维模型计算流程如图1(b)所示。

城市内涝模型运行效率主要受制于二维计算模块。网格分辨率增大,模型的时间步长相应缩小,同时空间上模型单步计算的耗时显著加大。因此,下面采用GPU并行技术来实现空间上网格的并行计算,从而加速二维内涝模型。

2 城市二维内涝并行模型

2.1 实现并行的硬件条件

采用CUDA并行编程模式进行二维模型加速,采用了2种硬件配置,配置1和配置2的主要硬件参数见表1,均使用了支持CUDA的GPU。

表1 硬件参数Table 1 Hardware parameters

2.2 模型并行化的可行性分析

CUDA适用于可以分解成若干处理单元的计算任务,各处理单元间无依赖关系,独立运行、互不干扰。在LISFLOOD-FP模型中,各边界流量的计算、各网格水量的更新互不影响,这是由于模型采用显式方法求解,每一个网格计算仅需用到该网格与相邻网格前一时刻已有的水深、流量等数值信息,同一时刻的各网格单元独立运行、互不干扰,因此具备并行条件。

2.3 并行模型的构建

在CUDA架构下,CPU和GPU之间有着明确的协作,CPU读取外部数据,通过CUDA提供的API对GPU进行数据传输,接着GPU进行并行计算,计算结束之后将结果传输回CPU,进行数据结果的存储[18-19]。CPU和GPU之间的数据传输模型如图2所示。

图2 GPU数据传输模型Fig.2 Data transfer model of GPU

二维模型并行后的计算流程如图3所示。第一部分对模型参数、网格信息、水位流量等进行初始化,CPU端初始化完成后,在GPU上申请存储空间,将CPU端初始时刻的水位、流量以及高程等数据拷贝至GPU;第二部分GPU执行密集的数值计算,每个网格计算只需要前一步时间步长的结果,同一时间步的网格计算不相关,各线程求出对应网格的边界流量,并更新网格水深;第三部分GPU计算完成,将当前时刻的流量、水深数据返回给CPU,CPU计算包含节点网格的源项,更新这部分网格水深,最后存储运算结果。

图3 二维模型并行计算流程Fig.3 Parallel computing flowchart of 2D model

3 模型应用与分析

3.1 模型应用

研究区域位于盐城响水县城区,城镇化水平较高,建筑密集,人口众多,地势低平,研究区域如图4(a)所示。该区域硬化地面占比高,且排水管网排涝标准较低、抽排设施较少,“2012·8·10”特大暴雨使得该区域一些地区积水深度超过1 m。因此有必要对该区域建立适当的内涝模拟模型以响应突发的暴雨内涝事件。降雨条件采用当地的暴雨公式设计2 h短历时暴雨,下垫面资料包括遥感影像图、不同分辨率的DEM,排水管网分布图等。经验证,原模型模拟得到的积水分布区域与实际的调研结果大致相符,且模型模拟的最大水深与实际调查水深的差距不超过0.3 m,模型对于研究区域的雨洪模拟具有较好的适用性。并行模型模拟得到的积水分布范围与原模型一致,模拟的积水面积和水深无明显变化,并行模型依然保持原有精度。图4(b)为5 m分辨率下模型模拟运行到2 h的淹没图,将不同时刻的水深数据拼接起来并在GIS中进行演示,可得到研究区域发生内涝时地表二维水流的动态演变过程,从而直观清晰地掌握城市地表的内涝情况。

图4 研究区域与模拟结果Fig.4 Study area and simulation results

3.2 效率计算指标

并行模型的性能评定指标采用加速比:

(4)

式中:TCPU——原模型的运行时间;TGPU——并行模型的运行时间。

3.3 加速效果分析

配置1下原模型的模拟方案简称CPU1,并行模型模拟方案简称GPU1,同理,配置2下原模型的模拟方案为CPU2,并行模型模拟方案为GPU2,在5 m地形分辨率、2 h短历时暴雨下,对研究区域12 h的内涝情况进行模拟。

计算结果显示,CPU1运行时间为60.7 min,GPU1为20.6 min,CPU2为43.9 min,GPU2为7.2 min,GPU1取得加速比为2.95,GPU2为6.10。GPU2加速效果明显,12 h的实际内涝过程仅需不到8 min,并行模型做到了高分辨率网格下的城市内涝快速模拟。同时GPU2的加速效果是GPU1的大约2倍,核心数越多、核心频率越高的GPU能获得更好的加速效果,相比于花大量时间优化程序,升级硬件资源对消除程序性能瓶颈更直接有效。

还可看到,加速比远远没有达到GPU中处理器的数量。一方面,由于并行模型仅实现二维模型的加速,并没有对原模型的所有计算流程进行并行化,比如文件IO操作、SWMM一维管网计算、管网与地表的交互计算等都不能实现并行;另一方面,启用GPU进行并行计算均会造成一定的额外耗时,这种耗时主要来源于CPU与GPU间的数据传输、内存延迟、线程间通信等,使得加速比的增长存在极限。

3.4 不同网格分辨率下的加速效果分析

在30 m、10 m、5 m、2 m网格分辨率下各模拟方案的运行时间和加速比见表2。

表2 不同分辨率下各方案运行时间及加速比Table 2 Running time and speedup of each scheme under different resolutions

可以得到,随着网格分辨率的上升,GPU1和GPU2获得的加速比随之上升,加速比随着模型计算量的增大而增大,这与Neal等[1]、Kalyanapu等[3]研究得出的结论是一致的。GPU相比于CPU具有众多的处理核心,这种硬件优势使得GPU在处理可并发的计算流程时能够获得比CPU更快的速度,但是由于GPU内存是独立于CPU内存的,每次启用GPU进行加速都需要经历向GPU传送数据并返回结果的过程,这会造成一定的耗时,影响程序的整体性能。低分辨率网格下,每次时间步长里需要遍历的网格数量较少。由表2可知,30 m分辨率网格,单纯使用CPU已经能在1 min内快速完成计算,利用GPU进行加速还要算上传输数据导致的耗时,反而起不到加速效果,此时CPU与GPU间的数据传输速度成为程序性能的主要瓶颈。对于高分辨率情形,每次时间步长里计算量大,原模型CPU串行处理大量网格,运行耗时显著增加;并行模型下GPU多处理器的性能优势得到充分发挥,计算量越大,性能优势发挥越显著,能够取得更大的加速比。

4 结 论

a. GPU并行计算技术可以显著提升二维内涝模型的运行效率,对本文研究区域,在5 m高分辨率下,GPU2能够8 min内模拟12 h的内涝事件,满足紧急内涝事件的快速响应,具有一定应用价值。

b. 并行模型的加速效果在更高的空间分辨率下表现得更为明显,取得了最高10.86倍的加速比,相比于Neal等[1]采用OpenMP(基于CPU多线程)加速LISFLOOD取得最高5.18倍加速比,GPU显现出在并行计算方面的优势。网格单元数量越多,越能更好地体现复杂的地形和水流特征,但同时也造成较长的耗时,而使用GPU进行加速能在内涝模拟下仍保持较快的速度和原有的精度。

c. 影响加速比的主要因素有:(a)网格分辨率。分辨率越高,计算量越大,GPU多核心的性能优势发挥越显著。(b)并行区域时间占比。并行部分占的时间越多,程序整体性能提升越大,加速效果越好。(c)并行带来的额外开销。主要包括CPU与GPU间的数据传输、内存延迟、线程间通信等,使得加速比的增长存在极限。

d. 要充分发挥GPU并行计算优势需要两个条件:首先单步数据计算量要大,充分发挥GPU多核心的硬件优势;其次应尽量减少每次步长里向GPU传输数据而产生的耗时,比如合并小规模的数据传输、减少启用次数、使用传输带宽更快的固定内存等[18-19]。

猜你喜欢
内涝步长管网
城市集中供热管网的优化设计
自然梯度盲源分离加速收敛的衡量依据
海绵城市内涝防治系统的功能探析
供热一级管网水力计算及分析
构建城市水文监测系统对解决城市内涝问题的探索
《城市暴雨内涝仿真模拟技术及其应用》
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
一种改进的变步长LMS自适应滤波算法
市政道路给排水管网设计分析
农业农村部派出工作组深入东北三省 全力推进科学抗内涝保秋粮丰收