天气预报模型:软件体系结构与性能
J. MICHALAKES, J. DUDHIA, D. GILL, T. HENDERSON,
J. KLEMP, W. SKAMAROCK, W. WANG
中小尺度气象部门,国家大气研究中心,Boulder,美国科罗拉多80307
2004年5月第一个非测试版的天气研究和预报(WRF)建模系统是为大气研究和运行NWP用户设计和实施全功能的下一代建模系统的一个关键的里程碑社区。以效率,可移植性,可维护性和可扩展性作为基岩需求,WRF软件框架允许增量和合理的快速开发,同时保持总体一致性和坚持架构及其接口。 WRF 2.0版本支持该模型设想的全部功能,包括在一系列高性能计算平台,多个动态核心和物理选项上的高效可扩展性能,低开销双向交互嵌套,移动嵌套,模型耦合,以及与其他常见模型基础设施工作(如ESMF)的互操作性。
1.介绍
WRF项目已经开发了下一代中尺度预报模型和同化系统,以推进中尺度降水系统的理解和预
测,并促进研究和运营预测社区之间的更紧密的联系。随着2004年5月向社区发布WRF 2.0版本,将WRF建模系统广泛传播给大量用户,并将其应用于各种领域,包括风暴规模研究和预测,空气质量模拟,
图1 WRF系统示意图
野火模拟,飓风和热带风暴预测,区域气候和作战数字天气预报正在良好进行。2004年年底,注册
下载次数超过2,500件。来自20个国家的93个机构的173名参与者于2004年6月在NCAR参加了年度WRF用户研讨会,并听取了28次涉及以WRF模式开展工作的科学报告。在NOAA国家环境预测中心和美国空军气象局,正在进行WRF的运行实施。已经形成了NOAA / NCAR / DoD联合发展试验中心,以促进研究界的新发展的持续测试,评估和过渡在NCEP,AFWA和美国海军通过在各中心建立的操作测试中心的操作。
    如图1所示,WRF系统包括WRF模型本身,用于为理想化,实数据和单向嵌套预测产生初始和横向边界条件的预处理器,用于分析和可视化的后处理器,以及三维变化数据同化(3DVAR)程序。除了标准初始化(SI)程序之外,每个预处理器和3DVAR是使用WRF高级软件框架(ASF)实现的并行程序。程序之间的数据流通过ASF的I / O和模型耦合API输入和输出。 WRF模型(图中的大框)包含两个动态内核,为机构和应用程序提供额外的灵活性。 NCAR开发的高级研究WRF(ARW;最初的欧拉质量或“EM”核)使用时分高阶Runga-K
utta方法来整合可压缩非静力方程的保守公式[16]。 ARW作为WRF第2版为研究界提供支持,正在美国空军气象局正在运行实施。 NOAA / NCEP的WRF的操作实现使用适应于来自非流体静力中尺度模型(NMM)的WRF ASF的动力学[3] [8] [9] [15]
WRF ASF实现了WRF软件架构[11],是WRF模型和3DVAR系统开发的基础。它具有模块化的层次化软件组织,可以将科学代码与并行性以及其他架构,实现和安装相关的问题隔离开来。这种设计对于管理一系列用户,应用程序和平台的单源代码模型的复杂性也至关重要。
本文介绍WRF软件的实现和性能,包括WRF 2.0中提供的新功能:双向交互和移动嵌套,支持模型耦合,以及与新兴社区建模基础设施(如地球系统建模框架)的互操作性。
2.WRF高级软件框架
WRF ASF包括多个可分离层和支持组件:驱动器层,中介层,模型层,称为注册表的元编程实用程序,以及用于处理器间通信,数据格式的外部包的应用程序接口(API) I / O。 WRF ASF的好处是促进快速开发,易于扩展,充分利用WRF社区的开发工作,软件重用,以及适应社区模型基础设施(如ESMF)。
驱动层处理模型域数据结构的运行时分配和并行分解;组织,管理,交互和控制嵌套域,包括模型中的主时间循环;高级别接口到模型域上的I / O操作;以及当WRF是更大耦合的应用系统的一部分时与其他组件的接口。在驱动程序中,每个域都抽象地表示为单个对象:Fortran90派生数据类型,包含动态分配的状态数据,指向嵌套层次结构中的其他域。嵌套表示为根源于顶级(最粗糙分辨率)域的域的树。每个模型时间步长涉及递归深度优先遍历这棵树,推进每个节点及其子节点到下一个模型时间。强制,反馈和嵌套移动也在驱动程序中处理。
中介层包含单个模型域上的特定动态核心的一个时间步长。动态核心的求解例程包含对模型层例程的完整集合调用以及处理器间通信(晕轮更新,并行转置等)和多线程的调用。当前的WRF实现使用RSL通信库[12],而RSL通信库又使用消息传递接口(MPI)通信包。在使用OpenMP的求解例程中还规定了片上的共享存储器并行性 - 分布式内存补丁内的第二级域分解。
模型层包括构成模型的实际计算例程:平流,扩散,物理参数化等。模型层子程序通过标准模型层接口调用:所有状态数据作为参数,连同正在计算的图块的三个网格维度中的每一个中的起始和结束索引一起被传递。模型层子例程可以不包括I / O,停止语句,多线程或处理
器间通信,确保它们可以针对任何瓦片分解或在瓦片上执行的顺序被连贯地执行。模型层接口是ASF与在模型层工作的程序员/科学家之间的合同。遵守接口确保结合到WRF中的模型层包将在框架本身被移植到的任何并行计算机上工作。具有数据依赖性的模型层例程依赖于中介层在它们被调用之前执行必要的处理器间通信。程序员通过向注册表添加条目来描述通信类型和模式,然后插入符号以在求解例程中的适当位置执行通信。
注册表是关于WRF数据结构的信息的简明数据库,以及用于从数据库中的符号自动生成大部分WRF
图2嵌套分解与通讯天气预报代码大全
代码的机制。注册表数据库是表的集合,列出并描述了WRF状态变量和数组及其属性,例如维度,时间级数,与特定动态核心的关联,与特定物理包的关联,输入的成员资格,输出,或重新启动数据集,对数据进行通信操作,以及一些描述性元数据,例如变量或数组表示的内容及其单位。从该数据库,注册表生成用于基础设施的层之间的接口的代码,用于通信和嵌套的打包和解包代码以及对于模型I / O代码的例程的逐字段调用,否则将极其耗时并且容易进行手动写入和管理。在WRF中添加或修改状态变量或数组是在注册表中修改一行或两行的问题。目前,注册管理机构自动生成总共250万条WRF代码中的60万条。
外部软件包的API也是WRF软件框架的一部分。这些允许WRF使用不同的软件包用于自描述数据格式,模型耦合工具包和库,以及通过简单地将外部软件包适配到接口来进行处理器间通信的库。清洁API还支持在其他方向重用;例如,地球系统建模框架开发人员正在调整WRF I / O API以在ESMF软件中使用。
WRF基础设施的文档,包括注册表的参考文档,WRF I / O应用程序接口规范以及基于Web的WRF代码和文档浏览器[6]在线维护。WRF的其他软件文档正在进行中。
3.巢和移动巢
嵌套是网格细化的一种形式,其允许将昂贵的较高分辨率计算集中在感兴趣区域上。 WRF 2.0包括对单向和双向交互嵌套域的支持。 WRF中的嵌套是非旋转和对齐的,使得父网格点与下面的嵌套上的点重合,这消除了对更复杂的广义重新格栅计算的需要。嵌套配置在运行时通过名称列表指定。 WRF ASF支持在模拟期间的任何时间创建和删除嵌套,但是如果运行需要嵌套分辨率地形或其他下边界数据的输入,则WRF模型当前被限制为开始嵌套;这个限制将在不久的将来得到解决。巢可以伸缩(嵌套在巢内)到任意水平的细化水平。垂直细化尚未实现。精化比是整数,通常为1:3。在2.0.3版本中发布了移动嵌套的原型实现。这个版本用于4公里移动巢模拟飓风伊万(2004年9月)。可以在线查看动画。
高效和可扩展的嵌套实现是一个关键问题。嵌套模拟中的所有域都在同一组进程上分解,嵌套域与父进程同步运行。交换强制和反馈信息需要通信以在每个父时间步骤中跨进程散布和收集数据。此外,父域数据到嵌套点的插值是负载不平衡的,因为它仅在父域和嵌套共享的域的区域上发生。这通过首先将父域数据重新布置到存储对应的嵌套域点的过程而被部分地减轻,允许在本地和在更大数量的过程上执行内插。图2示出了覆盖嵌套边界(包括用于西北巢角的“a”和“b”)的过程的父域数据被传送到计算嵌套边界(包括过程“c”)的过程。通过同一组进程)。在重排父域数据之后,在嵌套边界处理上局部地执行父 - 嵌套网格插值。
嵌套开销通过将同等大小的父域和嵌套域运行为双向交互域,然后分别作为独立的单域运行来衡量。嵌套的开销在5%和8%之间,取决于过程的数量,以及在并行MM5模型中观察到的15%开销的目标内。大多数开销出现与内插的成本相关,其使用相对昂贵的非线性算法。
移动嵌套的方法与双向嵌套相同,一些额外的逻辑添加到框架和模型代码:
1.确定是否是移动的时间,如果是,移动的方向和距离。
2.调整嵌套点上的点与父域上的对应点之间的关系。
3.在嵌套移动的相反方向上在嵌套的2维和3维状态数组中移动数据。
4.当嵌套移动到相对于父域的新位置时,初始化嵌套的前边缘。
在上述步骤1中需要另外的工作以结合自动特征跟随嵌套移动机制,并且在步骤4中允许运行时间摄取嵌套分辨率下边界数据,例如在移动的前边缘上的地形和土地利用巢。最后,将解决将移动耦合到诸如海洋模型的外部模型的问题。
4.I / O和型号耦合
WRF ASF中的I / O和模型耦合API在WRF模型和用于I / O和数据格式化的外部软件包之间提供了一个统一的,与软件包无关的接口。用于NetCDF,并行HDF5,本地二进制和GRIB1 I / O的API的实现可运行时分配给框架的I / O流.WRF I / O和模型耦合API也支持模型耦合,在[5] [6]下和PRISM耦合框架[7]中完善的一个想法。 “耦合作为I / O”是有吸引力的,因为它允许在已经存在用于I / O的模型的控制结构和接口内封装组件数据交换的细节。它需要对模型本身很少(如果有的话)修改,它容易且有效地适应于不同形式的耦合(顺序或并行),它可以在在线和离线模式之间透明地(从应用的角度)切换,耦合,并且它自然地适合于诸如网格计算的分布式计算环境。
已经开发了WRF I / O和模型耦合API的两个模型耦合实现:模型耦合工具包(MCT)[10]是社区气候系统模型(CCSM)耦合器的基础;模型耦合环境库(MCEL)[2]是基于CORBA的基于客户端 - 服务器的耦合框架。
图3黄海模拟的耦合图显示WRF(大气),ADCIRC(海洋环流),SWAN(波模型)和LSOM(沉积物光学)。 WRF的U和V速度为空气; U和来自ADCIRC的是水。
WRF I / O和模型耦合API的MCT实现支持对WRF和区域海洋建模系统(ROMS)之间紧密耦合到适度耦合的相互作用的边界条件的定期,计划的交换。 WRF风应力和热通量被发送到海洋模型,并且从ROMS接收海表面温度。执行WRF / ROMS耦合的三个性能基准,并且
耦合开销是标称的,远低于耦合系统的总运行时间的1%。耦合的WRF / ROMS系统已被用于后续的科学研究,涉及[14]中描述的理想化的飓风涡流。 WRF / ROMS MCT实现已经在Globus工具包中的MPICH-G2库在基本的计算网格上进行了演示.1 ROMS在西雅图NOAA太平洋海洋环境实验室(PMEL)的一个Intel Linux节点上运行; WRF在博尔德NOAA预报系统实验室(FSL)的四个Linux节点上。即使在地理分布式系统中,使用基于Globus的MCT的WRF / ROMS耦合的开销也小于2%。
WRF I / O和模型耦合API的MCEL实现支持具有更宽范围的空间和时间尺度或者不规则的数据驱动的相互作用的模型集合的耦合。图3显示了1999年11月的一个高风力事件的黄海沿海环境的四模型模拟的输出.WRF耦合到由ADCIRC海洋和SWAN波模型组成的系统。 ADCIRC和SWAN反过来提供了一个模拟潜水员可见度的沉积和光学模型[1]。使用非结构化网格的ADCIRC也通过WRF I / O API与MCEL接口,以证明其适用于其他模型和网格系统。 MCEL支持并发耦合,意味着组件在不同组的处理器上同时运行。图4显示了组件之间的相互作用的时序。与MCT一样,测量的耦合开销很小。 WRF,大气,是模拟的主要成本。因此,我们从WRF大气的角度测量耦合开销。从WRF测量的耦合的成本在每个方向上每次交
换仅为15-20毫秒。使用WRF在4个处理器上运行,耦合开销可以忽略不计 - 小于总运行时间的一半。在32个处理器上,耦合的开销低于运行成本的5%。