2023年工作总结
本文来自 2023 年 12 月 18 日个人工作汇报做的 PPT。
系统建设
2023 年完成 1 项业务系统升级,建设 CMA-GFS V4.0 后处理业务系统。
在国家级超算新建 3 套服务保障后处理系统,在杭州、贵州等省局超算新建 4 套产品后处理系统。
开展国家级新超算 4 套系统迁移工作,正在开展 CMA-GFS 后处理系统等 1 套系统的实时运行测试。
图 2023 年参与建设的系统
算法优化
在开展系统建设工作的同时,还持续对业务系统的算法和流程进行优化。
CMA-GFS V4.0 产品制作任务
今年将中心青年基金课题项目《基于动态任务调度的数据处理技术》成果应用到 CMA-GFS V4.0 产品制作任务中,对串行任务进行并行化改造。 在 GFS 业务系统中,我们为 NSMC 制作一种 GRIB2 数据产品,需要对基础 GRIB2 数据进行要素筛选和插值。 业务原有串行程序在 V3.3 版本耗时 8 分钟,V4.0 版本因为水平分辨率从 25 KM 提升到 12.5 KM,耗时增长为 20 分钟。 应用课题研究成果后,运行时间从 20 分钟减少为 1 分钟,运行时间减少一个数量级,极大提高产品制作效率。
图 CMA-GFS卫星中心GRIB2产品的并行算法
图 运行时间对比
- v3:CMA-GFS V3.3
- v4:CMA-GFS V4.0
- oper:业务串行程序
- serial:reki 串行版本
- dask:PI 曙光 1 并行节点 32 CPU*
流程优化
现有业务系统流程优化
持续优化现有业务系统的运行流程。
调整 TYM 数据拷贝策略
将 串行链接 + 延后并发移动 改为 并发复制,实现并发任务触发需要顺序执行的任务链,解决由链接失效导致任务无法重复运行的问题。
图 TYM 数据拷贝新旧两种方案对比
- 左图:旧方案,串行ln,存在文件链接失效的问题
- 右图:新方案,并发cp
调整 initial 任务的终止命令
使用 pskill
代替 kill,解决 ecFlow UI 界面无法杀掉 initial 作业的问题。
图 kill 无法杀掉长时间运行的子进程,即 kill -9 PID1 无法立即杀掉子进程 PID3
图 (1)左:需要三个 kill
命令杀掉 initial 作业。(2)右:pskill
杀掉整个进程树
重构业务系统运行流程
在迁移新超算过程中重构业务系统运行流程。
将流程与配置分离,提高系统流程的可移植性。
目标:系统迁移时仅需要新增配置文件而不需要修改已有流程代码。
方法:
- 参数配置文件(同事提出)
- 环境加载脚本
- 拆分流程
当前进展:
- 已重构三个系统:CMA-GFS POST,CMA-MESO POST,CMA-TYM POST
- 一个系统正在进行中:CMA-TYM
参数配置文件
在单独的文件中设置系统名称、目录、时次和关键参数。
效果:切换账户部署只需编写新的配置文件。
图 参数配置文件应用前后对比
(1) 左图:应用前,配置和流程在一个文件中,修改配置需要修改脚本
(2) 右图:应用后,配置和流程分离,修改配置仅需新增配置脚本,无需修改已有代码
环境加载脚本
将加载软件库的相关代码放到独立脚本中。
效果:为不同HPC平台保存各自的环境配置脚本,方便跨平台部署。
图 环境加载脚本应用前后对比
(1) 左图:应用前,脚本直接加载软件包,在不同 HPC 平台部署需要修改任务脚本
(2) 右图:应用后,为每种软件单独创建加载脚本,不同 HPC 平台的脚本放到不同目录中。 在配置文件 (config/oper.py) 中设置头文件目录,任务脚本 (data2grib2.ecf) 加载软件头文件。 迁移 HPC 平台只需新增环境加载脚本并新增配置文件。
拆分流程
将单一流程脚本拆分为多个 Python 脚本,比如数据产品、绘图产品、台风产品等组件。
效果:将组件选择与具体流程分离,方便按需组装,也方便后续增删产品种类。
图 拆分流程应用前后对比
- config.py:按需配置组件
- flow.py / cycle.py:基础流程框架
- data.py / graph.py / typhoon.py:增删产品种类
集约化整合
数据融入
在科技处、模式室和业务室的共同努力下,通过数值-信息专班推进业务系统部分数据接入天擎平台。 2023 年新增接入 5 种业务系统产品和 12 种专项保障服务产品。
表 业务系统产品
产品名称 | 数据编码 |
---|---|
CMA-GFS台风路径 | NAFP_CEMC_CMA-GFS_TC_MSG |
CMA-TYM台风路径 | NAFP_CEMC_CMA-TYM_TC_MSG |
CMA-GFS海洋子系统产品 | NAFP_CEMC_CMA-GFS_FIOCOM_nc |
CMA-GFS海浪子系统预报产品 | NAFP_CEMC_CMA-GFS_SWW3_GRIB2 |
CMA-TYM海浪子系统中国近海预报产品 | NAFP_CEMC_CMA-TYM_SWW3_GRIB2 |
表 专项服务保障产品
专项保障服务 | 产品名称 | 数据编码 |
---|---|---|
成都大运会 | CMA-MESO 1KM GRIB2产品 | NAFP_CMA_MESO_1KM_BCCD |
NAFP_ANA_FTM_CMAMESO_1KM_BCCD | ||
NAFP_FOR_FTM_CMAMESO_1KM_BCCD | ||
多模式集成订正产品 | NAFP_CEMC_CMA-BTH-STATION_NC | |
NAFP_CEMC_CMA_CMA-BTH_NC | ||
CMA-CUACE-Haze产品 | NAFP_CEMC_CMA-CUACE-HAZE_NC | |
核应急烟花扩散产品 | NAFP_CEMC_CMA-EERS_FIRE_tar | |
杭州亚运会 | CMA-MESO 1KM GRIB2产品 | NAFP_ANA_FTM_CMAMESO_1KM_BEHZ |
NAFP_FOR_FTM_CMAMESO_1KM_BEHZ | ||
太平洋运动会 | CMA-MESO 3KM GRIB2产品 | NAFP_CMA_MESO_3KM_SHEO_ORI |
NAFP_ANA_FTM_CMAMESO_3KM_SHEO | ||
NAFP_FOR_FTM_CMAMESO_3KM_SHEO |
算法融入
通过信息化系统工程项目,改造加工流水线绘图算法的触发方式。
使用消息中间件代替数据源直接触发绘图算法,避免同时触发大量作业超过账户资源限制。
图 数据源直接驱动绘图程序,2022 年实现
超过资源限制的任务会等待资源释放,显著影响云平台的调度延迟指标。
图 数据源驱动消息发送程序,绘图程序监听消息队列
使用消息直供件件实现任务流量控制。
CEMC 青年基金. 基于分布式调度的绘图技术研究. 2017-2020.
技术开发
数据准备工具库 reki
增加 CMA 要素清单,方便加载要素场。
表 CMA要素表格
包括名称,描述,编码,层次类型,层次,…
name | unit | description | description_cn | discipline | category | number | typeOfLevel | … |
---|---|---|---|---|---|---|---|---|
ps | Pa | Surface pressure | 地面气压 | 0.0 | 3.0 | 0.0 | surface | … |
psfc | Pa | Surface pressure | 地面气压 | 0.0 | 3.0 | 0.0 | surface | … |
psl | Pa | Sea level pressure | 海平面气压 | 0.0 | 3.0 | 1.0 | meanSea | … |
pi | Exner pressure | Exner气压 | 0.0 | 3.0 | 26.0 | … | ||
h | Gpm | Geopotential height | 位势高度 | 0.0 | 3.0 | 5.0 | … | |
zs | Gpm | Terrain | 地形高度 | 0.0 | 3.0 | 5.0 | surface | … |
… |
例如加载大风指数 (wi, (0, 2, 236)) 变量。
使用 ECMWF 开发的 cfgrib 需要知道要素的编码:
ds = xr.open_dataset(
file_path,
engine='cfgrib',
backend_kwargs={
'filter_by_keys': {
'parameterCategory': 2,
'parameterNumber': 236
},
}
)
使用 reki 库只需要指定要素名称:
field = load_field_from_file(
file_path,
parameter="wi"
)
工作流调度工具takler
模拟 shell 脚本提交方式,实现串行节点运行调度程序。
该功能既提供工作流软件对流程的监控能力,又保留 shell 脚本方便使用的优势。
图 模式试验与 ecFlow 两种运行方式
- Shell 脚本运行模式研发试验和批量试验
- ecFlow 流程运行平行试验和业务系统
- 发展方向:研发与业务脚本统一
图 串行节点运行工作流
- 自动检测 IP 地址和端口,并写入配置文件
- 串行节点上运行工作流调度服务
- 通过配置文件与调度服务通讯
项目
CEMC 青年基金《基于动态任务调度的数据处理技术研发》
完成验收,撰写一篇技术报告并提交中心评审
信息化系统工程项目《数值预报支撑子系统》
完成测试和初验,正在进行试运行,12 月底前完成合同验收
运维外协项目
完成2022年度项目验收
完成2023年度项目申请和进展评审
其他工作
培训
新员工培训(业务系统介绍、ecFlow 上机实习)
贵州 MESO 后处理培训(现场)
交流
2023年全国数值预报研讨会口头报告(人工智能分会场)《基于动态任务调度的数据处理技术研发》
世界气象日活动,小知识问答活动
下一步工作计划
研究异地异构超算平台格局下的业务系统部署技术(系统科)
- 优化后处理系统流程,整理后处理系统流程建设规范
继续开发工作流调度软件
- 完善异常处理功能,提高软件的容错能力
延续已有 Python 工具的开发经验,发展基于 Python 的支撑软件工具集(业务室,…)
- 开发数据访问工具库,形成数据标准访问接口
- 面向 MESO 1KM 业务化,配合产品团队开发 Python 绘图包
- CEMC Earth Data Analytics and Rendering Toolkit (cedarkit)