CN109767120A - 一种基于分布式水文模型的产流并行任务调度方法 - Google Patents
一种基于分布式水文模型的产流并行任务调度方法 Download PDFInfo
- Publication number
- CN109767120A CN109767120A CN201910027632.XA CN201910027632A CN109767120A CN 109767120 A CN109767120 A CN 109767120A CN 201910027632 A CN201910027632 A CN 201910027632A CN 109767120 A CN109767120 A CN 109767120A
- Authority
- CN
- China
- Prior art keywords
- basin
- sub
- parallel
- flow field
- field simulation
- 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.)
- Granted
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于分布式水文模型的产流并行任务调度方法,涉及水资源调度技术领域。该方法首先根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间;然后使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;之后将待调度的子流域进行分组,组数依据并行的线程数而定,依据优先级表和每组添加的任务时间累计值实现动态分配;最后采用共享内存OpenMP并行框架对各组进行线程分配。所以,本发明通过排序分组预处理后,减少了子流域并行分配时的空闲和开销时间,能够适应当今多核处理器的应用前景,提高了分布式水文模型的计算速度,优化了产流并行任务调度过程。
Description
技术领域
本发明涉及水资源调度技术领域,尤其涉及一种基于分布式水文模型的产流并行任务调度方法。
背景技术
分布式水文模型是流域水循环研究的重要工具,考虑了气候和下垫面因子的空间异质性,通过定量评估人类活动和气候变化对流域生态水文过程的影响,为全球变化下流域管理决策的制定提供科学支撑,是当前国内外研究的前沿和热点问题。分布式水文模型通过将流域划分为异质性空间计算单元,充分考虑水文水资源要素在空间上的变化,充分考虑流域内空间计算单元之间数量交换和相互影响,从而更为合理地刻画气候变化和人类活动影响下的流域水文过程。分布式水文模型具有时空数据密集和计算密集的特点,主要体现在:1)流域水文模拟高度复杂,需大量的数据和参数输入,同时生成大量的中间变量,具有计算密集的特点;2)全空间分布式的水文模型涉及大量的栅格数据,随着流域面积的扩大(如大尺度流域),栅格单元急剧增加,所涉及的数据量和计算量也急剧增加,具有计算密集型特点;3)流域水文过程计算要求较高的时间动态性,时间步长往往为小时或分钟尺度,具有数据密集的特点。分布式水文模型模拟对高性能计算提出了很高的要求,传统的串行计算模式难以满足其要求,迫切需要发展分布式水文模型的并行技术。
将并行计算应用于水文模型模拟研究领域,可以提升水资源演变规律分析、水资源评价等的运行速度。但是,随着分布式水文模型要解决的问题规模的不断扩大,负载不平衡问题和线程开销问题一直影响着并行速度,现有的静态均匀分配和动态选择调度方法只能兼顾一个方面,还存在着很大的缺点,因此有必要优化调度方法。
发明内容
本发明的目的在于提供一种基于分布式水文模型的产流并行任务调度方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于分布式水文模型的产流并行任务调度方法,包括如下步骤:
S1、根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定待调度的子流域产流模拟时间;
S2、使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;
S3、将待调度的子流域进行分组,在分组的过程中,组数依据并行的线程数而定,依据优先级调度表和每组添加的任务时间累计值实现动态分配;
S4、采用共享内存OpenMP并行框架的方法对各组进行线程分配,实现子流域产流并行任务调度。
优选地,S1具体为,基于确定的流域分布式水文模型和已知的输入数据,以子流域划分基本单元,选取一年为模拟单位,每个子流域产流模拟时间固定不变,通过在产流程序模块首尾添加标记,输出每个子流域产流模拟时间,得到一个子流域产流模拟时间表,该产流模拟时间表具有一定的规律,用于为其它年份产流模拟时间提供参考。
优选地,S2具体为,将产流模拟时间作为比较的元素,基于分治法选择一个时间作为基准值,大于基准值的元素放在前面,小于基准值的元素放在后面,进行分区操作,对每个分区中的元素继续排序,递归地把小于基准值的子数列和大于基准值的子数列排序,得到一个从大到小排序的优先级调度表。
优选地,S3中,所述依据优先级调度表和每组添加的任务时间累计值实现动态分配,具体为,在分配过程中,首先,将优先级表最前的n个子流域(即产流模拟时间最长的子流域)分配到n个组中,每组对应一个子流域,对应次序可随机,然后每次分配新的子流域,从优先级表中未分配的从前往后选取,都对每组产流模拟时间累计值做一个排序,累计值最小的可以添加新的子流域,直至所有的待处理的并行任务均分组完成。
优选地,S4中,所述共享内存OpenMP并行框架的方法,具体为,通过并行指令omp_set_thread_num()将线程号与每组分配完成的子流域编号绑定,开始并行计算。
本发明的有益效果是:本发明提供的基于分布式水文模型的产流并行任务调度方法,首先根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间;然后使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;之后将待调度的子流域进行分组,组数依据并行的线程数而定,依据优先级表和每组添加的任务时间累计值实现动态分配;最后采用共享内存OpenMP并行框架对各组进行线程分配。所以,本发明通过排序分组预处理后,减少了子流域并行分配时的空闲和开销时间,能够适应当今多核处理器的应用前景,结合分布式水文模型的自身特点,提高了分布式水文模型的计算速度,优化了产流并行任务调度过程。
附图说明
图1是本发明提供的基于分布式水文模型的产流并行任务调度方法流程示意图;
图2是具体实施例中子流域的产流模拟时间;
图3是具体实施例中得到的优先级调度表;
图4是具体实施例中对子流域进行动态分配的过程和结果示意图;
图5是具体实施例中OpenMP的Fork/Join并行框架及线程分组绑定示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供了一种基于分布式水文模型的产流并行任务调度方法,包括如下步骤:
S1、依据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间。
在步骤S1中,基于确定的流域分布式水文模型和已知的输入数据,以子流域划分基本单元,选取一年为模拟单位,每个子流域产流模拟时间固定不变,通过在产流程序模块首尾添加标记,输出每个子流域产流模拟时间,得到一个子流域产流模拟时间表,该年产流模拟时间表具有一定的规律(各子流域产流模拟时间参差不齐),可以为其它年份产流模拟时间提供参考(由于子流域所在的地理位置和地形地貌条件限制等,每年输入数据变化不大的条件下,该子流域的产流模拟时间每年基本不变,模拟其中一年的产流时间,适用其它年份)。
如图2中所示,10个数组表示子流域的产流模拟时间,其中,每个数组的第一位表示子流域编号,第二位表示产流模拟时间,根据每个子流域所在的地理环境不同,产流模拟时间有很大差异。
S2、使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表。
在步骤S2中,依据快速排序算法将产流模拟时间作为比较因子,基于分治法选择一个基准时间,大于基准值的元素放在前面,小于基准值的元素放在后面,进行分区操作,分区中继续排序,递归地把小于基准值的子数列和大于基准值的子数列排序。
将图2中的10个数组按照上述方法进行排序,把产流模拟时间长的子流域放在前面,短的放在后面,在产流模块中按产流模拟时间从长到短把子流域排序。
如图3所示,得到一个从大到小的次序表,供任务调度优先级参考。
S3、将待处理的并行任务分组,组数依据并行的线程数而定,由优先级表和每组添加的任务时间累计值实现动态分配。
在实际分组过程中,首先确定并行的线程数,例如,并行的线程数为4,则对图3中所示的10个子流域进行4组动态分配,分配过程中,首先,将优先级表最前的4个子流域(即产流模拟时间最长的子流域)分配这四组,每组对应一个子流域,对应次序可随机,然后每次分配新的子流域(从优先级表中未分配的从前往后选取)都需要对每组产流模拟时间累计值做一个排序,累计值最小的可以添加新的子流域,直至所有的待处理的并行任务均分组完成。如图4所示,对10个子流域进行4组动态分配,得到最终的累加时间呈现均匀分布,当子流域数量更多时,各组产流模拟时间累计值呈现均匀分布的效果会更加明显。
S4、采用共享内存OpenMP并行框架对各组进行线程分配。
本实施例中,根据产流模块中各子流域间产流相对独立,之间没有数据交换的特点,在相对流行的OpenMP、MPI并行方法等选取前者,由于OpenMP的线程级相比于MPI的进程级可以共享数据,不需进行通信行为,只需在子流域循环级添加主要并行语句,就可以高效的完成并行化,节省时间,降低难度。
在步骤S4中,通过并行指令omp_set_thread_num()将线程号与每组分配完成的子流域编号绑定,开始并行计算。如图5所示,结合OpenMP的Fork/Join并行框架,串行域时主线程执行,遇到并行域开启从线程同时执行,当并行域中线程号为0时,执行a组中的子流域编号,线程号为1时,执行b组中的子流域编号,以此类推。
可见,采用上述方法,一次分组预处理技术既可以实现问题的一次性均匀分配,减少了动态分配次数过多的线程开销,又由于每个线程的负载时间分配均匀,优化了静态均匀分配下的负载不平衡问题。
所以,本发明不仅可以用于大尺度流域水文模型的产流并行任务调度,而且通过将待并行任务子流域进行分配组合预处理技术及采用OpenMP并行框架,优化了产流部分的并行时间,提高了分布式水文模型的并行速度。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明提供的基于分布式水文模型的产流并行任务调度方法,首先根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间;然后使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;之后将待调度的子流域进行分组,组数依据并行的线程数而定,依据优先级表和每组添加的任务时间累计值实现动态分配;最后采用共享内存OpenMP并行框架对各组进行线程分配。所以,本发明通过排序分组预处理后,减少了子流域并行分配时的空闲和开销时间,能够适应当今多核处理器的应用前景,结合分布式水文模型的自身特点,提高了分布式水文模型的计算速度,优化了产流并行任务调度过程。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (5)
1.一种基于分布式水文模型的产流并行任务调度方法,其特征在于,包括如下步骤:
S1、根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定待调度的子流域产流模拟时间;
S2、使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;
S3、将待调度的子流域进行分组,在分组的过程中,组数依据并行的线程数而定,依据优先级调度表和每组添加的任务时间累计值实现动态分配;
S4、采用共享内存OpenMP并行框架的方法对各组进行线程分配,实现子流域产流并行任务调度。
2.根据权利要求1所述的基于分布式水文模型的产流并行任务调度方法,其特征在于,S1具体为,基于确定的流域分布式水文模型和已知的输入数据,以子流域划分基本单元,选取一年为模拟单位,每个子流域产流模拟时间固定不变,通过在产流程序模块首尾添加标记,输出每个子流域产流模拟时间,得到一个子流域产流模拟时间表,该产流模拟时间表具有一定的规律,用于为其它年份产流模拟时间提供参考。
3.根据权利要求1所述的基于分布式水文模型的产流并行任务调度方法,其特征在于,S2具体为,将产流模拟时间作为比较的元素,基于分治法选择一个时间作为基准值,大于基准值的元素放在前面,小于基准值的元素放在后面,进行分区操作,对每个分区中的元素继续排序,递归地把小于基准值的子数列和大于基准值的子数列排序,得到一个从大到小排序的优先级调度表。
4.根据权利要求1所述的基于分布式水文模型的产流并行任务调度方法,其特征在于,S3中,所述依据优先级调度表和每组添加的任务时间累计值实现动态分配,具体为,在分配过程中,首先,将优先级表最前的n个子流域(即产流模拟时间最长的子流域)分配到n个组中,每组对应一个子流域,对应次序可随机,然后每次分配新的子流域,从优先级表中未分配的从前往后选取,都对每组产流模拟时间累计值做一个排序,累计值最小的可以添加新的子流域,直至所有的待处理的并行任务均分组完成。
5.根据权利要求1所述的基于分布式水文模型的产流并行任务调度方法,其特征在于,S4中,所述共享内存OpenMP并行框架的方法,具体为,通过并行指令omp_set_thread_num()将线程号与每组分配完成的子流域编号绑定,开始并行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910027632.XA CN109767120B (zh) | 2019-01-11 | 2019-01-11 | 一种基于分布式水文模型的产流并行任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910027632.XA CN109767120B (zh) | 2019-01-11 | 2019-01-11 | 一种基于分布式水文模型的产流并行任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109767120A true CN109767120A (zh) | 2019-05-17 |
CN109767120B CN109767120B (zh) | 2020-05-05 |
Family
ID=66453653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910027632.XA Active CN109767120B (zh) | 2019-01-11 | 2019-01-11 | 一种基于分布式水文模型的产流并行任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109767120B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110648054A (zh) * | 2019-09-04 | 2020-01-03 | 中国建设银行股份有限公司 | 机器人流程自动化的任务并行处理方法及装置 |
CN111966478A (zh) * | 2020-08-18 | 2020-11-20 | 北京百度网讯科技有限公司 | 自定义任务排序方法和设备、电子设备和介质 |
CN114707325A (zh) * | 2022-03-30 | 2022-07-05 | 洛阳师范学院 | 一种基于物理模型的水文过程串并耦合动态模拟方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092572A (zh) * | 2013-01-11 | 2013-05-08 | 中国科学院地理科学与资源研究所 | 一种集群环境下分布式水文模拟的并行化方法 |
CN103164190A (zh) * | 2013-03-02 | 2013-06-19 | 中国科学院对地观测与数字地球科学中心 | 一种全分布式流域生态水文模型的快速并行化方法 |
CN108196951A (zh) * | 2018-01-30 | 2018-06-22 | 成都信息工程大学 | Gpu流域径流模拟分布式调度***及方法 |
-
2019
- 2019-01-11 CN CN201910027632.XA patent/CN109767120B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092572A (zh) * | 2013-01-11 | 2013-05-08 | 中国科学院地理科学与资源研究所 | 一种集群环境下分布式水文模拟的并行化方法 |
CN103164190A (zh) * | 2013-03-02 | 2013-06-19 | 中国科学院对地观测与数字地球科学中心 | 一种全分布式流域生态水文模型的快速并行化方法 |
CN108196951A (zh) * | 2018-01-30 | 2018-06-22 | 成都信息工程大学 | Gpu流域径流模拟分布式调度***及方法 |
Non-Patent Citations (1)
Title |
---|
刘军志等: "分布式水文模型的并行计算研究进展", 《地理科学进展》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110648054A (zh) * | 2019-09-04 | 2020-01-03 | 中国建设银行股份有限公司 | 机器人流程自动化的任务并行处理方法及装置 |
CN110648054B (zh) * | 2019-09-04 | 2022-05-17 | 中国建设银行股份有限公司 | 机器人流程自动化的任务并行处理方法及装置 |
CN111966478A (zh) * | 2020-08-18 | 2020-11-20 | 北京百度网讯科技有限公司 | 自定义任务排序方法和设备、电子设备和介质 |
CN111966478B (zh) * | 2020-08-18 | 2024-02-20 | 北京百度网讯科技有限公司 | 自定义任务排序方法和设备、电子设备和介质 |
CN114707325A (zh) * | 2022-03-30 | 2022-07-05 | 洛阳师范学院 | 一种基于物理模型的水文过程串并耦合动态模拟方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109767120B (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109767120A (zh) | 一种基于分布式水文模型的产流并行任务调度方法 | |
CN102063336B (zh) | 一种分布式计算多应用功能异步并发调度方法 | |
CN106339351B (zh) | 一种sgd算法优化***及方法 | |
CN108762921B (zh) | 一种Spark集群***的在线优化分区的任务调度方法及装置 | |
CN102243598B (zh) | 分布式数据仓库中的任务调度方法及*** | |
CN104965761B (zh) | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 | |
CN103607466B (zh) | 一种基于云计算的广域多级分布式并行电网分析方法 | |
CN102855293B (zh) | 一种电动汽车及充换电设施***海量数据处理方法 | |
CN102567077B (zh) | 一种基于博弈论的虚拟化资源分配方法 | |
CN104504257B (zh) | 一种基于双重并行计算的在线Prony分析方法 | |
CN112685153A (zh) | 微服务调度方法、装置以及电子设备 | |
CN104965755A (zh) | 基于预算约束的云服务工作流调度方法 | |
Kamthe et al. | A stochastic approach to estimating earliest start times of nodes for scheduling DAGs on heterogeneous distributed computing systems | |
CN106897136A (zh) | 一种任务调度方法及装置 | |
CN106991006A (zh) | 支持依赖和时间平衡的云工作流任务聚类方法 | |
CN111082971A (zh) | 一种面向云负载测试的共享式资源分配方法 | |
CN109976911A (zh) | 一种自适应资源调度方法 | |
CN105550825B (zh) | 云计算环境下的基于MapReduce并行化的柔性工厂作业调度方法 | |
CN106505575A (zh) | 一种基于粒计算的线路潮流经济调度方法 | |
CN105225016B (zh) | 可再生供能的云计算***中基于合作博弈的能量分配方法 | |
CN102081624B (zh) | 一种数据查询的方法及装置 | |
CN110262896A (zh) | 一种面向Spark***的数据处理加速方法 | |
CN109918741A (zh) | 一种适用于大规模水文模拟参数率定方法及率定装置 | |
CN103325012A (zh) | 一种适用于电网安全校核的并行计算动态任务分配方法 | |
Bruder et al. | A hybrid in situ approach for cost efficient image database generation |
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 |