首页 / 专利库 / 燃料种类 / 可再生能源 / 水电 / 一种基于分布式水文模型的产流并行任务调度方法

一种基于分布式文模型的产流并行任务调度方法

阅读:272发布:2020-05-08

专利汇可以提供一种基于分布式文模型的产流并行任务调度方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于分布式 水 文模型的产流并行任务调度方法,涉及水资源调度技术领域。该方法首先根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间;然后使用快速排序 算法 对子流域产流模拟时间进行排序,得到一个优先级调度表;之后将待调度的子流域进行分组,组数依据并行的线程数而定,依据优先级表和每组添加的任务时间累计值实现动态分配;最后采用共享内存OpenMP并行 框架 对各组进行线程分配。所以,本发明通过排序分组预处理后,减少了子流域并行分配时的空闲和开销时间,能够适应当今 多核处理器 的应用前景,提高了分布式水文模型的计算速度,优化了产流并行任务调度过程。,下面是一种基于分布式文模型的产流并行任务调度方法专利的具体信息内容。

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()将线程号与每组分配完成的子流域编号绑定,开始并行计算。

说明书全文

一种基于分布式文模型的产流并行任务调度方法

技术领域

[0001] 本发明涉及水资源调度技术领域,尤其涉及一种基于分布式水文模型的产流并行任务调度方法。

背景技术

[0002] 分布式水文模型是流域水循环研究的重要工具,考虑了气候和下垫面因子的空间异质性,通过定量评估人类活动和气候变化对流域生态水文过程的影响,为全球变化下流域管理决策的制定提供科学支撑,是当前国内外研究的前沿和热点问题。分布式水文模型通过将流域划分为异质性空间计算单元,充分考虑水文水资源要素在空间上的变化,充分考虑流域内空间计算单元之间数量交换和相互影响,从而更为合理地刻画气候变化和人类活动影响下的流域水文过程。分布式水文模型具有时空数据密集和计算密集的特点,主要体现在:1)流域水文模拟高度复杂,需大量的数据和参数输入,同时生成大量的中间变量,具有计算密集的特点;2)全空间分布式的水文模型涉及大量的栅格数据,随着流域面积的扩大(如大尺度流域),栅格单元急剧增加,所涉及的数据量和计算量也急剧增加,具有计算密集型特点;3)流域水文过程计算要求较高的时间动态性,时间步长往往为小时或分钟尺度,具有数据密集的特点。分布式水文模型模拟对高性能计算提出了很高的要求,传统的串行计算模式难以满足其要求,迫切需要发展分布式水文模型的并行技术。
[0003] 将并行计算应用于水文模型模拟研究领域,可以提升水资源演变规律分析、水资源评价等的运行速度。但是,随着分布式水文模型要解决的问题规模的不断扩大,负载不平衡问题和线程开销问题一直影响着并行速度,现有的静态均匀分配和动态选择调度方法只能兼顾一个方面,还存在着很大的缺点,因此有必要优化调度方法。

发明内容

[0004] 本发明的目的在于提供一种基于分布式水文模型的产流并行任务调度方法,从而解决现有技术中存在的前述问题。
[0005] 为了实现上述目的,本发明采用的技术方案如下:
[0006] 一种基于分布式水文模型的产流并行任务调度方法,包括如下步骤:
[0007] S1、根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定待调度的子流域产流模拟时间;
[0008] S2、使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;
[0009] S3、将待调度的子流域进行分组,在分组的过程中,组数依据并行的线程数而定,依据优先级调度表和每组添加的任务时间累计值实现动态分配;
[0010] S4、采用共享内存OpenMP并行框架的方法对各组进行线程分配,实现子流域产流并行任务调度。
[0011] 优选地,S1具体为,基于确定的流域分布式水文模型和已知的输入数据,以子流域划分基本单元,选取一年为模拟单位,每个子流域产流模拟时间固定不变,通过在产流程序模首尾添加标记,输出每个子流域产流模拟时间,得到一个子流域产流模拟时间表,该产流模拟时间表具有一定的规律,用于为其它年份产流模拟时间提供参考。
[0012] 优选地,S2具体为,将产流模拟时间作为比较的元素,基于分治法选择一个时间作为基准值,大于基准值的元素放在前面,小于基准值的元素放在后面,进行分区操作,对每个分区中的元素继续排序,递归地把小于基准值的子数列和大于基准值的子数列排序,得到一个从大到小排序的优先级调度表。
[0013] 优选地,S3中,所述依据优先级调度表和每组添加的任务时间累计值实现动态分配,具体为,在分配过程中,首先,将优先级表最前的n个子流域(即产流模拟时间最长的子流域)分配到n个组中,每组对应一个子流域,对应次序可随机,然后每次分配新的子流域,从优先级表中未分配的从前往后选取,都对每组产流模拟时间累计值做一个排序,累计值最小的可以添加新的子流域,直至所有的待处理的并行任务均分组完成。
[0014] 优选地,S4中,所述共享内存OpenMP并行框架的方法,具体为,通过并行指令omp_set_thread_num()将线程号与每组分配完成的子流域编号绑定,开始并行计算。
[0015] 本发明的有益效果是:本发明提供的基于分布式水文模型的产流并行任务调度方法,首先根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间;然后使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;之后将待调度的子流域进行分组,组数依据并行的线程数而定,依据优先级表和每组添加的任务时间累计值实现动态分配;最后采用共享内存OpenMP并行框架对各组进行线程分配。所以,本发明通过排序分组预处理后,减少了子流域并行分配时的空闲和开销时间,能够适应当今多核处理器的应用前景,结合分布式水文模型的自身特点,提高了分布式水文模型的计算速度,优化了产流并行任务调度过程。附图说明
[0016] 图1是本发明提供的基于分布式水文模型的产流并行任务调度方法流程示意图;
[0017] 图2是具体实施例中子流域的产流模拟时间;
[0018] 图3是具体实施例中得到的优先级调度表;
[0019] 图4是具体实施例中对子流域进行动态分配的过程和结果示意图;
[0020] 图5是具体实施例中OpenMP的Fork/Join并行框架及线程分组绑定示意图。

具体实施方式

[0021] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
[0022] 如图1所示,本发明实施例提供了一种基于分布式水文模型的产流并行任务调度方法,包括如下步骤:
[0023] S1、依据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间。
[0024] 在步骤S1中,基于确定的流域分布式水文模型和已知的输入数据,以子流域划分基本单元,选取一年为模拟单位,每个子流域产流模拟时间固定不变,通过在产流程序模块首尾添加标记,输出每个子流域产流模拟时间,得到一个子流域产流模拟时间表,该年产流模拟时间表具有一定的规律(各子流域产流模拟时间参差不齐),可以为其它年份产流模拟时间提供参考(由于子流域所在的地理位置和地形地貌条件限制等,每年输入数据变化不大的条件下,该子流域的产流模拟时间每年基本不变,模拟其中一年的产流时间,适用其它年份)。
[0025] 如图2中所示,10个数组表示子流域的产流模拟时间,其中,每个数组的第一位表示子流域编号,第二位表示产流模拟时间,根据每个子流域所在的地理环境不同,产流模拟时间有很大差异。
[0026] S2、使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表。
[0027] 在步骤S2中,依据快速排序算法将产流模拟时间作为比较因子,基于分治法选择一个基准时间,大于基准值的元素放在前面,小于基准值的元素放在后面,进行分区操作,分区中继续排序,递归地把小于基准值的子数列和大于基准值的子数列排序。
[0028] 将图2中的10个数组按照上述方法进行排序,把产流模拟时间长的子流域放在前面,短的放在后面,在产流模块中按产流模拟时间从长到短把子流域排序。
[0029] 如图3所示,得到一个从大到小的次序表,供任务调度优先级参考。
[0030] S3、将待处理的并行任务分组,组数依据并行的线程数而定,由优先级表和每组添加的任务时间累计值实现动态分配。
[0031] 在实际分组过程中,首先确定并行的线程数,例如,并行的线程数为4,则对图3中所示的10个子流域进行4组动态分配,分配过程中,首先,将优先级表最前的4个子流域(即产流模拟时间最长的子流域)分配这四组,每组对应一个子流域,对应次序可随机,然后每次分配新的子流域(从优先级表中未分配的从前往后选取)都需要对每组产流模拟时间累计值做一个排序,累计值最小的可以添加新的子流域,直至所有的待处理的并行任务均分组完成。如图4所示,对10个子流域进行4组动态分配,得到最终的累加时间呈现均匀分布,当子流域数量更多时,各组产流模拟时间累计值呈现均匀分布的效果会更加明显。
[0032] S4、采用共享内存OpenMP并行框架对各组进行线程分配。
[0033] 本实施例中,根据产流模块中各子流域间产流相对独立,之间没有数据交换的特点,在相对流行的OpenMP、MPI并行方法等选取前者,由于OpenMP的线程级相比于MPI的进程级可以共享数据,不需进行通信行为,只需在子流域循环级添加主要并行语句,就可以高效的完成并行化,节省时间,降低难度。
[0034] 在步骤S4中,通过并行指令omp_set_thread_num()将线程号与每组分配完成的子流域编号绑定,开始并行计算。如图5所示,结合OpenMP的Fork/Join并行框架,串行域时主线程执行,遇到并行域开启从线程同时执行,当并行域中线程号为0时,执行a组中的子流域编号,线程号为1时,执行b组中的子流域编号,以此类推。
[0035] 可见,采用上述方法,一次分组预处理技术既可以实现问题的一次性均匀分配,减少了动态分配次数过多的线程开销,又由于每个线程的负载时间分配均匀,优化了静态均匀分配下的负载不平衡问题。
[0036] 所以,本发明不仅可以用于大尺度流域水文模型的产流并行任务调度,而且通过将待并行任务子流域进行分配组合预处理技术及采用OpenMP并行框架,优化了产流部分的并行时间,提高了分布式水文模型的并行速度。
[0037] 通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明提供的基于分布式水文模型的产流并行任务调度方法,首先根据分布式水文模型模拟的大尺度流域进行产流模拟时间度量,确定循环子流域产流模拟时间;然后使用快速排序算法对子流域产流模拟时间进行排序,得到一个优先级调度表;之后将待调度的子流域进行分组,组数依据并行的线程数而定,依据优先级表和每组添加的任务时间累计值实现动态分配;最后采用共享内存OpenMP并行框架对各组进行线程分配。所以,本发明通过排序分组预处理后,减少了子流域并行分配时的空闲和开销时间,能够适应当今多核处理器的应用前景,结合分布式水文模型的自身特点,提高了分布式水文模型的计算速度,优化了产流并行任务调度过程。
[0038] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈