用微机多核CPU并行方式运转WRF模式
2012-09-29杨仁勇李云艳
杨仁勇,李 勋,李云艳
(1.南京信息工程大学大气科学学院,江苏 南京 210044;2.海南省气象局,海南 海口 570203)
1 引言
大气运动所遵循的微分方程组目前在数学上无法求得其精确解,只能通过近似方法求其数值解。数值模式用谱方法或差分方法对方程组进行数值求解,这个近似解的结果随着模式网格分辨率提高变得更准确[1],这就是气象学者孜孜不倦地追求更高分辨率模拟和预报的原因。从数值预报研究和业务发展的历史也可以看出,二十多年前的模式水平分辨率是几百千米,而现在是几十千米甚至几千米。二十多年来世界上几大气象中心的数值预报检验结果也显示,随着模式改进和分辨率提高,预报可用时效越来越长。理论研究和实践均表明,在既有的计算条件下,尽可能使用高分辨率网格距来模拟预报会取得更好的效果。WRF模式是由美国NCAR、NOAA和俄克拉荷马大学的暴雨分析预报中心等多单位共同合作发展起来的新一代非静力平衡、科研和业务预报统一的中尺度预报和资料同化模式,对中小尺度天气过程具有很强的预报能力。乔林等[2]用它模拟分析过黔西南的暴雨过程,王晓芳等[3]用它模拟分析过湖北的飑线过程,苗春生等[4]用它模拟分析2008年1月中国南方雨雪冰冻过程,丁治英等[5]和徐文慧等[6]均用它模拟分析过台风登陆过程。但是随着网格分辨率的提高,需要的计算时间几乎成量级增长。分析如下:假定模拟区域、预报时间和其他参数不变,当水平网格距减小到原来的一半时,则水平X、Y方向的格点数均变为原来的2倍,整个区域格点总数将变为原来的4倍,由于网格距减小一半,为了保持积分计算的稳定性则时间步长也需要相应减小一半,这会导致计算的总积分次数增加1倍,在假定垂直方向的分辨率(垂直层数)不变的情况下,当水平分辨率提高1倍时所需要的计算时间将变成原来的8倍,一般垂直层数也需要适当增加[7],计算耗时将是10倍以上增长,所以要想提高模拟的网格分辨率对计算能力的要求非常巨大。怎样提高WRF模式计算速度呢?采用多机集群并行是很有意义和必要的,它可以充分利用集群中的多个CPU来同时进行模式计算[8]。对于那些没有高性能计算机的地市级和省级气象台站来说,用微机集群并行方式运行WRF模式将变得更有实际意义;对于预报业务来说,可以在更短的时间内算完从而达到业务时限要求;对于模拟来说,可以将网格距分辨率提高到几千米甚至几百米,以满足特定个例的研究需求。由于目前微电子制造技术所限,微机CPU的主频增长变得越来越难,从而有朝多核方向发展的趋势,目前已经有十二核CPU面市,今后的微机CPU将会拥有更多核芯。WRF模式已在我国广泛应用,因此有必要探讨用多核CPU单机集群并行方式运转WRF模式的一些关键问题。
2 集群环境简介及构成要件
目前常见的集群(Cluster)架构有两种,一种是Web/Internet cluster system,这种架构主要是将资料放置在不同的主机上面,由多部主机同时负责一项服务,通常叫分布式集群;另一种则是所谓的并行运算,就是将同一个运算交给整个集群里面的所有CPU来进行同步运算。由于使用到多个CPU的运算能力,可以加快运算的速度,即所谓的高性能集群(HPC)。大型计算机上就是使用很多的CPU来并行运算,所以速度极快,造价昂贵。它主要用在天文、军事、物理等需要很精密的、大量的运算工作中,它们通常是使用 Unix系统。不过,目前由于微机的大量普及且CPU的计算能力也越来越强,因此,这里主要介绍的就是组建Linux系统下的微机集群。
2.1 主从集群架构
最简单的集群其实就是以一种主从(Master/Slave)架构来进行并行运算工作的。主节点机上面必须要有可以将工作分配给各个节点的函数库,也就是MPI,其最重要的功能就是将工作分配到各节点,而最重要的软件就是MPICH和编译器。由于集群是将一个工作平均分给所有的节点,所以,如果构建集群的节点具有不同的CPU运算等级,那么先做完的节点将会等到所有的节点都进行完毕后,才会再进行下一步的工作以保持同步。因此建议,在同一个集群里各节点都要使用相同型号的CPU。
如果主节点机与从节点机是在同一部机器当中,例如有双CPU或者多核CPU的机器,那么就不需要网络功能,这就是本文所述的单机集群。如果主节点机与从节点机使用不同的机器就需要高速联网通讯。这方面的功能有:SSH,用来在主节点机与从节点机间执行命令;NFS,使主节点机和从节点机能共同读取主节点机上相应的目录数据。下面就集群并行重要的环节分别做介绍。
2.2 信任连接方式SSH
WRF模式可以在 Linux操作系统下运行,因此,我们讨论的集群在 Linux下构建。如果在不同的机器之间,则可使用SSH方式来发送工作指令,用SSH方式可以直接在A机器向B机器发送工作指令,而不需要登录B机器,这就是SSH的主要功能,通常在双机互访时需要输入密码,而集群系统要求设定为互访时不需要密码(即信任连接),这样主节点机可自由地访问从节点机,从而达到启动模式程序并行运算。
2.3 并行软件MPICH
MPI(Messages Passing Interface)是一个规格很严密的通讯标准,主要的功能是处理并行运算之间各个节点的资料交换[9],但请注意,MPI并不是一套软件而是一套标准。而MPICH才是符合MPI标准通讯协议的一套软件,MPICH的详细资料可以参考:http://www - unix.mcs.anl.gov/mpi/mpich/。它提供的MPI函数库可以实现并行运算的功能。当所写的程序只要能够使用MPICH提供的函数库,那么该程序就可以实现并行运算。这样可以避免程序开发者处理通讯方面的问题,而将重心放在程序本身的问题上面。
2.4 网络文件共享NFS
构建集群,除了SSH和MPICH这两个软件之外,NFS在集群中也很重要。这是因为模式实际是在多部机器上同时运行的。因此,要求集群中的每部机器都要能进行读写操作模式数据,其中也包括前面介绍的MPICH软件的函数库。这就要求我们要在主节点机上用NFS方式共享出一个目录,集群中所有机器都能存取。因此需要将所有集群软件和资料,例如 PGI编译器、MPICH、NETCDF、WRF 模式等等,都安装到主节点机的这个NFS共享目录下,以便所有机器统一使用,以保持一致性。
2.5 单机集群与主从集群的关系
现在市面的微机所配置的CPU基本都是双核芯以上,四核芯、六核芯及十二核芯均有,如果是普通微机多为单颗CPU,如果是一般服务器,主板可支持两颗CPU,这两类微机很普及,价格也相对低廉。如是高级服务器,每台可支持4颗(甚至8颗或更高)CPU,但这种服务器属于专用级别,价格比较贵。
构建主从集群结构进行HPC高性能计算,是因为集群可以将多台机器上的CPU集中利用,在WRF模式积分运算时缩短单步积分时间,从而提高模式计算速度。在多核CPU出现之前的单核CPU时期,集群中有几台机器加入运算就相当于有几个CPU在并行运算。现在由于多核CPU微机的普及,用单机即可组成集群,实现多CPU并行运算,或者用少量的机器即可组成较多CPU的集群。
用单台多核CPU的微机组成的集群实际上是主从集群的一种简化方式,在主从集群的构建中有很多与网络设置有关的项目,如SSH信任连接和网络文件共享NFS等在单机集群中就不再需要,并行软件MPICH的设置也相对简单,这样就可以大大简化操作,使得技术人员不再被繁杂的网络设置问题困扰。单机集群与多机集群相比具有配置操作简单,故障率低,软硬件维护容易、计算速度快等优点。
3 单机集群并行WRF模式所需条件
3.1 硬件和操作系统
微机一台,最好是PC服务器,配置2颗CPU以上,每颗CPU最好是4核芯以上,这样WRF并行运算时可同时利用到8个CPU核芯以上。要求CPU的主频越高越好,另外CPU的FSB频率(前端总线频率)也越高越好,根据笔者的实验经验,同主频的CPU当其FSB不同时运算速度有显著差别。Linux操作系统建议使用RedHat 9.0或者RedHat AS 4.5这两个版本,用户数量众多、兼容性好,碰到问题在网上容易查找到相应的解决办法。
3.2 编译WRF模式必须用到的基础软件
①装Fortran 90的编译程序PGI:无论是单机集群还是主从集群,PGI编译软件都是WRF模式安装的基础。软件可从 PGI的官方网站 http://www.pgroup.com/downloads.htm下载最新共享试用版本,需要注意PGI编译器有工作站和服务器两种版本,其中的服务器版支持并行编译,要求下载Linux系统用的版本,安装完后需要修改相应的环境变量。
②装并行软件MPICH2:从网上下载后进行安装。安装完成后注意创建并行主机文件:geidt/root/mpd.hosts,文件内容如下:127.0.0.1:8(注:后面的8为本机的CPU核数,根据情况而定,缺省为1)。最后根据安装说明进行并行环路测试,通过则说明已经安装成功。此步是进行并行运算需增加的,若是串行则不需要。
③装NETCDF模块:安装程序可从网上下载,最新版本已经到V4,在WRF模式网站是见过V4与模式兼容性不好的提示,建议使用以前的V3.6版本。安装完后需要修改相应的环境变量。
④RF模式的编译。上述3步按顺序安装成功后,就可进行WRF模式的安装编译了,WRF模式主要分WPS、主模块和3DVAR 3个部分。若不做资料同化则只需安装编译前2个部分即可。WPS模块是WRF模式的前处理部分,用串行或并行方式编译,执行时间相差不多,都是大约几分钟的时间,因此没有必要把WPS按并行方式编译和运行(并行程序信息反馈不直观)。而主模块需要用并行方式编译才能实现多核CPU并行运算,达到提高程序执行速度的目的。根据WRF安装指南,应先编译主模块然后再编译WPS模块。
4 并行效率与模拟规划
单机集群并行环境建立后即可用并行方式编译WRF模式。WRF模式的并行比MM5模式要简单很多,它将串行和并行方式都统一起来,只需选择而不需要再修改参数。并行程序多在模式运转最耗时的主模块部分。WRF模式的安装过程与单机串行基本一样,只有主模块部分有差别。根据并行试验情况适当规划区域模拟参数。
4.1 WRF模式的并行模块编译
WRF模式用单机串行方式时编译通常选择1或2,若用并行编译方式在配置configure时选择“5.Pc Linux i486 i586 i686,PGI compiler DM - Parallel”或“6.Pc Linux i486 i586 i686,PGI compiler DM -Parallel”均可。
主模块配置好后再进行编译:compile em_real。当集群并行环境调试成功且模式配置选择并行方式后,在编译过程中会自调用MPICH函数库对模式FORTRAN程序进行并行编译,检查成功后生成的real.exe和wrf.exe文件比串行编译的文件字节数要大很多。
并行编译后的real.exe和wrf.exe执行时与串行生成的文件有差别,一般来说,real.exe程序运行时间只有几分钟,可以不用并行方式执行,而wrf.exe需要用mpiexec或者mpirun启动并行方式来执行。具体执行方式如下:#mpirun–np 8./wrf.exe,其中的参数8表示用8个CPU核芯来同时参加并行运算。程序串行运行时在屏幕上有提示信息,而并行运行的提示信息都写在 RSL.000,RSL.001等文件中,每次并行运行前最好将旧的这类文件都删除。
4.2 WRF模式的单机集群并行速度和效率测试
我们使用一台 PC服务器(两颗 Intel至强X5355CPU,每颗4 核芯,主频 2.6G,FSB1366M),内存为4G,硬盘为万转SCSI接口136G容量。以目前海南省区域中尺度数值预报系统为例,WRF模式使用V3.2,模拟区域格点数260×260,格距12 km(区域为 3 120 km ×3 210 km),区域中心取 110°E、24°N,垂直方向取27层,物理过程和各种参数化方案为Lin混合方案、Kain-Fritsch积云参数化、Rrtm长波辐射、Dudhia短波辐射、MRF边界层。积分步长取70 s。使用NCEP资料作初始场,积分模拟24 h分别做试验。
表1 WRF模拟24 h的单机集群并行试验数据
多机集群并行运算的加速比理论极限为1.8左右,并行效率理论极限0.9左右[10]。从表1中单机集群并行WRF模式试验数据来看,并行运算效率最高是的2个核芯为0.92,这个数值已经达到理论极限值,这是因为单机并行,数据交换是在微机主板的系统总线上进行,其交换速度是网络通信无法达到的,并行效率随着核芯数目增加而逐渐下降。计算速度随着CPU并行数目的增加而变快,最快是8核,此时加速比也是最高的达3.50,随着并行核芯数目的增加,加速比也在增加,但是其增长速度趋缓。
我们用相同的WRF模式参数,分别在曙光公司和IBM公司的每秒2.5万亿次级别的高性能计算机上做过测试,当并行的CPU数目超过128个以后,WRF模式就会遇到计算速度瓶颈,即计算速度几乎难以继续提高。
4.3 区域模式规划和运行试验
地市级区域中尺度预报系统的区域规划需要考虑以下几个因素:一是模拟水平区域一般要在2 000 km×2 000 km以上,如果区域太小则边界对结果影响可能较大,另外如果区域太小则难以包含影响当地的多种天气系统;二是模式网格水平分辨率要在20 km以内,目前国家气象中心下发业务产品的MM5模式分辨率为30 km、GRAPESMESO模式分辨率为15 km,若地市级的模式分辨率不如它们则没有再运行的必要;三是预报时效一般要求达到72 h,这是短期预报业务规定的要求;四是模式运算须在200 min内完成,以每天北京08时资料起报为例,要等到12时NCEP-GFS全球模式预报出来后,中尺度模式才能取得初始和边界条件并开始运行,要赶在15时30分地市预报制作发布之前结束。在这个仅200 min的时间段内,中尺度模式必须完成从资料准备到结果输出的全部工作,否则将失去预报意义。由于现在预报业务要求地市级气象台站要制作精细化乡镇预报产品,业务工作量大增,而高分辨率的区域中尺度模式产品是制作精细化预报产品的基础,因此对其需求是很大的。
WRF模式中变量水平分布采用Arwkrawa-C网格,时间积分采用三阶或者四阶的Runge-Kutta算法,其优点是积分步长可以取得相对较长,取值范围为格距大小的5~7倍之间,一般多取为6倍(MM5为3倍),即格距15 km时,步长取为90 s。WRF模式计算的总耗时可以从单步耗时估算出来:总耗时=总积分步数×单步耗时,其中:总积分步数=总预报时效/积分步长。如果是做业务预报,总耗时(200 min内)和预报时效(72 h)基本是固定的,那就只能减少单步耗时,减少单步耗时有3种办法,一是提高计算速度,通过提高CPU主频或增加并行CPU数目等方法来实现,二是减小区域(会影响天气系统过程描述),三是将网格距变大(会影响天气系统精度描述)。后两种都是减少网格总数的办法,对预报质量均会带来一定影响。
以3.2节中的模拟区域、计算机条件和表1中的试验数据进行分析,预报时效是24 h,只能作为短时预报系统来使用,有效预报时间约15 h,使用8CPU并行总耗时153 min低于200 min可以满足业务需要,用4CPU需193 min基本可以完成,而用2CPU和单CPU则耗时292 min以上不能完成任务,预报失去意义。
区域数值预报系统若以网格距12 km规划,积分步长取70 s,预报72 h,则总积分次数 =72×3 600/70,约为3 700次。需要在180 min内计算完成(要留部分时间给模式的前后处理和存储等其他工作),每步耗时=180×60/3 700,约为2.9 s;其他的格距规划可以类似计算出来。由此可以总结出,当规划的网格距(分辨率)确定后,就可以计算单步耗时上限值,在既有的计算条件下,可以适当调整区域大小(网格总数)让单步耗时控制在允许值内,才能在有效时间内实现预报。目前海南省区域中尺度数值预报系统采用表2中方案1做区域规划,而且还嵌套子区域(70×70,4 km),按照表2中最快速度8CPU的总耗时451 min,显然不能满足业务要求,所以使用了曙光4 000高性能计算机才能满足业务要求。2007年在PC服务器上进行业务试行时就是使用方案5的区域规划。
表2 WRF模拟72 h不同格点数目的并行试验数据
表2中列出了6种区域规划方案及其运行总耗时测试,随着计算网格总数的减小,总耗时也是逐渐减小的。对比方案1与方案6:格点数减少一半,总耗时只需要原来的1/5~1/4;对比方案4与方案5:格点数一样但格距不一样,单步耗时基本相同,但总耗时粗格距随总积分次数减小而变小了;对比方案4与方案6:两者的区域大小一样,因格距粗细不同描述的网格总数不同,两者格距虽只差3 km而总耗时却几乎相差一倍。以上试验数据也验证了前言中分辨率提高对计算时间需求增长的分析结果。
5 小结与讨论
①数值模式使用积分近似求解的方法决定了对网格分辨率提高的不懈追求。WRF模拟分辨率提高一倍,计算耗时将呈量级增长。微机CPU朝多核方向发展,单机集群并行与多机集群相比,数据交换不再需要通过网络,因此具有维护操作简单、故障率低、计算速度快的特点。若有条件,在单机多核CPU上组建多机集群也很有意义。
②WRF模式并行运算时使用CPU核数要按2的次方数增加,这样运算效率是最优的[6],从测试的结果看出2个核芯并行效率最高达92%。但我们追求目标是计算速度,从测试结果看,使用8个核芯时速度最快,加速比最高达到3.50,随着CPU并行数目增加,计算速度变快。用更高主频和更多CPU数目进行并行计算,速度将会更快,用海南省区域中尺度方案测试,WRF模式在目前的高性能计算机上最多可并行到128个CPU,再往上会碰到速度瓶颈。
③规划地市级区域中尺度数值预报系统时需要综合考虑区域大小、预报时效、既有计算机条件、200 min的模式计算时间限制等多种因素。若做模拟因为没有模式计算时间限制,因此不存在这些问题困扰,只需耐心等待模式计算完成即可。
[1]沈桐立,田永祥,葛孝贞,等.数值天气预报[M].北京,气象出版社,2003.
[2]乔林,陈涛,路秀娟.黔西南一次中尺度暴雨的数值模拟诊断研究[J].大气科学,2009,33(3):537-550.
[3]王晓芳,胡伯威,等.湖北一次飑线过程的观测分析及数值模拟[J]. 高原气象,2010,29(2):471-484.
[4]苗春生,赵瑜,王坚红.080125南方低温雨雪冰冻天气持续降水的数值模拟[J].大气科学学报,2010,33(1):25-33.
[5]丁治英,王勇,沈新勇,等.台风登陆前后雨带断裂与非对称降水的成因分析[J].热带气象学报,2009,25(5):523-520.
[6]徐文慧,倪允琪,汪小康,等.登陆台风内中尺度强对流系统演变机制的湿位涡分析.气象学报[J],2010,68(1):88-101.
[7]刘宇迪,张亮.静力模式中水平分辨率与垂直分辨率的协调性问题[J].气象科学,2006,26(5):530-535.
[8]杨仁勇,林建兴,等.用微机集群并行方式运转WRF模式[J].气象研究与应用,2007,28(S2):156-159.
[9]都志辉.高性能计算并行编程技术—MPI并行程序设计[M].北京:清华大学出版社,2001.
[10]谢超,麦联叨,等.关于并行计算系统中加速比的研究与分析[J].计算机工程与应用,2003,26:66-68.