一种全分布式流域生态水文模型的快速并行化方法

文档序号:6399882阅读:132来源:国知局
专利名称:一种全分布式流域生态水文模型的快速并行化方法
技术领域
本发明涉及计算机技术及流域水资源技术领域,具体涉及一种全分布式流域生态水文模型的快速并行化方法。
背景技术
流域生态水文模型是全球变化研究的重要工具,通过定量评估人类活动和气候变化对流域生态水文过程的影响,为全球变化下流域管理决策的制定提供科学支撑,是当前国内外研究的前沿和热点问题。全分布式流域生态水文模型通过将流域划分为异质性空间计算单元,充分考虑水文水资源要素在空间上的变化,充分考虑流域内空间计算单元之间数量交换和相互影响,从而更为合理地刻画气候变化和人类活动影响下的流域生态水文过程。全分布式的流域生态水文模型具有时空数据密集和计算密集的特点,主要体现在:1)流域生态水文模拟高度复杂,需大量的数据和参数输入,同时生成大量的中间变量,具有计算密集的特点;2)全空间分布式的生态水文模型涉及大量的栅格数据,随着流域面积的扩大(如大尺度流域),栅格单元急剧增加,所涉及的数据量和计算量也急剧增加,具有计算密集型特点;3)流域生态水文过程计算要求较高的时间动态性,时间步长往往为小时或分钟尺度,具有数据密集的特点。生态水文模型对高性能计算提出了很高的要求,传统的串行计算模式难以满足其要求,迫切需要发展流域全分布式生态水文模型的并行技术。目前,并行计算技术在流域生态水文过程模拟中的应用尚且处于起步阶段,主要集中于水文过程模拟,对于流域生态水文耦合模型的并行计算研究较少;现有研究大多采用基于消息传递模型的MP1、共享内存模型的OpenMP以及MPI+OpenMP的混合并行模型,然而,随着流域面积的增加,不仅带来数据量的增加,任务之间更为复杂的数据依赖关系也使得传统的并行处理算法在并行处理过程中的控制逻辑非常复杂,从而导致算法的并行处理性能的扩展性差。

发明内容
本发明的目的是提供一种全分布式流域生态水文模型的快速并行化方法,以克服目前现有方法存在上述不足。本发明的目的是通过以下技术方案来实现:
一种全分布式流域生态水文模型的快速并行化方法,所述方法包括以下步骤:
步骤一:将流域划分为栅格单元,以栅格单元为基本计算单元,同时根据DEM进行地形分析,从而获取栅格流向关系,并建立流域内所有栅格计算任务依赖关系;
步骤二:按生态水文过程计算的数据传递关系,对全分布式生态水文模型的栅格计算任务进行分解;
步骤三:步骤二中栅格计算任务分解后,将栅格计算任务封装为独立运行的计算任务,每个计算任务具有相同的计算方法和输入输出文件,保证每个计算任务可以分配到不同的处理器上进行独立运算; 步骤四:根据步骤一中得到的所述流域内栅格的水流依赖关系,将全分布式生态水文模型的所有栅格计算任务进行解耦,并构建基于栅格计算任务依赖关系的任务树;
步骤五:采用DAG模型对步骤四中的任务树进行表示;
步骤六:根据DAG模型和边际消除的动态调度算法求解有效的任务调度方案,动态的生成任务调度序列;
步骤七:根据任务调度序列,提交PBS任务调度器,实现模型的并行计算。进一步的,栅格计算任务可并行性分解为弱数据相关性的垂向生态水文过程计算和强数据相关性的侧向生态水文过程计算;所述垂向的生态水文过程计算主要包括降雨、蒸发、坡面产流、植物光合、蒸腾、根系吸水等过程的输入和输出的计算;所述侧向生态水文过程计算为坡面汇流过程的计算,即水流在栅格单元与栅格单元之间的迁移过程,下游栅格的计算考虑上游栅格的来水量,栅格单元之间存在较强的数据依赖性。进一步的,为实现栅格单元的计算任务封装为独立运算的任务,需调整流域生态水文模型的时空循环顺序,在每一个栅格完成整个模拟时段的生态水文过程计算后,再进行下一个栅格整个模拟时段的运算,上下游栅格之间的水流交换通过文本方式传递,避免复杂的参数传递。进一步的,步骤四中所述的任务树中设有若干节点,所述节点与全流域内栅格计算任务相对应,若两个栅格计算任务之间存在依赖关系,在树中对应节点就存在父子关系,即上游栅格为父结点,其下游栅格作为其子结点,子结点的计算任务需等父结点完成了才能执行。缩略语:DEM:数字高程模型;DAG:数据库可用性组;PBS:工作负载管理器和调度器;XML:可扩展标记语言。本发明的有益效果为:(I)本发明将流域生态过程和水文过程的耦合模拟进行并行化,突破了现有的流域模型并行化的单一性;(2)本发明以栅格为基本计算单元,将栅格的计算任务分配到多个计算节点,大大降低模型的并行粒度,有效提高并行计算效率;(3)本发明中采用的基于DAG模型和边消除的动态调度算法,极大简化并行处理算法的并行逻辑控制;(4)本发明通过修改模型时空循环设计,将栅格单元的计算任务可作为独立运算的任务,在流域栅格计算任务解耦基础上将栅格计算任务直接提交给PBS任务调度器,从而避免了复杂的逻辑控制和消息传递,大大提高并行稳定性。


下面根据附图对本发明作进一步详细说明。图1是本发明实施例所述的一种全分布式流域生态水文模型的快速并行化方法的流程 图2是本发明实施例所述的一种全分布式流域生态水文模型的快速并行化方法中任务树的构建不意 图3是本发明实施例所述的一种全分布式流域生态水文模型的快速并行化方法中基于DAG模型和边消除的动态任务树调度方法的流程图。
具体实施方式
如图1所示,本发明实施例所述的一种全分布式流域生态水文模型的快速并行化方法,以全分布式流域生态水文模型DisVOM的并行化实现为例,所述方法包括以下步骤:
步骤一:将流域划分为栅格单元,以栅格单元为基本计算单元,同时根据DEM(数字高程模型)进行地形分析,从而获取栅格流向关系,并建立流域内所有栅格计算任务依赖关系,其中,栅格流向计算采用的算法为Arcinfo的单流向算法;
步骤二:对全分布式生态水文模型的栅格计算任务进行分解,栅格计算任务可并行性分解为弱数据相关性的垂向生态水文过程计算和强数据相关性的侧向生态水文过程计算,DisVOM模型的垂向的生态水文过程计算主要包括降雨、蒸发、坡面产流、植物光合、蒸腾、根系吸水等过程的计算;所述侧向生态水文过程计算为坡面汇流过程的计算;
步骤三:栅格计算任务分解后,将栅格计算任务封装为独立运行的计算任务,具体如
下:
将DisVOM模型运算的时空循环设置为先做空间循环再做时间循环,栅格完成整个模拟时段的生态水文过程计算后,再进行下一个栅格的运算,将栅格单元生态水文过程计算封装为可独立运行的计算任务,上下游栅格之间的水流交换通过文本方式传递;每个栅格的计算任务具有相同的程序代码(exe文件)、输入输出文件和XML文件,其中,XML文件记录每一个栅格的基本信息(栅格序号、上游栅格ID、下游栅格ID,栅格流向等)、输入输出文件(如气象输入、模型参数、模型控制文件、模型输出结果文件等)。如图2所示,步骤四:根据步骤一中得到的所述流域内栅格的水流依赖关系,将全分布式生态水文模型的所有栅格计算任务进行解耦,并构建基于栅格计算任务依赖关系的任务树,所述的任务树中设有若干节点,所述节点与全流域内栅格计算任务相对应,具体如下:
根据栅格的水流依赖关系,将流域内所有栅格的计算任务进行解耦,具体方法如下:将流域内最上游栅格(即没有上游栅格水流流入)作为优先级最高的计算任务(如图2中栅格1-4),最上游栅格的流出栅格(图2中栅格5、6、7)则作为优先级次之的栅格,即栅格I计算任务完成后才能运算栅格5,栅格2和栅格3的任务都完成了,才能计算栅格6,栅格8和栅格9计算任务优先级更次之,依次类推,直到流域的出口栅格,建立全流域的栅格计算顺序关系;将优先级最高的栅格作为父结点,其流出栅格作为子结点,从而建立了全流域内栅格计算的任务树。该任务树为多叉任务树,子结点的计算任务需等父结点完成了才能执行,多叉树中的任何一条通路都需要按照从上游到下游的顺序依次执行。如图3所示,步骤五:采用DAG模型G= (V, E,W,H, LS)对步骤四中的任务树进行描述。其中,V为结点集合,对应于流域中的栅格单元:V = { vl, v2, v3,v4, v5, v6, v7, v8, v9, vlO } ;E为有向边的集合,对应于具有上下游关系的栅格对:E= {(vl , v5 ) , ( V 2,v6 ),( v3,v6 ),( v4, v7), ( v5 , v8 ) , ( v6,v9 ),
(v7, v9 ) , ( v8, vlO), ( v9, vlO) } ;W是每个结点(任务)的计算时间估计值;任务高度Hp(Vi)表示DAG图中,从一个入结点到结点Vi的最长距离,它不包括结点Vi本身的计算时间估计值;任务高度Hb (Vi)则表示由结点Vi的到出口结点的最长距离。步骤六:根据DAG模型和边际消除的动态调度算法求解有效的任务调度方案,动态的生成任务调度序列,具体步骤如下:
I)建立任务调度序列出事优先级。在本发明中,任务高度Hb值较小的任务将被赋予较高的任务优先级,被优先调度。在估计任务树中每个任务计算时间基础上,建立初始任务调度序列。2)在任务树的初始调度序列确定后,构建就绪队列(ReadyQueue)和运行队列(RunningQueue)两个状态队列,并根据任务执行情况动态调整后续任务结点的任务优先级,并将该任务结点和及其所有的边从任务树中移除,随后将就绪任务放入就绪队列,就绪队列将就绪任务提交给PBS调度器在集群多处理上进行任务调度。3)任务完成后,移除该任务结点,更新任务树任务优先级,重新计算DAG模型中任务结点参数,构建新的状态队列并对任务进行动态调度。步骤七:根据任务调度序列,提交PBS任务调度器,实现模型的并行计算。全分布式的流域生态水文过程模拟中,栅格计算单元之间存在复杂的水流交换,但非上下游关系的栅格单元之间不存在依赖关系,可以进行并行计算,因此,可以根据流域栅格单元的依赖关系,可将流域内所有的栅格计算任务划分为存在依赖关系的和不存在依赖关系,其中不存在依赖关系的可并行计算,存在依赖关系的,可根据其前驱后继的数据依赖关系进行任务树构建,依次顺序计算;流域内栅格上下游依赖关系的解耦,基本原理是基于栅格流向关系,将最上游栅格作为最高级别的父结点,其下游栅格即水流流出的栅格,作为其子结点,依次类推,直到流域的出口栅格,从而就建立了全流域内栅格计算的任务树。本发明中所采用的任务树动态调度算法是一种改进的动态表调度算法,该算法的基本原理是通过构建状态队列对调度序列进行动态调度,给就绪的任务动态分配处理器资源并提交PBS调度器,任务完成后更新任务树并消除该任务结点,从而保证任务集在完全符合任务间数据依赖关系的逻辑顺序下并行地调度和执行,并使任务的完成时间最小。 本发明不局限于上述最佳实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本申请相同或相近似的技术方案,均落在本发明的保护范围之内。
权利要求
1.一种全分布式流域生态水文模型的快速并行化方法,其特征在于,所述方法包括以下步骤: 步骤一:将流域划分为栅格单元,以栅格单元为基本计算单元,同时根据DEM进行地形分析,从而获取栅格流向关系,并建立流域内所有栅格计算任务依赖关系; 步骤二:按生态水文过程计算的数据传递关系,对全分布式生态水文模型的栅格计算任务进行分解; 步骤三:步骤二中栅格计算任务分解后,将栅格计算任务封装为独立运行的计算任务,每个计算任务具有相同的计算方法和输入输出文件,保证每个计算任务可以分配到不同的处理器上进行独立运算; 步骤四:根据步骤一中得到的所述流域内栅格的水流依赖关系,将全分布式生态水文模型的所有栅格计算任务进行解耦,并构建基于栅格计算任务依赖关系的任务树; 步骤五:采用DAG模型对步骤四中的任务树进行表示; 步骤六:根据DAG模型和边际消除的动态调度算法求解有效的任务调度方案,动态的生成任务调度序列; 步骤七:根据任务调度序列,提交PBS任务调度器,实现模型的并行计算。
2.根据权利要求1所述的全分布式流域生态水文模型的快速并行化方法,其特征在于:步骤二中栅格计算任务可并行性分解为弱数据相关性的垂向生态水文过程计算和强数据相关性的侧向生态水文过程计算。
3.根据权利要求2所述的全分布式流域生态水文模型的快速并行化方法,其特征在于:所述垂向的生态水文过程计算主要包括降雨、蒸发、坡面产流、植物光合、蒸腾、根系吸水等过程的输入和输出的计算;所述侧向生态水文过程计算为坡面汇流过程的计算,即水流在栅格单元与栅格单元之间的迁移过程,下游栅格的计算考虑上游栅格的来水量,栅格单元之间存在较强的数据依赖性。
4.根据权利要求3所述的全分布式流域生态水文模型的快速并行化方法,其特征在于:步骤四中所述的任务树中设有若干节点,所述节点与全流域内栅格计算任务相对应。
全文摘要
本发明涉及一种全分布式流域生态水文模型的快速并行化方法,该方法以栅格为基本计算单元,通过DEM地形分析获得流域栅格流向图并建立栅格的计算依赖关系,将栅格单元垂向的生态水文过程模拟作为独立计算任务,根据栅格单元间的依赖关系解耦栅格单元计算任务并构建任务树,采用DAG模型表达任务树,利用DAG模型和边消除的动态调度算法动态地生成任务调度序列,并通过PBS动态调度器将栅格计算任务分配到不同的节点上进行运算,实现全分布式流域生态水文模型的并行化。本发明的有益效果为本方法操作简单,实用性强,极大的简化并行处理算法的并行逻辑控制,有效提高并行计算效率,提高了并行稳定性。
文档编号G06F9/38GK103164190SQ20131006640
公开日2013年6月19日 申请日期2013年3月2日 优先权日2013年3月2日
发明者陈腊娇, 王力哲, 马艳, 刘军志 申请人:中国科学院对地观测与数字地球科学中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1