一种基于网格空间分解优化的分布式水文模型GPU加速方法与流程

本发明涉及流域洪水模拟领域,尤其涉及一种基于网格空间分解优化的分布式水文模型gpu加速方法。
背景技术:
1、并行计算技术在百万级别以上网格的流域分布式水文模型计算领域有非常重要的应用。从早期的串行计算技术(vivoni et al,2011.real-world hydrologicassessment of a fully-distributed hydrological model in a parallel computingenvironment.journal of hydrology,409(1-2):483-496.)开始,分布式水文模型的并行计算一直是一个热门的研究课题。
2、针对高精细网格的流域洪水分布式模型算法模拟,最常见的方法是对网格的树状结构空间分解,采用mpi/集群、encore parallel fortran/对称多处理器、openmp集群、egee网格的计算框架,从而增加最大加速比,提高计算效率。为了尽可能提高并行计算最大加速比,许多研究工作针对网格空间分解及并行计算方法提出不同的并行计算分布式模型,如(kolditz o,du y,burger c,et al.2007.development of a regional hydrologicsoil model and application to the beerze-reusel drainage basin.environmentalpollution,148(3):855-866.)(apostolopoulos t k,georgakakos k p.1997.parallelcomputation for streamflow prediction with distributed hydrologicmodels.journal of hydrology,197(1-4):1-24.)(xu r,huang x x,luo l,et al.2010.anew grid-associated algorithmin the distributed hydrological modelsimulations.science china:technological sciences,53(1):235-241.)(yalew s,vangriensven a,ray n,et al.2013.distributed computation of large scale swatmodels on the grid.environmental modelling&software,41:223-230.)等。基于这些并行计算分布式模型,许多空间分解式并行计算的方法被证明可以提高计算效率。其中,(kolditz o,du y,burger c,et al.2007.development of a regional hydrologic soilmodel and application to the beerze-reusel drainage basin.environmentalpollution,148(3):855-866.)利用mpi/集群,采用计算独立型模型的并行计算方法,达到了提高最大加速比的效果;(apostolopoulos t k,georgakakos k p.1997.parallelcomputation for streamflow prediction with distributed hydrologicmodels.journal of hydrology,197(1-4):1-24.)提出了一个运行于encore parallelfortran/对称多处理器的顺序依赖型模型的并行计算方法,计算了子流域的洪水模拟过程;(xu r,huang x x,luo l,et al.2010.a new grid-associated algorithmin thedistributed hydrological model simulations.science china:technologicalsciences,53(1):235-241.)提出了一个运行于openmp/多核处理器的并行计算方法,计算了子流域及栅格单元的洪水模拟过程。但是,所有这些方法都专注于cpu加速的空间分解式并行计算技术,使得最大加速比提升缓慢,无法用于实时洪水预报应用之中。
3、另一类相关方法更专注于时间并行性的并行计算,通过采用mpi/集群cpu加速并行计算技术。其中一个常用的思路是将整个模拟历时分为多个时段,考虑计算单元的上下游关系穿插计算。例如,(wang h.2011.a high-performance temporal-spatialdiscretization method for the parallel computing of river basins[d].beijing,china:tsinghua university.)利用计算单位的时空依赖顺序,设置了“上游单元完成当前时段的计算后,立即将信息传递给下游单元,下游单元开始当前时段的计算,而上游单元则启动下一时段的计算”的并行计算规则,提高了最大加速比。
4、此外,还有一类是使用空间分解式紧密耦合型模型的并行计算,这类模型通过区域分解的方式增加了最大加速比(cheng j r c,hunter r m,cheng h p,etal.2005.parallelization of the wash123d code,phase ii:coupled two-dimensionaloverland and three-dimensional subsurface flows.proceedings of world waterand environmental resources congress 2005.anchorage,alaska,united states,may15-19)或着以将大流域划分成子流域,并通过弱化子流域间的信息交换减少通信开销,在引入一定误差的情况下,提升最大加速比(su d y.2012.study on the parallelizationof a physics-based hydrologic model inhm utilizing computer cluster[d].hangzhou,china:zhejiang university.)。
5、最近,一个基于gpu集群并行计算的方法(qin c z,zhan lj.2012.parallelizing flow-accumulation calculations on graphics processingunits:from iterative dem preprocessing algorithm to recursive multiple-flow-direction algorithm.computers&geosciences,43:7-16)可以利用gpu计算单元做到提高水文汇流累积量计算效率,但是无法直接计算洪水流量、水深过程。
技术实现思路
1、本发明的目的在于针对现有技术的不足,提供一种基于网格空间分解优化的分布式模型gpu加速计算方法。
2、本发明的目的是通过以下技术方案来实现的:一种基于网格空间分解优化的分布式水文模型gpu加速方法,包括如下步骤:
3、(1)网格单元的源、汇项计算:基于网格流向建立源、汇项网格编码键值对序列;
4、(2)n级网格单元分组:从n级剩余源、汇项网格编码键值对序列中筛选出只有汇项没有源项的网格,组成n级网格序列;
5、(3)n+1级网格单元分组:从n级剩余源、汇项网格编码键值对序列中剔除源项包含n级网格序列的键值对组成n+1级剩余源、汇项网格编码键值对序列,返回至步骤(2)直至循环结束,完成水文模型gpu加速。
6、进一步地,所述步骤(1)包括如下子步骤:
7、(1.1)基于网格d8流向数据,计算出每个网格的源项和汇项;
8、(1.2)根据步骤(1.1)计算的每个网格的源项和汇项成果,建立源项编码与汇项编码的一对一对应关系,存储为源项网格编码与汇项网格编码键值对序列数据。
9、进一步地,所述步骤(2)包括如下子步骤:
10、(2.1)从n=1开始,对n级剩余源、汇项网格编码键值对序列进行统计,n=1时的键值对序列即为全部键值对序列,筛选出只有汇项没有源项的网格,输出其流量结果,剩余网格组成n级网格序列,该级网格序列中的网格单元水文计算独立,满足gpu计算要求;
11、(2.2)基于dem数据与步骤(2.1)得到的n级网格序列,批量输入gpu计算单元,在cuda框架下驱动分布式模型程序计算得到n级网格序列的水深{h}n及流量{q}n,其中流量加入到各网格的汇项网格的流量中;水深{h}n输出至分布式水文模型的水深结果中。
12、进一步地,所述步骤(2.2)的各网格的汇项网格,其单个网格的具体计算如下:
13、对于任一网格i∈{c}n,首先计算出流量与水深将水深输出至模型水深结果;
14、通过查询n级剩余源、汇项网格编码键值对序列{cs,cc}n,即cs=i,即可查询出cc=j的汇项网格,i网格的流量汇入到j网格,汇入方式与水文模型有关:
15、qj+=f(qi)
16、其中f(qi)为汇流演算函数,取决于水文模型的汇流计算结构。
17、进一步地,所述步骤(3)包括如下子步骤:
18、(3.1)基于n级剩余源、汇项网格编码键值对序列,根据源项逐一对键值对进行筛选,对n级网格序列包含该键值对的源项,则从n级剩余源、汇项网格编码键值对序列中删除该键值对,反之保留,形成n+1级剩余源、汇项网格编码键值对序列;
19、(3.2)基于步骤(3.1)生成的n+1级剩余源、汇项网格编码键值对序列,筛选出只有汇项没有源项的网格,将其流量结果{q}n输出至分布式水文模型流量结果文件中,剩余网格组成n+1级网格序列,该级网格序列中的网格单元水文计算独立,满足gpu计算要求;
20、(3.3)基于步骤(3.2)得到的n+1级网格序列,批量输入gpu计算单元,在cuda框架下驱动分布式模型程序计算得到n+1级网格序列的水深{h}n+1及流量{q}n+1,其中流量加入到各网格的汇项网格的流量中;水深{h}n+1输出至分布式模型的水深结果中;
21、(3.4)重复步骤(2)直至n级剩余源、汇项网格编码键值对序列的数量等于0,输出n-1级网格序列的流量{q}n-1,计算结束。
22、进一步地,所述步骤(3.3)的各网格的汇项网格,其单个网格的具体计算如下:
23、对于任一网格i∈{c}n+1,首先计算出流量与水深将水深输出至模型水深结果;
24、通过查询n+1级剩余源、汇项网格编码键值对序列{cs,cc}n+1,即cs=i,即可查询出cc=j的汇项网格,i网格的流量汇入到j网格,汇入方式与水文模型有关:
25、qj+=f(qi)
26、其中f(qi)为汇流演算函数,取决于水文模型的汇流计算结构。
27、具体地,所述dem和d8的流量数据网格精度为8m×8m,网格数量为3432×2578。
28、本发明还提供了一种基于网格空间分解优化的分布式水文模型gpu加速装置,包括以下模块:
29、网格单元的源、汇项计算模块:基于网格流向建立源、汇项网格编码键值对序列;
30、n级网格单元分组模块:从n级剩余源、汇项网格编码键值对序列中筛选出只有汇项没有源项的网格,组成n级网格序列;
31、n+1级网格单元分组模块:从n级剩余源、汇项网格编码键值对序列中剔除源项包含n级网格序列的键值对组成n+1级剩余源、汇项网格编码键值对序列,返回至n级网格单元分组模块直至循环结束,完成水文模型gpu加速。
32、一种电子设备,包括:
33、一个或多个处理器;
34、存储器,用于存储一个或多个程序;
35、当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的一种基于网格空间分解优化的分布式水文模型gpu加速方法。
36、一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现所述一种基于网格空间分解优化的分布式水文模型gpu加速方法的步骤。
37、本发明的有益效果如下:
38、通过构建树状结构网格的空间分解优化分组方法,在cuda框架下并行计算分布式水文模型的水深、流量结果,可以有效提高并行计算的最大加速比,大大提高高精度网格的分布式水文模型计算效率,同时以交替输出的方式保证了计算过程中的水量与能量平衡。本发明首次提出了针对高精度树状结构网格流域分布式水文模型的空间分解优化gpu加速计算方法,在大大提高并行计算最大加速比的同时可以达到与cpu串行并行计算完全一致的计算结果,可对网格数量超过百万的高精细流域实现秒级计算效率的分布式水文模型模拟计算,效果优于现有方法,且具有通用性强、使用简便等优点。
技术研发人员:栾勇
技术所有人:浙江省水利河口研究院(浙江省海洋规划设计研究院)
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
