视界:ECMWF模式IFS开源部分组件

目录

本文翻译自 ECMWF 的一篇通讯文章和一篇新闻,介绍 ECMWF 模式 IFS 正在进行的开源活动。

An open-source Integrated Forecasting System

by Michael SleighWillem DeconinckMichael LangeOlivier MarsdenBalthasar Reuter

Number 171 - Spring 2022 (Published in April 2022)

https://www.ecmwf.int/en/newsletter/171/news/open-source-integrated-forecasting-system

Making some of the Integrated Forecasting System open source

9 June 2022

https://www.ecmwf.int/en/about/media-centre/news/2022/making-some-integrated-forecasting-system-open-source

以下正文章节是对该文章的节选翻译,并根据笔者个人理解有所修改,如有偏差敬请谅解。

正文

ECMWF 的集成预报系统 (Integrated Forecasting System, IFS) 的部分组件正变为开源,未来将与会员国协商审查将整个 IFS 转为开源的优点。

现状

目前,IFS 的源代码和其他 ECMWF 代码在许可方法上有所区别。 非 IFS 软件通常在开源许可 (Apache‑2) 下可用,而 IFS 的使用则更加严格。 IFS 源代码不公开,只能由 ECMWF 及其成员国和合作国访问。 IFS 的 “开放” 版本确实存在,被称为 OpenIFS,可供气象研究机构使用,但这不是完全的开源,使用它需要定制许可证。

ECMWF 理事会 2020 年 6 月的会议提出使 IFS 的全部或部分开源的选项,以及允许在 Apache-2 许可证下发布经过精心挑选的 IFS 部分的建议。 非 IFS 代码开源的理由,即收益大于风险,至少也适用于 IFS 的某些部分。 因此,大家一致认为,开源方法应扩展到当前 IFS 的选定部分以及设想成为未来 IFS 一部分的其他开发部分。

目标

  • 加强协作:取消对再分发的限制可以使与 ECMWF 合作对希望与合作伙伴一起工作的合作者更具吸引力。 在某些情况下,可以通过这些更广泛的网络提供更多价值。 此外,为开源代码做出贡献可能对学术合作伙伴更具吸引力。
  • 提高效率:目前定制许可证和开源的混合相对复杂,需要花费大量时间来设计个案解决方案。 次要考虑是一些期刊要求开放获取使用的代码。 到目前为止,已经找到了解决方法 (通常是通过向编辑/审稿人提供代码,以进行审查),但这很耗时。
  • 成为新兴高性能计算架构的国际协作中心:OpenIFS 许可证仅允许用于气象研究,而不是计算机科学研究,并且用于采购高性能计算设施的 IFS 版本仅用于基准测试,而不是研究。 因此,考虑开源的第三个原因是通过鼓励学术界和供应商的计算科学专家在 IFS 上的工作,进一步将 ECMWF 及其成员国发展成可扩展性和新兴高性能计算架构的国际协作中心。

当前开源项目

存放开源 IFS 组件的 GitHub 空间:

https://github.com/ecmwf-ifs

与 ECMWF 的 GitHub 主空间 (https://github.com/ecmwf) 不同,代表不同的目的和支持。 主空间包含为社区利益而提供的支持包;IFS 空间包含主要为支持预先存在的协作而发布的代码。 虽然任何人都可以使用,但 IFS 空间中的代码通常不受支持。

IFS 组件的 GitHub 空间,该空间包含主要为支持预先存在的协作而发布的代码,通常不受支持。

当前已开源项目:

  • ecRad:ecRad 辐射包
  • ecTrans:来自 IFS 的并行光谱变换已被提取并以对合作者有用的独立形式进行调整
  • FIAT:多个其他软件包所需的 IFS 辅助例程子集已作为 FIAT (Fortran IFS and Arpège Toolkit) 发布,包括 IFS 中用于跟踪、计时、控制精度和并行通信的例程
  • CLOUDSC:来自 IFS 的云方案的独立版本。 它是在欧盟资助的 ESCAPE 项目 (2015-2018 年) 中提取的,之前可根据 ESCAPE 许可证获得
  • CLOUDSC2:一种新的简化云微物理方案,包括用于测试该方案的切线和伴随版本的代码。 其目的是探索编译器优化和舍入行为对正切线性和伴随解的对称性的影响。
  • ecBundle:用于构建 IFS 和其他应用程序的包管理工具。 它下载包含依赖项的代码,并允许构建特定于体系结构的配置。

未来计划

同意尽快开源的组件包括:

  • ecLand:这是 IFS 中独立的陆面方案,是当前和未来外部合作的关键,例如添加用于水文建模的 CaMa-Flood 和欧盟资助的项目 (如 CoCO2、CONFESS 和 NextGEMS)。 合作的目标是植被和光合作用建模、城市瓷砖 (urban tiles)、雪和土壤水文以及雪-海洋-海-冰紧密耦合方面的发展。
  • ecWAM:这是 IFS 中的独立海浪模型,未来将更紧密地与 IFS 大气耦合,采用相同的网格。 即将到来的一项重要活动是 ecWAM 的 GPU 适配。

全模式开源?:除了使 IFS 的组件开源之外,理事会还同意 ECMWF 还将鼓励与成员国协商进一步审查将整个 IFS 转为开源的优点。 有人指出,将该方法扩展到整个 IFS 可能对协作和效率有一些显著优势。 讨论预计将于 2022 年开始。

讨论

我是坚定的开源拥护者,自参加工作以来一直尽可能将工作期间开发的个人项目开源,也多次在单位内部不同场合下倡议更多同事将工具类软件开源,建议部门和单位参与到开源社区中来。 遗憾的是,这两件事都没取得什么成效。我开源的项目没有用户,单位也没有鼓励开源的迹象。

我完全赞同单位在模式代码库方面的各项政策,模式代码不可能向全社会公开,世界范围内也没有哪家业务数值预报中心将全套业务代码公开出来。 即使上面新闻中说 ECMWF 正在考虑将 IFS 全部代码开源,我也不相信 ECMWF 会将同化代码一并公开,甚至就连 IFS 代码能否全部开源都要打个问号,画饼的事情可不好说。

不过我确实非常欣赏以 ECMWF 为代表的气象中心在开源工具软件方面为整个气象社区所做的突出贡献,某些项目甚至已成为业界事实上的标准工具。

  • ECMWF:单位的数值预报业务系统使用 ECMWF 开源的工作流调度软件 ecFlow 运行,而单位制作 GRIB2 模式产品的模块也使用了 ECMWF 开源的 GRIB 数据编解码库 GRIB API (ecCodes)。 另外 ECMWF 也开源了 MetviewMagics 等气象工具,一些之前在内部使用的工具也逐渐开源,包括 fdbMultIO 等。
  • NCEP:NCEP 开源的多个工具也成为业务系统中不可或缺的基础组件,包括用于 GRIB2 数据处理的 wgrib2 和用于绘制图形产品的 NCL
  • Met Office:英国气象局牵头的 SciTools 社区组开发了气象绘图广泛使用的 cartopy 工具库和气象数据分析包 Iris
  • NIWA:新西兰国家水文和气象研究所开发了面向地球系统领域的工作流软件 cylc

我始终认为即使模式代码本身无法开源,也应该考虑将外围的工具类软件代码开源,既能提高单位在气象开源领域内的影响力,也能吸引更多的外部力量参与到工具软件的建设中来。 在这一点上,我非常佩服 NMC-WFT/CMA 团队的工作,他们开源的 metevametdig 等工具已经在气象领域内得到广泛应用,多个项目的 GitHub 仓库网址已记录在 CMA 正式发布的文件中。

nmcdev 的 GitHub 组空间

将代码公开并不是被广泛认同的理念,笔者已经观察到对软件开源的两种顾虑:

职务成果:模式同化积分代码因为需要从源码编译成一个可执行文件,所以会天然地要求开发团队将所有相关代码都集成到同一个代码仓库中,而单位正是这样做的(尽管有少部分组件以共享链接库的形式提供而没有源代码)。 但对于模式同化积分之外的独立程序是否要在内部共享(或直接开源),往往会有一些顾虑,最常见的担忧就是怕拿出代码后被抢占成果。 这可能涉及到管理层面上对职务成果的认定问题,而笔者只关注技术层面。 通过维护私有代码形成技术壁垒保持在某方向上的核心竞争力,有一定道理,但模式积分程序也是核心技术,而代码却是单位全员可见的。 可能因为我不从事研发工作,对代码知识产权问题的认识不够深入,总觉得工具代码就应该对外公开,不怕被借用被演绎,用的人多了才能体现工作的价值。 一个可以对比的例子就是日本的氢能源汽车不共享专利,中美用锂电池弯道超车。

安全性:另一个顾虑就是业务的安全性。当然再怎么强调安全性都不过分,CMA 也曾经出现过密码上传 GitHub 的问题。 不过将软件开源正好能敦促开发者检查代码中是否有敏感数据等类似问题,会促进软件项目走向规范化道路。 CMA 对数据有一系列规定,也禁止将业务系统文档、运维手册等上传互联网,但笔者尚未找到对代码不能公开发布的规定。 整个业务系统的代码肯定无法全部开源,也没有必要,但对于业务系统的某个组件,尤其是非核心的工具类软件,开源并不会影响业务的安全性,也符合现行的各项规定。

尽管开源之路并不顺利,笔者还是看到两条利好开源的消息。

一是“开源”首次被明确列入国民经济和社会发展五年规划纲要,并在《“十四五”软件和信息技术服务业发展规划》中专门提到:

繁荣国内开源生态。大力发展国内开源基金会等开源组织,完善开源软件治理规则,普及开源软件文化。 加快建设开源代码托管平台等基础设施。 面向重点领域布局开源项目,建设开源社区,汇聚优秀开源人才,构建开源软件生态。 加强与国际开源组织交流合作,提升国内企业在全球开源体系中的影响力。

二是 CMA 的《十四五气象信息网络业务发展规划》中明确提到要推动气象业务平台和应用软件的开源社区建设。

我会继续将个人开发的工作项目发布到开源社区,并持续宣传开源理念。 我相信未来会有越来越多的同行加入到开源队伍中来,愿我们国内的开源项目能在世界气象开源领域占据一席之地。

参考

原文链接:

开源相关博文:

ECMWF 相关开源项目网址:

笔者开源项目网址 (工作 + 个人):