CN109902366B - 一种分布式水文模型汇流并行方法 - Google Patents
一种分布式水文模型汇流并行方法 Download PDFInfo
- Publication number
- CN109902366B CN109902366B CN201910116661.3A CN201910116661A CN109902366B CN 109902366 B CN109902366 B CN 109902366B CN 201910116661 A CN201910116661 A CN 201910116661A CN 109902366 B CN109902366 B CN 109902366B
- Authority
- CN
- China
- Prior art keywords
- sub
- basin
- parallel
- calculation
- domains
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种分布式水文模型汇流并行方法,涉及水资源调度技术领域。该方法通过充分考虑汇流模块子流域之间的依赖关系在编码的角度的处理方法,对于Pfafstetter流域编码的分布式水文模型汇流模块给出了并行计算的解决方案;并利用OpenMP编程进行并行化改造,提高了基于Pfafstetter编码的分布式水文模型汇流模块的计算效率。所以,采用本发明提供的方法,解决了现有技术中,基于Pfafstetter编码的分布式水文模型汇流过程无法直接利用OpenMP框架并行计算的问题,加快分布式水文模型汇流过程计算速度。
Description
技术领域
本发明涉及水资源调度技术领域,尤其涉及一种分布式水文模型汇流并行方法。
背景技术
分布式水文模型是探索和认识复杂水文循环过程和机理的有效手段,也是解决许多水文实际问题的有效工具,已经在气候变化、LUCC、缺资料地区、生态水文学、水资源管理等领域的研究中发挥了重要作用。分布式水文模型具有计算密集的特点,主要体现在:(1)流域水文模拟高度复杂,包括不同下垫面的产流过程模拟以及坡面和河道汇流等,计算过程中存在许多中间变量,具有数据传输密集;(2)分布式水文模型涉及大量的栅格或者子流域数据。随着遥感技术和地理信息系统的发展,分布式水文模型能够获取到的信息越来越多,模拟的范围越来越大,同时划分的单元也越来越精细,模拟单元计算密集;(3)流域水文过程计算要求较高的时间动态性,时间步长往往为小时或分钟尺度,具有时间密集的特点。分布式水文模型对高性能计算提出了很高的要求,传统的串行计算难以满足其要求,需要并行计算技术为模型提供高速率运算。
随着分布式模型模拟的尺度越来越大,分辨率越来越精细,分布式水文模拟对计算能力提出了很高的要求。其中,OpenMP并行框架在水文模型并行计算研究中应用较为广泛,这种并行计算技术的发展为开发并行化的分布式水文模型,解决大范围分布式水文汇流模拟的性能瓶颈问题提供了良好的条件。汇流模块由于具有依赖性的汇流机制导致无法直接并行计算。就分布式水文模型并行计算而言,许多学者对基于二叉树流域编码下的并行方法进行研究,但是存在很多水文模型河网划分应用的是Pfafstetter流域编码,由于Pfafstetter编码对河网划分方式与其他编码有所不同,其本身解决不了子流域之间依赖关系问题,不适用于汇流并行计算。
发明内容
本发明的目的在于提供一种分布式水文模型汇流并行方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种分布式水文模型汇流并行方法,包括如下步骤:
S1、通过确定汇流并行计算的初始状态,即子流域上游与下游的依赖关系表,分别标注出当前子流域上游和下游子流域的编码号IX;
S2、对Pfafstetter流域编码进行改造,在原来一维数组(IX)单独定义子流域的基础上,将其扩展为二维数组(IX,IL),其中IL表示为当前子流域具有的所有上游依赖子流域以及自身在内的个数;
S3、通过OpenMP编程对汇流模块改造,对IL等于1的子流域合理分配给CPU不同的线程,进行多线程的并行计算;同时,当前流域汇流模拟结束跳出并行域后,对自身和有依赖关系的所有下游子流域的IL减1;
S4、循环整个线程分配过程和数组计算过程,直到所有子流域都计算完成,即所有子流域的IL都等于0时停止计算,输出汇流结果。
优选地,S2包括如下步骤:
S201,IX按照Pfafstetter流域编码规则编码赋值;
S202,对Pfafstetter流域编码当中表示子流域编号的一维数组编码(IX)扩展,生成二维数组(IX,IL),IL代表当前子流域拥有的所有上游依赖子流域个数,包括上游子流域的依赖上游子流域,以此类推,这个数目需要将当前的子流域计算在内,对IL统计后将计算结果赋值。
优选地,S3中,所述通过OpenMP编程对汇流模块改造,包括数组私有化,赋予汇流模块参数初始值,对IL等于1的子流域汇流过程分配给不同线程计算,当IL等于1的子流域计算完成后,跳出并行域,每条子流域的二维数组需要重新计算,对自身子流域和具有依赖关系的所有下游子流域的IL都减去1。
优选地,S4具体为:二维数组重新计算完毕后,再次进入并行域,对IL等于1的子流域继续进行多线程并行分配和计算,循环整个分配过程和二维数组的重新计算过程,直至整个汇流模拟过程中所有的子流域的IL都等于0,代表汇流模拟已经完成,输出汇流计算结果。
本发明的有益效果是:本发明提供的分布式水文模型汇流并行方法,通过充分考虑汇流模块子流域之间的依赖关系在编码的角度的处理方法,对于Pfafstetter流域编码的分布式水文模型汇流模块给出了并行计算的解决方案;并利用OpenMP编程进行并行化改造,提高了基于Pfafstetter编码的分布式水文模型汇流模块的计算效率。所以,采用本发明提供的方法,解决了现有技术中,基于Pfafstetter编码的分布式水文模型汇流过程无法直接利用OpenMP框架并行计算的问题,加快分布式水文模型汇流过程计算速度。
附图说明
图1是在Pfafstetter流域编码规则下生成的一维编码示意图;
图2是按照本发明的方法将一维编码扩展成为的二维数组示意图;
图3是子流域第一次进入并行域计算后的数组重分配示意图;
图4是子流域第二次进入并行域计算后的数组重分配示意图;
图5是子流域第三次进入并行域计算后的数组重分配示意图;
图6是汇流全过程计算完成后子流域数组示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种分布式水文模型汇流并行方法,按照如下步骤进行实施:
S1、通过确定汇流并行计算的初始状态,即子流域上游与下游的依赖关系表,分别标注出当前子流域上游和下游子流域的编码号IX。
在步骤S1中,并行计算初始准备需要得到子流域之间的拓扑关系表,表中需要有当前子流域编号,下游子流域编号,上游若干个子流域的编号(即Pfafstetter流域编码中的IX,子流域编号中0代表没有)。如下表所示:
子流域编号(IX) | 下游子流域编号 | 上游子流域编号1 | 上游子流域编号2 |
1 | 0 | 21 | 3 |
21 | 1 | 22 | 23 |
22 | 21 | 0 | 0 |
23 | 21 | 0 | 0 |
3 | 1 | 41 | 5 |
41 | 3 | 42 | 43 |
42 | 41 | 0 | 0 |
43 | 41 | 0 | 0 |
5 | 3 | 0 | 0 |
S2、对Pfafstetter流域编码进行改造,在原来一维数组(IX)单独定义子流域的基础上,将其扩展为二维数组(IX,IL),其中IL表示为当前子流域具有的所有上游依赖子流域个数(包含自身)。
在步骤S2中,首先,IX按照Pfafstetter流域编码规则编码赋值,然后,对Pfafstetter流域编码当中表示子流域编号的一维数组编码(IX)扩展,生成的二维数组(IX,IL),IL代表当前子流域拥有的所有上游依赖子流域个数,包括上游子流域的依赖上游子流域,以此类推。这个数目需要将当前的子流域计算在内,对IL统计后将计算结果赋值。例如:图1是在Pfafstetter流域编码规则下生成的一维编码,可以看出子流域41的依赖上游子流域为42、43,子流域3的所有依赖上游子流域为41、42、43、5,按照本发明的方法将其扩展为二维数组,可如图2所示,子流域22、23、42、43、5没有上游依赖子流域只有自身子流域因此IL等于1,二维编码表示为(22,1),(23,1),(42,1)、(43,1)、(5,1)。子流域21和41分别拥有两个依赖上游子流域再加上自身子流域因此IL等于3,二维编码表示为(21,3)、(41,3)。同理,子流域3有4个依赖上游子流域加上自身子流域后IL等于5,二维编码表示为(3,5)。子流域1有8个依赖上游子流域加上自身子流域后IL等于9,二维编码表示为(1,9)。
S3、通过OpenMP编程对汇流模块改造,对IL等于1的子流域合理分配给CPU不同的线程,进行多线程的并行计算。同时,当前流域汇流模拟结束跳出并行域后,都要对自身和有依赖关系的所有下游子流域的IL减1。
步骤S3,利用OpenMP编程对分布式水文模型汇流模块改造,包括数组私有化(可采用如下的语句:!$OMP THREADPRIVATE),赋予汇流模块参数初始值(可采用如下的语句:!$OMP COPYIN),对IL等于1的子流域汇流过程分配给不同线程计算(可采用如下的语句:!$OMP PARALLEL DO)等(上述的语句为本发明中,OpenMP框架针对Fortran语言,C语言原理相似)。当IL等于1的子流域计算完成后,跳出并行域,每条子流域的二维数组需要重新计算,对自身子流域和具有依赖关系的所有下游子流域的IL都减去1。例如:如图2所示,第一批进入并行域即IL等于1的子流域包括(22,1)、(23,1)、(42,1)、(43,1)、(5,1),并行域为这些子流域分配线程进行多线程并行计算,计算完成跳出并行域。对二维数组重新计算,每一条IL等于1的流域汇流模拟结束后都要对自身和有依赖关系的所有下游子流域的IL减1,从而得到图3的状态,自身减1的二维数组变为(22,0)、(23,0)、(42,0)、(43,0)、(5,0),有依赖关系的所有下游子流域IL减1的二维数组变为(41,1)、(21,1)、(3,2)、(1,4)。
S4、循环整个线程分配过程和数组计算过程,直到所有子流域都计算完成,即所有子流域的IL都等于0时停止计算,输出汇流计算结果。
步骤S4中,二维数组重新计算完毕后,再次进入并行域,对IL等于1的子流域继续进行多线程并行分配和计算。由图3可以得知第二次进入并行域进行任务计算的子流域编号为(21,1),(41,1),计算完一个子流域后就对当前子流域和所有依赖下游子流域的IL减1,如图4所示,得到(21,0)、(41,0),(3,1),(1,2)。同理,第三次进入并行域的子流域为(3,1),计算完后子流域本身和依赖下游子流域编码变为(3,0)、(1,1)(如图5所示)。最后,子流域(1,1)进入并行域进行计算,由于没有下游,计算结束后只将自身子流域的IL减1,变为(1,0)。整个计算过程即对IL等于1的子流域遍历循环计算的过程和二维数组的重新分配得过程,直至整个汇流模拟过程中所有的子流域的IL都等于0(图6所示),代表汇流模拟已经完成,输出汇流计算结果。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明提供的分布式水文模型汇流并行方法,通过充分考虑汇流模块子流域之间的依赖关系在编码的角度的处理方法,对于Pfafstetter流域编码的分布式水文模型汇流模块给出了并行计算的解决方案;并利用OpenMP编程进行并行化改造,提高了基于Pfafstetter编码的分布式水文模型汇流模块的计算效率。所以,采用本发明提供的方法,解决了现有技术中,基于Pfafstetter编码的分布式水文模型汇流过程无法直接利用OpenMP框架并行计算的问题,加快分布式水文模型汇流过程计算速度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (1)
1.一种分布式水文模型汇流并行方法,其特征在于,包括如下步骤:
S1、通过确定汇流并行计算的初始状态,即子流域上游与下游的依赖关系表,分别标注出当前子流域上游和下游子流域的编码号IX;
S2、对Pfafstetter流域编码进行改造,在原来一维数组(IX)单独定义子流域的基础上,将其扩展为二维数组(IX,IL),其中IL表示为当前子流域具有的所有上游依赖子流域以及自身在内的个数;
S3、通过OpenMP编程对汇流模块改造,对IL等于1的子流域合理分配给CPU不同的线程,进行多线程的并行计算;同时,当前流域汇流模拟结束跳出并行域后,对自身和有依赖关系的所有下游子流域的IL减1;
S4、循环整个线程分配过程和数组计算过程,直到所有子流域都计算完成,即所有子流域的IL都等于0时停止计算,输出汇流结果;
S2包括如下步骤:
S201,IX按照Pfafstetter流域编码规则编码赋值;
S202,对Pfafstetter流域编码当中表示子流域编号的一维数组编码(IX)扩展,生成二维数组(IX,IL),IL代表当前子流域拥有的所有上游依赖子流域个数,包括上游子流域的依赖上游子流域,以此类推,这个数目需要将当前的子流域计算在内,对IL统计后将计算结果赋值;
S3中,所述通过OpenMP编程对汇流模块改造,包括数组私有化,赋予汇流模块参数初始值,对IL等于1的子流域汇流过程分配给不同线程计算,当IL等于1的子流域计算完成后,跳出并行域,每条子流域的二维数组需要重新计算,对自身子流域和具有依赖关系的所有下游子流域的IL都减去1;
S4具体为:二维数组重新计算完毕后,再次进入并行域,对IL等于1的子流域继续进行多线程并行分配和计算,循环整个分配过程和二维数组的重新计算过程,直至整个汇流模拟过程中所有的子流域的IL都等于0,代表汇流模拟已经完成,输出汇流计算结果;
步骤S3中数组私有化采用语句为!$OMP THREADPRIVATE,赋予汇流模块参数初始值采用的语句为!$OMP COPYIN,对IL等于1的子流域汇流过程分配给不同线程计算采用的语句为!$OMP PARALLEL DO。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910116661.3A CN109902366B (zh) | 2019-02-14 | 2019-02-14 | 一种分布式水文模型汇流并行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910116661.3A CN109902366B (zh) | 2019-02-14 | 2019-02-14 | 一种分布式水文模型汇流并行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902366A CN109902366A (zh) | 2019-06-18 |
CN109902366B true CN109902366B (zh) | 2020-05-05 |
Family
ID=66944835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910116661.3A Active CN109902366B (zh) | 2019-02-14 | 2019-02-14 | 一种分布式水文模型汇流并行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902366B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113449404B (zh) * | 2021-06-29 | 2024-06-07 | 中国水利水电科学研究院 | 基于逐层叶片单元识别的河网汇流与分水并行计算方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092572A (zh) * | 2013-01-11 | 2013-05-08 | 中国科学院地理科学与资源研究所 | 一种集群环境下分布式水文模拟的并行化方法 |
CN103164190A (zh) * | 2013-03-02 | 2013-06-19 | 中国科学院对地观测与数字地球科学中心 | 一种全分布式流域生态水文模型的快速并行化方法 |
CN104142812A (zh) * | 2014-07-30 | 2014-11-12 | 中国水利水电科学研究院 | 一种分布式水文模型并行运算方法 |
CN104217064A (zh) * | 2014-07-23 | 2014-12-17 | 中国水利水电科学研究院 | 一种农村生活类面源负荷的空间展布方法及装置 |
CN104392147A (zh) * | 2014-12-10 | 2015-03-04 | 南京师范大学 | 面向区域尺度土壤侵蚀建模的地形因子并行计算方法 |
CN107590556A (zh) * | 2017-08-31 | 2018-01-16 | 华北电力大学 | 一种根据动库容影响实施的水库防洪优化调度方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005057697A1 (de) * | 2005-12-02 | 2007-06-06 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren zur computergestützten Simulation technischer Prozesse |
CN104200045B (zh) * | 2014-09-17 | 2016-01-13 | 武汉大学 | 一种流域大尺度水系分布式水动力模型的并行计算方法 |
CN106599471B (zh) * | 2016-12-15 | 2018-07-20 | 中国水利水电科学研究院 | 一种分布式流域水沙过程耦合模拟方法 |
-
2019
- 2019-02-14 CN CN201910116661.3A patent/CN109902366B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092572A (zh) * | 2013-01-11 | 2013-05-08 | 中国科学院地理科学与资源研究所 | 一种集群环境下分布式水文模拟的并行化方法 |
CN103164190A (zh) * | 2013-03-02 | 2013-06-19 | 中国科学院对地观测与数字地球科学中心 | 一种全分布式流域生态水文模型的快速并行化方法 |
CN104217064A (zh) * | 2014-07-23 | 2014-12-17 | 中国水利水电科学研究院 | 一种农村生活类面源负荷的空间展布方法及装置 |
CN104142812A (zh) * | 2014-07-30 | 2014-11-12 | 中国水利水电科学研究院 | 一种分布式水文模型并行运算方法 |
CN104392147A (zh) * | 2014-12-10 | 2015-03-04 | 南京师范大学 | 面向区域尺度土壤侵蚀建模的地形因子并行计算方法 |
CN107590556A (zh) * | 2017-08-31 | 2018-01-16 | 华北电力大学 | 一种根据动库容影响实施的水库防洪优化调度方法 |
Non-Patent Citations (3)
Title |
---|
"基于DEM与实测河网的流域编码方法";罗翔宇;《水科学进展》;20060330;第17卷(第2期);第259-264页 * |
"基于Pfafstetter规则的流域编码算法并行化方法";王春等;《地球信息科学》;20150531;第17卷(第5期);第526-561页 * |
"数字流域与数字水文模型的集成研究";王建平;《中国优秀博硕士学位论文全文数据库(硕士) 基础科学辑》;20050815(第04期);第A012-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109902366A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753362B (zh) | 一种分布式水文模型的汇流并行调度方法 | |
Ahmed et al. | An approximation scheme for stochastic integer programs arising in capacity expansion | |
CN106339351B (zh) | 一种sgd算法优化系统及方法 | |
CN103164190B (zh) | 一种全分布式流域生态水文模型的快速并行化方法 | |
CN103617150A (zh) | 一种基于gpu的大规模电力系统潮流并行计算系统及其方法 | |
CN103080900A (zh) | 并行化自动控制程序的方法及编译器 | |
CN112948123B (zh) | 一种基于Spark的网格水文模型分布式计算方法 | |
Leung et al. | Energy-aware synthesis of networks-on-chip implemented with voltage islands | |
CN109767120A (zh) | 一种基于分布式水文模型的产流并行任务调度方法 | |
CN109902366B (zh) | 一种分布式水文模型汇流并行方法 | |
CN108958852A (zh) | 一种基于fpga异构平台的系统优化方法 | |
Wu et al. | Using hybrid MPI and OpenMP programming to optimize communications in parallel loop self-scheduling schemes for multicore PC clusters | |
Bahnasawy et al. | A new algorithm for static task scheduling for heterogeneous distributed computing systems | |
CN105786626B (zh) | 基于K划分的Storm平台线程分配方法 | |
CN111078380A (zh) | 一种多目标任务调度方法及系统 | |
CN113706057A (zh) | 一种多水源多用水户供水网络的水资源配置方法 | |
CN106844024A (zh) | 一种自学习运行时间预测模型的gpu/cpu调度方法及系统 | |
Yao et al. | Genetic scheduling on minimal processing elements in the grid | |
Guo et al. | Automated framework for general-purpose genetic algorithms in FPGAs | |
CN110969565A (zh) | 图像处理的方法和装置 | |
CN115525430A (zh) | 面向海洋模式算子的自适应的负载均衡方法及设备 | |
CN109190160B (zh) | 一种分布式水文模型的矩阵化模拟方法 | |
CN101281553B (zh) | 汽车耐久性分布式仿真网格应用系统 | |
CN107608237B (zh) | 一种基于光伏系统半实物仿真的硬件资源优化控制方法 | |
CN111221656A (zh) | 一种基于机器学习技术的多线程应用程序动态调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |