论文部分内容阅读
大流域、高分辨率、多过程耦合的分布式水文模拟计算量巨大,传统串行计算技术不能满足其对计算能力的需求,迫切需要并行计算的支持。当前分布式水文模型的并行计算研究大多以子流域作为调度单元。基于子流域进行并行计算优点是:子流域之间只存在松散耦合关系,通信开销小。但是,很多分布式水文模型的基本模拟单元往往采用比子流域更精细的单元(如栅格),这些模型除了在子流域层次具有可并行性,在基本单元层次也往往具有很好的可并行性。基于子流域的并行计算方法没有利用这些较细层次上的可并行性,因而不能充分发挥这些模型的并行潜力。 针对上述问题,本文提出一种能同时利用子流域层次和更细的基本单元层次上可并行性的分布式水文模型并行计算方法——子流域-基本单元双层并行计算方法,并以作者开发的能体现水流空间运动的分布式水文模型(Spatially Explicit Integrated Modeling,SEIM)为例,对该并行方法进行了研究。 子流域-基本单元双层并行计算方法由两种相互独立且互补的并行计算方法组成,分别是: (1)子流域层次消息传递方式的并行计算方法 在SEIM模型中,子流域只在出口与相邻子流域存在数据依赖关系,子流域层次的并行计算任务间通信量小,因此采用消息传递的方式在计算机集群平台上进行并行计算。对于该层次的并行计算,各个子流域的坡面过程计算不存在相互依赖关系,具有很高的可并行性;而河道汇流过程的计算必须按照从上游到下游的顺序依次进行,不存在上下游关系的子流域可以并行执行,存在上下游关系的子流域只能串行进行,可并行性较差。 针对这一特点,本文在借鉴前人研究成果的基础上,提出了一种坡面和河道过程分离的主从式并行计算方法,该方法中包括一个管理进程、多个计算进程和一个水文数据库,任务分配采用METIS图分解算法。 (2)基本单元层次共享内存方式的并行计算方法 在基本单元层次,SEIM模型中的坡面汇流等水文子过程的并行计算需要较大的通信量,因此采用通信代价小的共享内存并行模型。根据计算特点,可以将基本单元层次的子过程模拟方法分为计算独立型和顺序依赖型两类。对于计算独立型方法,采用简单分块的方式进行并行计算;对于顺序依赖型方法,本文提出一种基于模拟单元分层的并行计算方法。 在上述两种方法中,子流域层次的并行计算可运行于计算机集群环境,在计算架构上具有很好的可伸缩性,但是没有利用子流域内部更细粒度的可并行性,不能充分发挥分布式水文模型的并行潜力。而基本单元层次的并行计算充分利用了基本单元层次的可并行性,但是依赖于共享内存硬件平台,可伸缩性较差。针对两种方法的优缺点,本文将上述两种方法进行组合,得到子流域-基本单元双层并行计算方法,以充分利用两种方法的优点提高并行计算性能。 对两种方法进行组合的思路为:以多核集群为运行平台,首先将子流域的计算任务分配到集群的多个CPU(Central Processing Unit)进行消息传递方式的并行计算,然后利用各个CPU内的多个计算核心,对子流域内部基本单元层次的计算任务进行共享内存方式的并行计算。 选择江西省梅川江流域为研究区,对提出的并行计算方法进行了验证和测试,得到的主要结论如下: (1)本文提出的基于模拟单元分层的并行计算方法在多核计算平台上具有较好的性能。用于模拟单元分层的两种方法(源头距离分层与出口距离分层)互有优劣:出口距离分层方法在负载平衡方面占优,而源头距离分层方法在调度开销方面占优。 (2)本文提出的子流域-基本单元双层并行计算的可伸缩性显著优于单独的子流域或基本单元层次的并行计算,能有效提高大流域高分辨率水文模拟的计算效率。