基于流水线模式的河系径流预报并发计算研究

2023-08-26 12:39胡友兵陈邦慧徐时进陈红雨冯志刚马亚楠
水利信息化 2023年4期
关键词:汇流流水线线程

胡友兵,陈邦慧,徐时进,王 凯,陈红雨,冯志刚,马亚楠

(淮河水利委员会水文局(信息中心),安徽 蚌埠 233001)

0 引言

流域水文系统在某种程度上具有开放且复杂的巨系统特征,流域河系径流预报是利用降雨径流预报方法,对流域各控制节点的径流过程进行连续模拟分析的计算过程[1-3]。降雨径流预报方法大体可以分为经验相关法和水文模型法 2 类[4]。经验相关法是相对成熟、有一定理论依据的常用方法,描述的是自变量与因变量间的统计规律及物理成因联系[5-7]。水文模型法是模拟水文系统内在关系的方法,目的是描述水文现象间内在的联系与变化过程[8-10]。

对于大流域河系降雨径流预报来说,往往存在几十个甚至上百个预报控制节点。为实现河系径流预报计算,我国业务生产部门和相关研究单位结合业务实际和流域特点,先后推出了一系列各具特色的洪水预报系统[11-13]。现有洪水预报系统中,在断面预报次序上,多根据流域内各预报断面上下游水力关系进行编号排序并依次进行分析计算;在单站径流计算中,多根据配置方案依次进行产汇流计算。在河系径流计算中,普遍存在数十乃至上百个预报节点,且节点间径流演进依赖度高。近年来,随着以 B/S 架构为基础的具有预报调度一体化特色的新一代水文模拟系统不断发展[14-15],对河系径流计算效率提出了新要求。为发挥现代 CPU 多核性能,提升河系径流预报计算效率,亟须建立一套适合河系产汇流并发演算的架构体系。本研究借鉴流水线作业模式,将河系径流预报断面初始化、产流过程计算、区间汇流计算、河道洪水演算、校正分析等模块进行拆解,构建流水线式工作站,实现河系径流预报的并发计算,为一体化洪水预报调度类专业应用系统提供基础技术支撑。

1 河系径流计算并发模式构建

1.1 流水线模式

随着多核处理器的普遍推广,线程级并行应运而生。线程级并行通过多核技术并行执行多个线程,从而增大吞吐量,实现性能加速[16-18]。并发算法虽然可以充分发挥多核处理器的性能,但并非所有的计算都可以改成并发的形式,在执行过程中有数据相关性的运算一般难以实现并行化。如在河系径流预报计算中,一方面断面自身产流、汇流等过程具有相关性,另一方面下游断面出流过程依赖上游断面计算结果,因此,难以直接对各断面同时进行并发计算。

在计算机系统结构中,流水线技术是提高处理器性能的重要手段之一。典型的流水线模式如图1 所示。

图1 流水线模式示意图

流水线模式将 1 个任务分解成多个工作流完成,假设现在 1 个任务的第 1 个步骤已经完成,那么将到达第 2 个步骤;如果此时又来了 1 个新的任务,那么第 1 个任务的第 2 个步骤和第 2 个任务的第 1 个步骤将并发执行。如果任务有多个,就可以建立一条流水线模式的连续作业平台,从而实现工作流间的并发计算。工作流之间的传输通信通过 IO 队列完成。

1.2 河系径流计算分解

河流系统中断面间的水力联系(以树状河网为例)一般可以概化为 2 类,一类是无上游关联控制站的源头断面,如图2 中的断面A,B,另一类是具有上游水力联系关联控制站的中间和末端断面,如图2 中的断面C,D。对于断面A,B,径流过程计算相对独立,仅需计算区间自身的产汇流过程;对于断面C,D,径流过程由区间自身径流过程与上游河道演算径流结果叠加得到。

图2 河流系统断面水力联系概化示意图

目前,水文生产业务实践中仍以经验相关法为主,各流域区间一般均有成熟的水文预报方案。其中,产流计算以降雨径流相关线法,汇流计算以时段单位线法,河道洪水演算以马斯京根或汇流系数法最为普遍。此外,为修正计算误差,一般均对模拟结果进行校正计算。

本研究根据河系径流预报过程,将河系径流计算分解为 4 个工作流。工作流 1(W1)是模型的初始化工作,主要完成集水区产汇流单元划分、雨水情站点组成及实时信息读取等任务,负责组装断面站点、单元划分组成及雨水情信息,为工作流 2 提供各类输入信息;工作流 2(W2)是集水区产汇流计算,在经验模型中包括面雨量、净雨、产流、汇流等内容,负责区间产汇流计算,为工作流 3提供区间来水信息;工作流3(W3)是河道洪水演算,负责河道演进计算,为工作流 4 提供上游来水信息;工作流 4 (W4)是来水叠加及校正分析计算。

1.3 河系径流计算并发模式

将每个工作流 W1,W2,W3,W4用一个线程工作站(如图3 中的 P1,P2,P3,P4)实现,按照流水线架构连接,将河系径流节点按水力联系构造径流计算单元集队列,依次将队列元素推入线程工作站。当计算单元各工作流依次进入线程工作站后,即可建立一套线程流水线,实现河系径流并发计算,如图3 所示。

图3 河系径流计算线程流水线工作站

假如工作流 W1,W2,W3,W4的执行时间分别为t1,t2,t3,t4。若采用传统串行方式执行,则总的执行时间为tt1=t1+t2+t3+t4;若以流水线方式,总的执行时间为tt2= max{t1,t2,t3,t4},那么整个任务的加速比为tt1/tt2。由此可见,采用线程流水线方式可以极大加快程序的运行速度,提高吞吐量。

2 试验与应用

2.1 试验区概况

淮河地处我国南北气候过渡带,水文地形复杂,是我国暴雨洪水高频发地区[19-20]。淮河干流从上至下分布有王家坝、正阳关、吴家渡和洪泽湖等 4 个重要控制节点。本研究选取正阳关以上流域为试验区,试验区河流及控制断面分布示意图如图4 所示。

正阳关流域控制面积为 88 630 km2,流域内断面划分及径流预报方案选用《淮河正阳关以上流域短时段水文预报方法研究》[21]成果,其中预报断面共有51 个,降雨径流计算方法以经验相关方法为主。为提升系统计算效率,根据河系上下游演算关系,参考斯特拉勒河网分级算法,构建计算断面演算分级拓扑关系。其中:1 级源头断面有 26 个,直接依赖源头节点的 2 级断面有 11 个,其余 3~7 级断面共有 14 个。

2.2 方法验证及应用

本研究选用 Java 并发包(java.util.concurrent)设计实现河系径流计算线程流水线[22]。根据河系径流流水线工作站线程作业特点,选用定长线程池实例(newFixedThreadPool),该线程池可以控制线程最大并发数,超出线程会在队列中等待。线程间通信传输利用阻塞队列实现。阻塞队列是一个由链表结构组成的双向阻塞队列,支持从队列的头和尾同时操作(插入/删除),并且支持线程安全。

2015—2017 年,淮河水系连续发生超警洪水过程,为验证本方法计算结果的可靠性,选取 3 a 主汛期超警洪水过程进行模拟计算。统计淮河干流王家坝、正阳关 2 个重点控制断面洪峰流量的模拟结果。此外,将本方法与串型结构方法在同一机器(操作系统为统信 UOS20,处理器为 FT-2000,内存为 16 GB)上进行平行实验,3 场洪水计算耗时如表1 所示。

由表1 可知,3 场次洪水期间,王家坝、正阳关断面洪峰流量模拟结果与实测流量基本相当,表明本研究所构建的河系径流预报并发计算方法可靠。较传统串型结构方法加速比为 3.1~3.5,说明基于流水线模式的河系径流预报并发计算方法能够有效提升河系径流预报的计算效率,满足洪水预报实时性要求,尤其适用于 B/S 模式对系统响应效率的需求。

3 结语

河系降雨径流模拟分析降雨形成的区域径流发生发展过程,水旱灾害防御、水资源高效利用、水生态系统保护等领域都以降雨径流模拟结果为基础。为解决河系径流断面间高度依赖关系带来的预报计算效率问题,引入流水线并发模式,对河系降雨径流模型计算流程进行分解,构建河系径流模拟流水线并发模型,并在 Java 并发包平台上实现。

将河系径流模拟计算拆分为 4 个基础计算工作流模块,按照流水线架构连接每个工作流,将河系径流节点按水力联系构造径流计算拓扑队列,依次将队列元素推入线程工作站建立一套线程流水线,实现了河系径流的并发计算。选取淮河水系正阳关以上流域为研究区,对研究区 2015—2017 年主汛期 3 次超警洪水过程进行了模拟计算,结果表明构建的河系径流并发计算方法可靠,计算效率较传统串型结构提升超 3倍,为 B/S 架构下河系径流在线模拟响应效率和系统稳定性提供了技术保障。

需要指出的是,本次实验共开启了 4 条流水线,理论上并发模式较传统串型模式应提升 4 倍效率,但受线程资源、工作流调度等因素影响,实际效率未达到理论值。

猜你喜欢
汇流流水线线程
Gen Z Migrant Workers Are Leaving the Assembly Line
流水线
流域汇流计算方法在风峪沙河段的应用探讨
浅谈linux多线程协作
报废汽车拆解半自动流水线研究
基于ARM CortexM0的智能光伏汇流采集装置设计及应用
一种球载雷达汇流环设计
含有光伏防反器的汇流方案在光伏系统中的应用
SIMATIC IPC3000 SMART在汽车流水线领域的应用
基于上下文定界的Fork/Join并行性的并发程序可达性分析*