在BMS上进行WRF部署与性能优化【玩转华为云】

举报
龙哥手记 发表于 2022/10/12 14:02:41 2022/10/12
【摘要】 通过配编译器等应用的来并行优化层面去综合优化,这样来提升WRF运行性能
本文主要内容有
  • 一 裸金属服务器能干啥
  • 二 先编译好WRF主程序
  • 三 可以开始运行WRF主程序
  • 四 通过运行参数进行性能优化

2.gif

一 裸金属服务器能干啥

1.1 先搞清楚定义

裸金属服务器是兼具弹性云服务器和物理机性能的计算类服务,为您和您的企业提供专属的云上物理服务器,为核心数据库、关键应用系统、高性能计算、大数据等业务提供卓越的计算性能以及数据安全,你可灵活申请,按需使用;并且开通都是自助完成的,您只需要指定具体的服务器类型、镜像、所需要的网络配置等,即可在30min内获得所需的裸金属服务器,服务器供应、运维工作交由华为云,您可以专注业务创新;

1.2 产品架构怎样

通过与其他服务组合,裸金属服务器可以实现计算、存储、网络、镜像安装等功能

具体如

  • 裸金属服务器在不同可用区部署(可用区之间通过内网连接),部分可用区发生故障后不会影响同一区域内的其他可用区
  • 可通过虚拟私有云建立专属的网络环境,来设置子网、安全组,并通过弹性公网IP实现外网链接(需带宽支持)
  • 通过镜像服务,可以对裸金属服务器安装镜像,也可以通过私有镜像批量创建裸金属服务器,实现快速的业务部署
  • 通过云硬盘服务实现数据存储,并通过云硬盘备份服务实现数据的备份和恢复
  • 云监控是保持裸金属服务器可靠性、可用性和性能的重要部分,通过云监控,用户可以观察裸金属服务器资源
  • 云备份提供对云硬盘和裸金属服务器的备份保护服务,支持快照技术的备份服务,并支持利用备份数据恢复服务器和磁盘的数据

11.png

1.3 常用概念

  • 云上的物理计算资源,即运行在华为云数据中心的裸金属服务器,请查看实例
  • 描述裸金属服务器所在的数据中心,请查看区域和可用区
  • 裸金属服务器由不同的CPU、内存、存储和网络等组成,请查看实例类型
  • 裸金属服务器运行环境的模板,其中包含了特定的操作系统和一些预装的应用软件,请查看镜像
  • 裸金属服务器网络类型及各自使用场景,请查看网络
  • 实例对内和对外的服务地址,即私有IP地址和弹性公网IP地址

1.4 访问方式

公有云提供了Web化的服务管理系统(即管理控制台)和基于HTTPS请求的API管理方式

  • API方式

    如果用户需要把云平台上的裸金属服务器集成到第三方系统,用于二次开发,请用API方式访问裸金属服务器

  • 管理控制台方式

    其他相关操作,请用管理控制台方式访问裸金属服务器,如果用户已注册公有云,可直接登录管理控制台,从主页选择“计算 > 裸金属服务器”。

1.5 裸金属服务器的优势

安全可靠

裸金属服务器是用户专属的计算资源,支持VPC、安全组隔离;支持主机安全相关组件集成;基于擎天架构的裸金属服务器支持云磁盘作为系统盘和数据盘,支持硬盘备份恢复能力;支持对接专属存储,满足企业数据安全和监管的业务安全和可靠性诉求

性能卓越

裸金属服务器继承物理服务器特征,无虚拟化开销和性能损失,100%释放算力资源。结合华为自研擎天软硬协同架构,支持高带宽、低时延云存储、云网络访问性能;满足企业数据库、大数据、容器、HPC、AI等关键业务部署密度和性能诉求

敏捷的部署效率

裸金属服务器基于擎天加速硬件支持云磁盘作为系统盘快速发放;分钟级资源发放,基于统一console控制台、开放API和SDK,支持自助式资源生命周期管理和运维

云服务和解决方案快速集成

裸金属服务器基于统一的VPC模型,支持公有云云服务的快速集成;帮助企业客户实现数据库、大数据、容器、HPC、AI等关键业务云化解决方案集成和加速业务云化上线效率;

1.6 有哪些重要场景呢

数据库场景

政企、金融关键的数据库业务必须通过资源专享、网络隔离、性能有保障的物理服务器承载。裸金属服务器为用户提供独享的高性能的物理服务器,满足业务需求

大数据场景

互联网大数据相关业务,包含大数据存储、分析等典型业务。支持裸金属本地存储和结合OBS服务的存算分离方案

容器场景

互联网弹性业务负载。相比虚拟机,裸金属容器提供更高的部署密度更低的资源开销,更加敏捷的部署效率。基于云原生技术帮助客户实现降低云化成本目标

高性能计算/AI场景

超算、基因测序、人工智能等高性能计算场景,处理的数据量大,裸金属服务器满足业务对服务器的高计算性能、高稳定性、高实时性的诉求

什么是安全组

安全组是一种虚拟防火墙,具备状态检测和数据包过滤功能,用于设置弹性云服务器、裸金属服务器、负载均衡、数据库等实例的网络访问控制,是重要的网络安全隔离手段。

您可以通过配置安全组规则,允许安全组内的实例对公网或私网的访问

  • 安全组是一个逻辑上的分组,您可以将同一区域内具有相同安全保护需求的裸金属服务器加入到同一个安全组内。
  • 同一安全组内的BMS实例之间默认内网网络互通,不同安全组内的实例之间默认内网不通。
  • 您可以随时修改安全组的规则,新规则立即生效

默认安全组

在一个区域创建BMS实例,如果当前帐号在这个区域尚未创建安全组,系统会为您创建一个默认安全组

安全组的默认规则是在出方向上的数据报文全部放行,入方向访问受限,安全组内的裸金属服务器无需添加规则即可互相访问;


二 先编译好WRF主程序

2.1 登录到裸金属服务器

回到【实验操作桌面】,按以下步骤完成登录弹性云服务器操作先,①然后双击桌面的“Xfce终端”打开Terminal,执行如下命令,登录裸金属服务器;

ssh root@EIP

说明:裸金属服务器的弹性公网IP地址可以通过在【实验操作桌面】的浏览器中点击“控制台”->“服务列表”->“计算”->“裸金属服务器”进入裸金属服务器列表,进行查看并复制

②接受秘钥输入“yes”,回车;
③输入密码:aZ8lIuy-x@S01eR
成功登录裸金属服务器之后如下

2.2 然后执行环境准备脚本

复制并在“Xfce终端”执行如下,就能下载环境准备的脚本

wget https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/wrf/wrfinstall.sh

执行如下,运行该脚本

sh wrfinstall.sh

环境准备脚本执行完成大约要【3分钟】,该脚本执行完成,意味着系统为您准备好了实验过程所需的OpenHPC、GCC、OpenMPI、数学库等软件,以及WRF的安装包
安装成功如下

2.3 解压WRF软件包

执行以下命令进行解压WRF软件包

cd /home
tar -xvf WRFV3.9.1.1.TAR.gz 

2.4 然后添加环境变量

执行下面命令添加环境变量

echo -e "export WRFIO_NCD_LARGE_FILE_SUPPORT=1" >> /etc/profile

执行下 使添加好的环境变量生效

source /etc/profile

输入以下命令查看环境变量是否存在

export |grep -i "WRFIO"

查询的结果如下图所示,表示环境变量已经设置成功了哈

2.5 加载编译器和OpenMPI

执行以下命令进行加载编译器与OpenMPI

module load gnu8/8.3.0
module load openmpi3/3.1.4

如果在进行后续的步骤过程中关闭了命令行终端,那么为了保证实验的正常进行,需要重新执行2.4步和2.5步哈

通过“module list”命令查看上面两个module是否加载

module list

2.6 用vi编辑器打开并修改文件“arch/configure_new.defaults”

cd /home/WRFV3
vi arch/configure_new.defaults

然后在1920行加入以下内容

如何定位?

“:1920”回车定位至1920行,单击键盘“i”进入编辑模式,粘贴输入如下代码后,单击键盘“ESC”退出编辑模式,键入“:wq”回车保存并退出

################################################## #########
#ARCH   Linux   aarch64锛実nu8 OpenMPI3 #serial smpar dmpar dm+sm
#
DESCRIPTION             =       Arm($SFC/$SCC):Aarch64
DMPARALLEL              =       1
OMPCPP                  =       -D_OPENMP
OMP                     =       -fopenmp
OMPCC                   =       -fopenmp
SFC                     =       gfortran
SCC                     =       gcc
CCOMP                   =       gcc
DM_FC                   =       mpif90 -f90=$(SFC)
DM_CC                   =       mpicc -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT
FC                      =       $(DM_FC)
CC                      =       $(DM_CC)
LD                      =       $(FC)
RWORDSIZE               =       CONFIGURE_RWORDSIZE
PROMOTION               =
ARCH_LOCAL              =
CFLAGS_LOCAL            =       -w -O3 -g -Wl,-rpath=/opt/ohpc/pub/libs/gnu8/openmpi3/netcdf/4.7.1/lib -Wl,-rpath=/opt/ohpc/pub/libs/gnu8/openmpi3/netcdf-fortran/4.5.2/lib -Wl,-rpath=/opt/ohpc/pub/libs/gnu8/openmpi3/hdf5/1.10.5/lib
LDFLAGS_LOCAL           =       -fopenmp
FCOPTIM                 =       -O3 -mcpu=native -g -march=armv8.1-a -ffree-line-length-none
FCREDUCEDOPT            =       $(FCOPTIM)
FCNOOPT                 =       -O0 -g -ffree-line-length-none
FCDEBUG                 =       -g $(FCNOOPT)
FORMAT_FIXED            =       -ffixed-form
FORMAT_FREE             =       -ffree-form
FCSUFFIX                =
BYTESWAPIO              =       -fconvert=big-endian
FCBASEOPTS              =       -w $(FORMAT_FREE) $(BYTESWAPIO)
#MODULE_SRCH_FLAG       =
MODULE_SRCH_FLAG        =       -J $(WRF_SRC_ROOT_DIR)/main
TRADFLAG                =       -traditional-cpp
CPP                     =       /lib/cpp
AR                      =       ar
ARFLAGS                 =       ru
M4                      =       m4 -B 14000
RANLIB                  =       ranlib
CC_TOOLS                =       $(SCC)

2.7 生成 “configure.wrf”文件

执行以下命令进行,生产“configure.wrf”文件

./configure

编译方式选择【4】,输“4”回车,然后嵌套方式选择【1】,输入“1”回车执行完成后,会在当前目录生成 “configure.wrf”文件

2.8 用vim打开并修改“configure.wrf”文件

然后执行下面命令打开“configure.wrf”

vim configure.wrf

修改第213行,在“-lnetcdf”之后添加以下内容

如何操作呢?

键入“:213”回车定位至213行,单击键盘“i”进入编辑模式,移动光标至“-lnetcdf”后,粘贴输入如下,单击键盘“ESC”退出编辑模式,键入“:wq”回车保存并退出

-L/opt/ohpc/pub/libs/gnu8/openmpi3/netcdf-fortran/4.5.2/lib/ -lnetcdff

修改后,第213行和214行内容如下

2.9 开始编译WRF主程序

然后执行以下命令进行编译WRF主程序

./compile -j 128 wrf

那么.........编译过程需要等大约【14分钟】

编译成功后在“WRFV3/main”目录下生成wrf.exe可执行文件


三 可以开始运行WRF主程序

通过以下步骤运行WRF主程序,统计运行时间

3.1 解压12km算例文件

然后执行以下来解压

cd /home
tar jxvf conus12km_data_v3.tar.bz2

解压成功后如下

3.2 创建一个工作目录“/home/wrftest”

执行如下命令,创建个工作目录

mkdir -p /home/wrftest

3.3 运行准备

分别执行如下,把“WRF-3.9.1.1/run”目录下的文件,以及解压好的算例拷贝到“/home/wrftest”目录下面来

cp /home/WRFV3/run/* /home/wrftest
cp /home/conus12km_data_v3/* /home/wrftest

3.4 运行WRF程序

执行如下命令,在“/home/wrftest”目录下运行WRF程序

cd /home/wrftest
time mpirun --allow-run-as-root -np 128 --bind-to core ./wrf.exe

程序运行大约【6分钟】,运行完成后如下这样


四 通过运行参数进行性能优化

4.1 使用混合mpi+omp方式运行

使用混合mpi+omp方式运行,能减少通信开销,重复上一节步骤,执行如下,运行WRF主程序,统计运行时间

cd /home/wrftest
time mpirun --allow-run-as-root -np 128 -x OMP_NUM_THREADS=200 ./wrf.exe

其中,np值表示使用的核心数,OMP_NUM_THREADS表示控制OpenMP的线程数,可以适当调整这两个数值,得到最优性能
通过优化后的运行时间大约【1分钟】,运行后如下

至此,实验已全部完成

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。