气象高性能计算环境中模式协同研发管理

2022-06-23 00:35赵春燕胡江凯
计算机与现代化 2022年6期
关键词:分支高性能代码

赵春燕,孙 婧,胡江凯,周 斌

(1.国家气象信息中心高性能计算室,北京 100081; 2.中国气象局地球系统数值预报中心业务运行室,北京 100081)

0 引 言

数值天气预报是气象核心业务,经过20多年的持续发展,中国气象局已建立了从全球到对流尺度、短时到中期、确定性到集合预报的国家级数值天气预报业务[1-2]体系,以及次季节-季节-年际尺度一体化气候模式预测业务[3]系统。随着气象科学进入地球系统时代[4],全球数值预报正朝向基于地球系统科学框架下的多圈层耦合地球数值预报模式系统发展,中国气象局于2021年9月30日成立了地球系统数值预报中心,聚合全国数值模式研发核心力量,共同发展天气气候一体化的地球系统数值预报系统。

高性能计算[5]在基础科学研究领域已成为不可或缺的重要手段之一[6],当前,中国气象局的数值预报模式研究调试和业务运行基于“派-曙光”高性能计算系统[7]开展。“派-曙光”峰值计算能力约为8 PFLOPS,物理容量约为23 PB,设有通用CPU的子系统和支撑GPU、众核异构计算的试验子系统。高性能计算是典型的交叉学科,内容涉及计算机科学、计算数学、行业领域知识。面向气象科学的数值模式的研发过程是一个复杂的系统工程,往往需要十几年或者更长时间的持续发展,需要从事气象科学、数学、计算机等多方面的科研人员的共同努力。随着E级计算[8-9]和后摩尔时代的发展[10],高性能计算机的系统架构[11]、软件生态、编程方式[12]均将发生变化[13],模式研发应用门槛进一步提高,模式的研发过程将成为更加复杂的协同工程。国际主要气象机构如欧洲中期数值天气预报中心(ECMWF)、英国气象局、美国国家航空航天局等均持续发展了用于支撑气象数值模式发展的综合支撑环境,用于简化科学家的研究过程。如ECMWF的OpenIFS[14],是面向欧盟成员国研究人员开展IFS模式应用研究的一体化数值模拟试验工具。英国气象局也建立了定制化的模式协同配置管理系统[15],以提升协同效率。美国国家航空航天局(NASA)的NED[16](NASA Experiment Designer),用于向NASA的科学家提供在超算上可视化的配置、运行、监控和管理复杂模式试验的系统。

国家级天气、气候模式,区域级北京、上海、广东等模式的研发力量分散在全国,模式的研发根据攻关方向创建不同的研发组,在下一代地球系统数值预报系统融合发展的联合攻关中,模式研发人员对高性能计算平台的使用、模式研发的协同共享效率、研发向业务转化[17]的效率、研发成果的持续管理,都将是支撑模式高质量发展的关键问题。

本文针对气象数值模式研发协同面临的需求和挑战,从协同管理支撑平台环境建设、模式研发流程管理、集成共享、成果管理、调试试验全流程开展应用研究。

1 研发协同管理的支撑环境建设

围绕模式研发调试所在的“派-曙光”高性能计算机系统环境,设计建立支撑模式研发协同管理的支撑环境,总体设计如图1所示,包括基于Git的气象数值模式代码管理平台METCODE[18],用以支持研发协同共享管理,以及数值预报中试平台[19],用以简单便捷地支撑数值模式调试试验及业务化过程。

图1 “派-曙光”高性能计算环境模式协同研发管理支撑环境设计

1.1 “派-曙光”高性能计算环境

中国气象局“派-曙光”高性能计算机系统为当前的数值预报模式研发和业务运行平台,为Cluster架构,设有计算节点、前后处理节点、管理节点和登录节点以及Parastor并行文件系统,内部计算网络采用InfiniBand高速计算网络互联。为了合理管理并提高资源利用效率,在“派-曙光”高性能计算机系统子系统中划分了作业队列来管理不同模式的作业的提交分区。系统配置了专业的基础软件,包括编译器、并行编译开发环境、气象应用软件等,模式研发人员通过局域网接入“派-曙光”高性能计算机系统的登录节点访问超算资源。在传统方式下,模式研发人员基于高性能计算机系统开展模式的开发、编译、运行模拟试验及试验结果分析。

1.2 METCODE代码管理平台

气象数值模式代码管理平台METCODE基于Git集成实现,由云端代码管理共享协作平台和云端集成开发工具组成。围绕研发流程提供项目管理、分布式代码管理、文件管理、知识管理及集成部署等功能,云端集成开发环境支撑Web在线协同编辑。根据模式研发力量的分布式的特点,支持气象部门中国气象局研发人员(局域网)、区域中心的研发人员(互联网、气象专网)和外部合作研发单位(互联网)的合作研发管理机制,采用Web统一域名访问,设计实现局域网和互联网代码库分支级别的数据同步,以支持内外部模式研发人员合作研发成果的集成共享。在“派-曙光”高性能计算机系统登录节点部署Git客户端接入METCODE平台,支撑模式研发的版本控制、协同及集成共享。

1.3 数值预报中试平台

数值预报中试平台支撑可视化交互式气象数值模式模拟的“建模-计算-分析-管理-共享”全流程一体化的集成应用,屏蔽高性能计算平台的细节,简化研发人员与资源平台的交互,解决研发调试试验难以管理复现、缺乏管理监控、结果分析及参数对比困难等问题。集成了METCODE平台访问,研发人员通过交互界面获取代码库的代码版本,构建试验流程和参数,由中试平台根据交互情况自动构建全流程工作流并部署到“派-曙光”高性能计算环境调度执行,提供一站式结果检验评估分析,支持模拟试验的管理和共享,促进模式的协同众创,支撑模式调试试验及业务化。

2 模式研发管理流程与规范

2.1 模式研发迭代升级过程

气象数值模式的研发是持续改进型的大型协同工程,如图2所示。规范计划要求每年进行2次改进升级,每次迭代过程包括研发过程及调试试验、集成过程及调试试验、定版试验,经业务化平行试验、回算试验以及业务试运行,最终进行业务化应用,研发向业务转化需经多轮严格的试验和试运行评估,与研发版本定版有一定的滞后期。

图2 气象数值模式研发迭代升级过程

2.2 模式研发管理流程

气象数值模式的研发过程是一个规模庞大、过程复杂的系统工程,聚合了分散在全国的数百人协同参与。采用矩阵型项目组织管理方式,按照天气、气候的大分类分单位或部门协同,天气、气候内部按照攻关方向成立不同的研发组,每个研发组由多名模式研发人员组成,呈现分布式、多层级的协同,业务化过程及业务运行维护由专门的运行团队负责。需要建立与组织结构相适应的研发管理流程,规范研发过程,提高研发协同效率。

流程和分支的建立,使模式研发协同过程可追溯、可管理、可留存。按照数值预报模式组织架构,设立研发专家组、研发小组、集成小组、管理小组和业务运行小组,并设立分支管理不同组织层级的代码管理协作。分支管理策略是版本管理中各个分支与分支之间的管理方式和流程,包括个人分支、团队分支、研发分支、集成分支、主线分支、修复分支和业务分支,如图3所示。个人分支用于个人研发成果版本的管理,团队分支用于研发小组团队研发成果版本的管理,个人分支和团队分支统称为研发分支。集成分支用于各团队分支研发成果总集成协作和管理,主线分支用于数值模式发布版本的管理,修复分支用于数值模式发布版本中问题版本修复的管理,业务分支用于数值模式业务版本的管理。多级分支的设立,可以保证任何级别的研发成果都被长期保存。任何研发成果,使用的可以激活,尚不成熟的,可以不激活而长期保留,以支持模式的持续改进发展。

图3 模式研发流程

研发流程上,新版本发布后,研发分支同步最新的版本,研发人员在个人分支上开展研发和管理,研发成果集成到团队分支,可跨组交叉集成共享,各个团队的研发成果通过集成分支进行总集成,进行集成试验和定版试验,业务运行小组开展平行试验、回算试验后,集成到主线分支发布新版本。业务运行小组经主线获取最新版本到业务分支,并进行业务自动化工作流开发,开展业务试运行和检验,通过业务化评审后进入业务运行。在试验阶段发现的问题,通过从主线分支检出修复分支修复后,合并回主线并同步到其他分支。

2.3 相关规范设计

制定支撑研发协同的相关规范,包括编程标准、版本命名标准、分支规范、变更控制规范和业务化规范。在持续性改进型的项目管理中,分支和管理规范是决定代码成果清晰、协同高效的关键。

2.3.1 编程标准

编程标准是提高代码质量的重要途径,简洁、高效、可维护、可测试的代码是支撑模式持续改进的基础。编程标准包括代码格式、标识符命名与定义、函数编程标准、高质量注释标准。采用统一的编程风格和标准,对大规模协同、持续改进至关重要。

2.3.2 版本命名标准

2021年9月22日,中国气象局办公室发布了数值预报业务模式统一规范命名的通知,GRAPES[2]全球同化预报系统(GRAPES_GFS)调整为中国气象局全球同化预报系统(CMA-GFS,CMA全球天气模式),GRAPES区域中尺度数值预报系统(GRAPES_MESO)调整为中国气象局中尺度天气数值预报系统(CMA-MESO,CMA区域模式)。模式版本号标准格式为<主版本号>.<次版本号>.<内部修订版本号>,每部分的描述如表1所示。

表1 模式版本号命名说明

2.3.3 分支规范

融合业内3种常用的分支策略,基于模式研发的组织架构与流程建立数值预报模式分支规范,包括代码库分支的结构和分支的命名规则。分支构建和集成步骤如图4所示。

1)管理小组创建项目后,初始化项目代码仓库,建立master分支;由集成小组基于master分支切分出CMA-GFS模式主分支和CMA-MESO模式主分支,分别作为中国气象局全球同化预报系统模式和中国气象局中尺度天气数值预报系统模式的研发主分支;由管理小组将当前CMA-GFS和CMA-MESO最新版本代码分别提交到CMA-GFS分支和CMA-MESO分支,并添加基础版本标签,例如“CMA-GFS3.2”。

2)由团队分支管理员从CMA-GFS(模式主分支)上切出本研发组的分支,并按照团队分支命名规则定义本分支的名称,团队分支命名规则为:_group__

3)团队内成员从主线分支或团队分支上检出个人分支,并按照个人分支命名规则定义个人分支名称。成员即可开始在自己创建的个人分支上进行代码的开发和修改。个人分支命名规则为:___

4)成员在个人分支上开发代码,在个人分支上生成不同的版本。

5)个人阶段性成果,由个人向团队分支发起代码合并请求,将个人分支的代码合并到团队分支,测试验证后,可添加标签标识版本,形成团队内发布版本形成团队发布分支。

6)研发团队阶段性成果,由团队向集成小组发起代码合并请求,完成在集成分支的合并集成。

7)总集成后,经多种测试检验,集成小组向研发专家组提交版本发布申请,审批通过后在主分支上进行版本发布并在主分支上添加版本标签,标签命名的规则与模式版本号命名规则一致。

8)业务运行小组从主分支检出新版本,进行业务运行开发,开展业务试运行,业务上线后转入运维阶段。业务分支的命名规则为:_<发布版本>。

9)业务运行发现的bug或研发过程发现的bug经主线检出修复分支修复后,同步到该版本的各个分支。修复分支删除。

图4 模式分支管理规范

2.3.4 变更控制规范

对于持续型改进项目的代码协同,规范的变更控制极其重要,约束每次变更的规范程度,包括每次变更的提交规范、变更流程相关规范。变更提交规范需准确描述本次变更的概述、影响和效果,便于阅读、集成和发布版本时制作版本升级说明。

2.3.5 业务化规范

业务系统需符合版本号命名规则以及系统的数据输入输出接口、产品命名及格式等业务标准和规范,符合业务时效的自动化工作流,具有完整的系统文档、故障应对流程。

3 模式研发与试验一体化集成实现

模式的研发成果需要基于气象高性能计算环境进行编译、计算和分析,以评估预报效果。在模式研发流程中,涉及个人研发试验、集成试验、定版试验、业务化平行试验和回算试验等。试验过程包括源码获取、编译、参数化方案配置、数据准备、运行、检验分析和诊断,且涉及不同试验的对比分析评估。各类模式的运行均采用脚本调用方式,来控制循环、单次运行、进行参数设置和参数计算处理、提交作业等。通过数值预报中试平台的集成,衔接模式协同研发的源码、调试试验的各个环节。

3.1 关键技术

3.1.1 技术架构

METCODE代码协作管理平台为B/S架构,采用容器技术,基于微服务实现多组件的集成和Git代码库管理,高性能计算机上的Git命令行与METCODE交互,METCODE向数值预报中试平台提供代码访问接口。数值预报中试平台用户交互界面采用wxPython[20]框架实现,服务端采用Python开发,客户端与服务端的通信采用RabbitMQ[21]消息中间件,信息管理采用数据库,采用ecFlow[22]工作流引擎及ecFlow API[23]作业流程化调度管理并分发作业,技术架构如图5所示。

图5 模式研发协同支撑平台技术架构

3.1.2 试验自动化构建运行技术

数值预报中试平台的服务端为实现协同的核心,衔接从代码、试验、分析的一体化过程,实现用户交互的后端自动化过程,包括在高性能计算机系统上构建运行环境、模式源码部署、模式源码编译、模式运行等。构建运行实现逻辑如图6所示。

1)服务端在高性能计算机系统构建试验空间,包括试验ID目录、源码目录和运行目录。

2)服务端解析界面参数并从代码库获取源代码程序,部署到试验空间。

3)服务端解析界面参数生成工作流定义及参数文件至试验空间,并代入工作流任务组件。

4)服务端执行工作流加载、提交命令,工作流引擎调度工作流运行。

5)工作流编译任务执行模式安装编译、运行时空间创建。

6)工作流运行任务调度模式作业运行。

图6 试验自动化构建

3.2 功能实现

3.2.1 模式调试试验

模式研发人员的代码进入代码库后,可通过数值预报中试平台交互界面调用源码,进行调试试验的数据及参数配置,除提供试验模板和默认参数外,研发人员可交互自定义参数,完成试验方案的构建,包括试验的源码、模块、流程、数据以及各个模块的运行参数等。平台服务端自动屏蔽高性能计算机系统使用的细节,使研发人员专注于模式试验方案本身,平台会根据配置自动完成源码的部署、编译、数据的安装、参数的代入和作业的提交运行。运行过程被编排为自动化工作流,从而提供基于工作流的运行监控,试验过程出现错误将及时告警。试验结果输出后,研发人员可进行交互检验分析,平台根据比对对象,实现检验计算评分及绘图,评估试验的改进效果,研发人员在界面即可查看检验图形。由于试验信息均被记录,能够实现快速的试验比对,包括试验结果和试验方案的比对,提升调试的效率。

3.2.2 模式平行试验及业务化部署

模式平行试验模拟不同的业务运行场景并和实际业务预报效果进行检验对比,以评估模式改进效果。不同于调试试验,平行试验一般需要设置3组:1)同化循环试验:评估观测资料影响及同化效果;2)预报试验:模拟业务试验并检验对比;3)诊断分析试验:诊断分析。

经过平行、回算试验的检验评估,通过业务化评审后,模式新版本进行业务运行。需要将新版本部署到业务环境,业务化系统包括同化循环、模式预报、诊断及后处理系统。通过数值预报中试平台,实现了平行试验的一键构建,生成3组试验工作流,业务部署功能通过用户交互高性能计算机的业务账户,完成授权和程序部署。

4 应用实效

“派-曙光”高性能计算环境模式协同研发管理支撑环境已初步建成和应用,METCODE代码管理已应用于CMA全球天气模式、CMA区域模式、CMA化学天气模式、实况业务等的研发协同,数值预报中试平台已应用于CMA全球天气模式、CMA区域模式的调试试验、定版试验及业务化平行与回算试验、动力框架理想试验、物理过程单柱试验等。

基于代码管理平台,模式版本的迭代升级已形成规范可控的流程,如图7所示,同时提高了研发协同的效率,代码的总集成耗时由传统模式下的1~2个月缩短到1~2周。

图7 METCODE支撑模式版本发布

数值预报中试平台衔接了代码管理,支撑代码的调试的数值模拟试验全流程,在全流程的各个环节提升效率,中试平台可直接调用代码库访问模式代码,衔接研发和基于高性能计算的数值模拟试验,如图8所示。

1)基于数值预报中试平台的模板或默认参数交互构建试验,可在几分钟内完成试验构建和方案设计并提交试验到“派-曙光”高性能计算机系统排队运行。相较原有传统研发模式下的人工获取代码、上传源码、修改运行脚本构建试验方案、配置运行数据的模式,不仅屏蔽高性能计算机的使用细节,也屏蔽了模式所需所有输入数据存储管理的细节,降低了模式研究的门槛,新的研发人员1 h内便可掌握调试试验方法,而原来脚本运行的方式下,新的研发人员可能需要1周的时间来了解高性能计算机系统如何使用、源码如何获取、模式如何运行、数据在何处获取、试验方案如何构建等信息。

2)数值预报中试平台提供试验运行工作流的监控,对试验错误主动告警和提示,改变原有被动等待的情况,提高试验效率。

3)基于平台的管理功能,可对不同的试验进行一键式比较分析,包括试验方案和试验结果的对比评估。试验方案的对比包括所采用的代码版本、试验运行参数、运行数据、运行资源等全面的信息对比;试验结果的对比基于集成的检验工具开展检验对比,评估试验效果,提供评分卡及形势场要素检验对比。仅需简单交互检验参数,选择对比对象,平台即可自动化完成检验计算和结果绘图,返回界面展示。该功能为研发人员屏蔽人工对比方案、试验结果绘图、检验工具使用、检验数据获取等专业细节,极大提高试验分析的效率。

4)平台对平行试验和回算试验的支撑,加速模式新版本升级和业务化过程。一键式构建平行、回算试验,自动化工作流调度运行,快速开展试验对比评估。

5)平台业务化部署功能提升业务化效率。业务运行需要实时的监控告警,基于平台快速构建业务化运行的工作流,不必再全部人工开发。通过业务部署功能,支持快速部署到业务环境,不必人工移植。

图8 数值预报中试平台支撑CMA-GFS(GRAPES_GFS)平行试验

5 结束语

从气象数值模式的协同管理发展需求出发,面向协同研发过程的管理和集成共享、研发调试试验及分析检验等过程开展了应用研究,建设了气象数值模式研发协同管理支撑环境和标准,提升了模式研发协同效率和业务化效率,保障研发成果的完整性和可跟踪性,为科学研究、科学计算等大型传统科学计算模型的持续研发改进管理及软件工程协同管理提供借鉴。

面向地球系统数值预报业务的发展,需要进一步建设和依托支撑平台环境完善共享的机制,全面扩展完善数值预报中试平台,提升对天气、气候模式的试验支撑。面向高性能计算异构发展趋势和分布式发展趋势,需发展支撑异构系统、分布式系统的试验作业调度能力。

猜你喜欢
分支高性能代码
一类离散时间反馈控制系统Hopf分支研究
软件多分支开发代码漏合问题及解决途径①
巧分支与枝
创世代码
创世代码
创世代码
创世代码
一款高性能BGO探测器的研发
高性能砼在桥梁中的应用
SATA推出全新高性能喷枪SATAjet 5000 B