阿里云超算上气象应用WRF的集谛优化

简介: 阿里云超算上气象应用WRF的集谛优化

作者:孙相征
弹性高性能计算(E-HPC,https://ehpc.console.aliyun.com/ )基于阿里云基础设施,为用户提供公有云之上的HPC服务。除了提供计算资源环境,E-HPC还提供了很多独立的功能模块,如作业管理、用户管理、集群命令执行等。其中,借助集谛(CloudMetrics)模块,用户可以通过性能大盘查看集群资源的饱和度,从全局监控集群节点的状态;从节点性能,查看节点具体指标的变化曲线和历史数据,并且能够与调度的作业信息相关联;从进程性能,查看具体进程的历史信息,进而确定需要剖析的进程;从性能剖析,获取热点函数分布及其调用栈信息,了解应用内部的执行状态。

WRF(Weather Research and Forecasting)是新一代中尺度预报模式,被气象行业广泛应用的开源数值气象模拟(NWS)软件,随着气象气候计算上云的趋势,WRF需要针对云超算环境进行优化,本文描述了通过集谛分析WRF在云上运行的性能特征,逐步实现性能优化的过程。

运行算例是中国范围天气预测;运行平台为ecs.scch5.16xlarge,32core, 64vCPU, 192GB内存,配有10Gbit/s Ethernet和46Gbit/s RoCE网络。

初始运行监控

借助集谛与集群调度系统相关联、历史信息自动保存的功能,可以直接在调度系统提交作业,待作业完成后随时查看作业运行过程中的运行性能特征,如图1所示。

base_node_cn.jpg
a.按节点分类
base_node_mt.jpg
b.按指标分类
图1 WRF运行时性能特征

从单个节点不同指标变化(图1.a)可以看出,程序有明显的周期性特征,存储带宽会在一段间隔有明显的增大,同时伴随着节点间网络通讯的减少。从本算例,运行共产生7个结果文件,与监控的7次存储带宽高峰相对应,而且结果文件主要是在每小时预测后统一写出,在运行过程中,没有存储带宽的压力。
从节点间网络性能变化(图1.b)看,节点间的网络负载不均衡,从应用逻辑也可以解释,由于天气预测跟地形(陆地、海洋等)相关,或伴随负载动态变化(如云的移动),进程边界交换信息不同,节点间会存在网络通讯不均衡现象。但是,所有节点的网络带宽偏低,由于平台配置两种网络,需要检查是否使用高速RoCE网络。

改用RoCE性能监控

通过查看运行配置,发现MPI通讯为Ethernet,因此需要调整网络配置利用高速的RoCE网络,提交作业再次监控,得到运行特征如图2所示。

net_node_cn.jpg
a.按节点分类
net_node_mt_net.jpg
b.按指标分类
图2 使用RoCE后的WRF运行时性能特征

显然,程序运行使的节点间网络带宽和存储带宽增大,原因在于计算时通讯使用了RoCE网络,可以将Ethernet带宽资源用于存储操作使用。网络通讯带宽由原来的180MB/s、240MB/s提升到320MB/s、450MB/s。
从监控结果发现,节点间的存储带宽极不均衡,仅有compute22节点负载文件操作,难以利用NAS的整体带宽资源。

PNetCDF多节点并行I/O

通过日志分析文件I/O操作耗时比例较高(约25%左右,以某算例为例,并随计算规模变化)。WRF使用NetCDF文件格式,若采用NetCDF classic经典模式,即主进程汇集所有从进程的部分结果数据,再由主进程完成文件写操作,如图3 a),跟之前的网络和存储监控数据相吻合。

pnetcdf_fig_ab.png
图3 NetCDF I/O 方案比较。a) 串行I/O; b)并行I/O。

为了提高运行效率,可采用并行NetCDF I/O的优化方案,即所有节点参与I/O操作,减少I/O操作等待时间,如图3 b)所示。

因此,可以借此PNetCDF方案提升WRF的性能,提交作业再次监控,得到运行特征如图4所示。

pnet_node_cn.jpg
a.按节点分类
pnet_node_mt.jpg
b.按指标分类

图4 使用RoCE+PNetCDF后的WRF运行时性能特征

可以看出,每个节点均有I/O操作相关的指标监控数据,跟PNetCDF的原理相匹配。从监控结果看,每完成一小时预测后的文件操作时间明显减小,性能得到进一步提升。

总结

通过E-HPC集谛 —— 集群运行监控和应用性能分析模块,能够充分了解WRF在运行过程的性能特征,改变了以往仅靠WRF日志输出的时间戳观测程序运行状态。同时,可以以应用的运行性能特征为依据,使用RoCE高速网络和PNetCDF并行I/O的优化策略,逐步提高了WRF的运行效率,最终性能提高加速比达到2.4X,如图5所示。

Speedup.jpg
图5 WRF单小时平均预测时间的性能优化结果

目录
相关文章
|
6月前
|
存储 数据可视化 大数据
高性能计算HPC优化实例在摩托车外流场仿真场景的最佳实践
本文整理自阿里云高性能计算研发工程师曹杭在【HPC优化实例商业化发布会】中的动手实验分享,集中讲解HPC优化实例动手实验Demo细节。
|
算法 新能源 调度
【V2G】电动汽车接入电网优化调度研究(Matlab代码实现)
【V2G】电动汽车接入电网优化调度研究(Matlab代码实现)
139 0
|
安全
【智能电网】智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)
【智能电网】智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)
|
算法 调度
含电动汽车的区域综合能源系统优化调度研究(Matlab代码实现)
含电动汽车的区域综合能源系统优化调度研究(Matlab代码实现)
|
调度
【SCI】综合能源系统中热电联产、电制气和碳捕集系统的建模与优化(Matlab代码实现)
【SCI】综合能源系统中热电联产、电制气和碳捕集系统的建模与优化(Matlab代码实现)
103 1
|
存储 安全 调度
MindOpt——优化虚拟电厂智能调度问题(一)
近年来,在实现“双碳”目标的道路上,以风、光为代表的可再生能源作为缓解能源压力、促进可持续发展的重要途径广受关注。虚拟电厂作为一种区域性多能源聚合形式,实现了可再生能源大量接入电力系统运行,推动城市能源系统绿色高效发展。研究大规模常态化运行的虚拟电厂关键技术成为亟待解决的问题。分布式光伏、分布式储能及可控负荷等灵活性资源具有容量小、资源种类多、数量庞大等特点,难以直接参与电网互动运行。虚拟电厂有效聚合电源、负荷、储能等各类资源,参与电力市场,响应价格信号,为电网提供调峰、调频、调压与备用等辅助服务。
MindOpt——优化虚拟电厂智能调度问题(一)
|
算法 调度
【能量管理系统( EMS )】基于粒子群算法对光伏、蓄电池等分布式能源DG进行规模优化调度研究(Matlab代码实现)
【能量管理系统( EMS )】基于粒子群算法对光伏、蓄电池等分布式能源DG进行规模优化调度研究(Matlab代码实现)
339 0
|
调度
微电网经济优化运行(光伏、储能、柴油机)(Matlab代码实现)
微电网经济优化运行(光伏、储能、柴油机)(Matlab代码实现)
|
算法 调度 Python
粒子群算法求解电力系统环境经济调度+微电网调度(风、光、电动车、柴油机、主网)(Python代码实现)
粒子群算法求解电力系统环境经济调度+微电网调度(风、光、电动车、柴油机、主网)(Python代码实现)
133 0
|
机器学习/深度学习 人工智能 达摩院
MindOpt——优化虚拟电厂智能调度问题(二)
智慧楼宇调度,是在保证社区负荷需求的情况下,通过储能设备的指令控制,以用电经济性、环保性和对电网稳定性为综合目标的一种调度场景。
MindOpt——优化虚拟电厂智能调度问题(二)