杨 宁,韩林生,李 彦,路 宽,宋雨泽
(国家海洋技术中心,天津 300112)
自1980年以来,在理论科学和实验科学之后,国际上出现了“第三类科学”,即计算科学。随着所处理问题的复杂程度不断攀升以及计算模型从一维向多维发展等因素都导致了计算的数量级呈几何级数增长,而计算机单机技术的局限性和科学需求的无限性之间的矛盾直接催生了计算机并行处理技术与高性能计算集群的产生。高性能计算集群的应用极大地推动了诸如海洋数值模式这类计算量大、精度要求高的模拟计算的快速发展,对与计算科学相关的交叉学科的发展起到了极大的促进作用[1]。
随着我国海洋科技的快速发展,对建设功能齐全、服务于海洋科学技术及军事海洋学研究的海上试验场的需求显得越发突出,通过对海上试验场的设计和原型建设,初步形成科学合理、功能齐全、体系完备、服务公益、资源共享、军民兼用的试验场区。海上试验场数值模拟与仿真系统(以下简称仿真系统)作为海上试验场设计和原型建设的重要组成部分,目标在于对试验场区的海洋气象要素(海面风、海面温度、海面湿度和海面气压)和海洋水动力环境(海水温度、盐度、海流和海浪)进行连续周期性的数值模拟,将场区实测要素数据与数值模拟数据相结合,并依托数据可视化技术实现场区模拟数据的动态可视化分析,使得海上试验场建立在一个可知的、可测的、可靠的透明海洋环境场区。高性能计算集群系统专门用于大气数值模式和海洋数值模式的周期性运算,部署有大气数值模拟子模块和海洋数值模拟子模块,集群系统目前已经投入海上试验场仿真系统的准业务化运行中使用。
图1 仿真系统硬件拓扑结构
集群是一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理,而所谓的高性能计算集群就是采用集群技术来实现高性能计算[2]。简单的说,集群实际上就是一组计算机,他们作为一个整体向用户提供一组网络资源。这些单个计算机系统就是集群的节点。集群能在同一时间内执行多条指令或处理多个数据,它是并行计算的载体。
(1)良好的可扩展性:最初提高计算机性能主要依靠提升CPU的主频和总线带宽,但是基于这种方法对系统性能的提升十分有限。之后尝试通过增加CPU个数和内存容量来提升性能,于是出现了向量机,对称多处理机等,但是这种手段的瓶颈在于CPU访问内存的带宽并不能随着CPU个数的增加而有效增长。与此相反,集群系统的性能随着CPU个数的增加几乎呈现线性变化;
(2)高可靠性:当集群中的一个节点失效,那么在该节点上运行的任务会转移给其他节点,从而有效防止单点失效;
(3)高性能:平衡负载允许集群系统同时接入更多的用户;
(4)高性价比:集群技术是使用特定的连接方式将价格相对较低并且符合工业标准的硬件设备结合起来,同时能够提供高性能的任务处理能力[3]。
高性能计算集群系统主要由两类设备组成,分别是节点与交换网络。
1.3.1 节点
本文所采用集群系统的逻辑拓扑结构主要由用户节点、控制节点、管理节点、存储节点和计算节点组成。
(1)用户节点:用户节点是外部系统或者用户访问集群系统强大计算或存储能力的唯一入口。
(2)控制节点:控制节点在集群系统运转中主要承担两部分任务。为计算节点提供基本的网络服务,如DHCP、DNS和NFS;调度计算节点上的作业,通常集群的作业调度程序(如PBS)应该运行在该节点上。
(3)管理节点:管理节点是集群系统各种管理措施的控制节点,监控集群中各个节点和网络的运行状况。一般集群系统的管理软件也运行在这个节点上。
(4)存储节点:存储节点就是集群系统的数据存储器和数据服务器。
(5)计算节点:计算节点是整个集群系统的计算核心,它的功能就是执行计算。
在小型集群系统中,往往由一台计算机同时兼具用户节点、控制节点、管理节点和存储节点的功能,那么这台计算机就被称为主节点。在这种情况下,集群系统是由一个主节点和多个计算节点组成。
1.3.2 交换网络
(1)管理交换网:管理交换网络主要负责对整个系统进行管理和控制,通过各个节点之间交换管理信息报文通信,使主节点可以及时地了解到其他节点的状态,保证节点之间的协同运行,并且进行相关任务的分配,作业的调度,以及对各个节点进行控制。在本设计的集群系统中,选取千兆以太网来组建管理交换网,从而满足主节点对各个节点的控制,以及各节点之间的管理信息和状态信息的交互。
(2)计算交换网:计算交换网络主要负责所有节点计算所需数据的交换,它能够为主节点与计算节点以及计算节点之间的数据交换提供数据通路[4]。各并行分布任务之间通信量大,采用高速网络,应用性能将会明显提高,因此在本设计中,集群系统采用Infiniband网络搭建计算交换网。Infiniband是当前国际上先进、开放的互连标准,具有低延迟和高带宽的特点,能够提供40 Gbps的带宽和1 us级别的延迟,从而满足各节点之间大量数据信息的交互。
本文所依托的高性能计算集群系统由1个管理节点(包含控制节点和用户节点),1个存储节点和24个计算节点组成。管理节点的中央处理器主要由2块2.4 GHz Intel Xeon X5620四核64位CPU构成;存储节点的中央处理器主要由2块2.4 GHz Intel Xeon X5620六核64位CPU构成,具有6块2 TB的磁盘存储空间;计算节点的中央处理器主要由2块2.4 GHz Intel Xeon X5620四核64位CPU构成。集群系统的网络由Infiniband网络和1 Gb以太网组成。
图2 集群系统逻辑拓扑结构
Linpack是目前国际上最流行的用于测试高性能计算机系统浮点计算性能的方法,Linpack测试主要包括三类:Linpack100、Linpack1000和HPL。 HPL即High Performance Linpack,它是基于对高性能计算机采用高斯消元法求解稠密线性代数方程组的测试。HPL是针对现代并行计算机提出的测试方法,能够在对测试程序不做修改的基础上,调整作业的规模(矩阵大小)、CPU数目和优化策略等方法执行该测试程序,从而获得最佳的浮点性能,具有通用性好,效率高的特点,被认为是目前最好的Linpack性能测试程序。现今国际上每半年公布一次的世界最快500台计算机排名的重要依据就是HPL性能测试。
浮点计算峰值或者计算峰值是评价计算机性能的一个重要指标,是指计算机每秒能完成浮点计算的最大次数,常见的两个指标包括理论浮点峰值和实测浮点峰值[5]。
并行效率=实测浮点峰值/CPU理论浮点峰值
(1)理论浮点峰值=系统中CPU个数×CPU主频×每个时钟周期执行浮点运算的次数。
(2)实测浮点峰值是指Linpack数值,即HPL程序的测试结果。
本集群所有CPU理论峰值=CPU总核数×CPU主频×4=24×(2×4×2.4)×4=1 843.2 Gflops,而我们通过HPL测试,得出实测浮点峰值为1 620 Gflops,因此可以得出高性能计算集群的并行效率为87.89%(主流中小型高性能计算集群的并行效率约为80%),表明集群的并行性能优秀,可以满足大部分海洋数值业务化运行要求。
高性能并行计算集群的发展,满足了大气和海洋数值模式逐渐向更高时空分辨率、更细微物理过程方向发展的需求,促进了数值模式更准确、更精细模拟的实现。本文即通过一个有限体积近岸海洋数值模型FVCOM(Finite Volume Coastal Ocean Model),对高性能计算机集群的并行计算效率进行了测试。
FVCOM海洋模型是采用无结构网格、有限体积的三维原始方程海洋模式。水平方向上采用是三角网格,而在垂向方向上采用随地形变化的σ 坐标。有限体积的方法不但具备有限元方法几何拓扑结构上的灵活性,而且包含有限差分方法在数值离散上的简单的特点,更容易拟合复杂的陆地边界和进行局部网格加密;模式还包含了干/湿网格处理模块、地下水输入模块、拉格朗日示踪模块、物质输运扩散模块、生态模块等,可以满足多种用途的应用。该模式已在我国许多海域得到成功应用,并进行了业务化推广。
FVCOM的并行运算通过SPMD(Single Processor Multiple Data)方法实现[6]。首先通过METIS库对模式区域按照并行处理器的数量进行分块,并保证各区块的网格单元数目基本一致且各区块的边界总长度尽量最小,以达到平衡各处理器计算负载、减小MPI(Message Passing Interface)通讯数据量的目的;然后在各块区域分别进行积分计算,并保持相互之间的数据信息交换,以保证总体质量守恒及边界通量的正常;最后将各区块的计算结果重新整合,实现整体的输出和读写。
加速比是同一个任务在单处理器系统和并行处理器系统中运行消耗的时间比率,常用来衡量并行系统或程序并行化的性能和效果。负载不平衡和通信开支是影响加速比的主要因素[7]。负载不平衡产生的直接后果就是导致各个计算节点上CPU使用效率的不平衡,从而降低集群的并行效率。并行方法按计算颗粒度可以分为粗颗粒并行处理和细颗粒并行处理,粗颗粒并行处理主要是针对多块网格的处理;而细颗粒并行处理是面向在一块网格计算程序的内部进行并行化处理。无论是粗颗粒并行处理还是细颗粒并行处理,都需要交换多块网格虚拟层的物理信息,因此不同计算节点之间的通信开支就成为了提高集群并行效率的瓶颈[8]。
本文选取的FVCOM模式算例,共43 646个三角网格,22 947个节点,网格最高分辨率100 m,垂向7个σ 分层;模式的时间步长设计为外模6 s,内模60 s,模式的计算时间设定为3 d。
根据加速比计算方法,可以计算出在最优加速比与并行效率最高的情况下的计算节点数。
式中:T 是算例计算所需的时间;C1是计算量的大小;C2是计算机之间的通信因素;C3是网络并行计算的初始化延时;Nopt是参与并行计算的最优节点数。由于运算开始前,已经进行了相关初始化工作,因此此处设定C3为0。将FVCOM算例分配在4个节点所得计算时间为882 s,分配在8个节点上得出计算时间为510 s,然后将882 s和510 s分别带入公式(1)可得C1=3 344 s,C2=11.5 s,最终通过公式(2)得到Nopt=17。根据加速比计算方法的理论估算,此FVCOM的算例分配在17个节点并行运算时效率最高。
将模式分别在集群的主节点(即管理节点)、不同数量的计算节点上进行计算,记录其运行所需时间,并计算了加速比,其加速性能曲线如图3所示。结果显示,在当前算例的计算量下,并行运算的总时间在从1个节点增加到12个节点的过程中迅速减少,运算效率提升明显,然后随着计算节点数增加运算效率的提升能力有所下降,并在16节点时实现了并行运算的最大效率,之后随着节点数的增加,运行时间反而增加,运算效率降低。这主要是由于随着节点数的增加,虽然各区块的计算时间缩短,但各区块间MPI通讯阻塞所占用时间的比例却明显增加,且成为影响并行运算效率的主要因素[9]。
集群系统实测加速比性能的拐点出现在16节点,这与理论估算的将在17节点上达到最大加速比略有差异,可能是由于在集群系统上搭载的软件平台、运行的作业调度机制、外部的工作环境等因素的联合作用下,影响了并行计算的效率,导致处理器的计算负载以及各区间MPI通讯阻塞所消耗的时间与理论估算值略有差异的原因。
图3 不同计算节点下的加速比
根据计算出的集群理论浮点峰值,以及HPL所测得的实测浮点峰值,可以估算本集群的并行效率为87.89%,该集群并行效率高于国内主流高性能计算集群的并行运算水平,并行性能优秀,可以满足大气海洋数值模式等业务化运行的需求。
通过选用海洋数值模式FVCOM一个算例的应用,对集群系统进行了加速比测试,加速比并没有像理论那样随着计算节点数的增加而成线性增长,超过16节点后反而出现了节点越多运算时间越长的情况。虽然随着计算节点数的增加各区块的计算时间会缩短,但是区块之间MPI通讯阻塞消耗的时间在总时间中所占的比例却明显增加。相比计算缩短的时间,MPI阻塞消耗了更多的时间,从而影响了并行运算的效率,使集群加速比在16节点后出现拐点,加速性能呈下降趋势。
集群系统的加速比测试结果表明,在数值模式的并行运算中,并不是使用的计算节点越多运行速度越快,合理的使用计算节点不但可以提高运行效率,还可以节省计算资源。本设计中的集群系统通过合理化配置计算资源,选取适当的交换网络,可以同时高速并行运算部署在该系统上的大气和海洋数值模式,满足大气和海洋数值模式连续周期性运算的要求。经过一段时间的示范运行,集群系统运行稳定、计算性能优秀,完全能够满足仿真系统业务化运行的要求。
[1]陈显尧,宋振亚,王永刚,等.并行计算在海洋环流数值模式中的应用[C]//2005高性能计算应用大会论文集,2005:264-269.
[2]田俊刚.高性能集群系统分析、设计与应用[M].西安:西北工业大学,2004.
[3]张磊,姜弘道,潘海琳.计算机集群的搭建、测试与应用[J].水利水电科技进展,2006:26(2):65-69.
[4]谢向辉,彭龙根,等.基于Infini Band的高性能计算机技术研究[J].计算机研究与发展,2005,42(6):905-912.
[5]余江洪,肖燕成,等.基于Linpack的高性能计算机集群的并行性能测试[J].船电技术,2009,29(1):56-60.
[6]Chen Changsheng,Robert C Beardsley,Geoffrey Cowles.An Unstructured Grid,Finite-Volume Coastal Ocean Model,FVCOM User Manual.SMAST/UMASSD,02:16-17.
[7]Guo QP,Paker Y.Concurrent Communication and Granularity Assessment for a Transputer-based Multiprocessor system[J].Journal of Computer Systems Science&Engineering,1990,5(1):18-20.
[8]温小飞,朱宗柏.高性能计算机集群的性能评价[J].武汉理工大学学报(信息与管理工程版),2005,27(4):19-22.
[9]宋倩,胡松.海洋模式FVCOM2.6并行计算性能TAU分析[J].计算机工程与科学,2011,33(12):87-93.