APP下载

基于集群技术的高性能计算系统研究平台的构建

2013-10-10赵玉广孙爱国郎美娜王晓军吉林医药学院信息中心吉林吉林132013

吉林医药学院学报 2013年5期
关键词:编译器高性能集群

赵玉广,孙爱国,郎美娜,王晓军 (吉林医药学院信息中心,吉林吉林 132013)

集群系统是随着微处理器技术和计算机互连网络技术的迅速发展而出现的一种并行计算系统,它使用高速通信网络将多台原本独立、完整的微机或工作站连接在一起,构成一个统一的整体,使之可作为一种单一的计算资源来使用。集群与SMP(对称多处理)和MPP(大规模分布式处理)相比,具有更高的可扩展性、可用性和易维护性,而且价格低,性价比高:相对于SMP、MPP类型的大型主机而言,使用相同等级的集群,价格仅为大型主机的六分之一。更重要的是,由于集群系统基于IA(IntelArchitecture)构架,采用的是商用处理器和商用高速网络,并且采用消息传递的编程模型,使其开发的程序具有很高的通用性和可移植性,可应用于不同的并行计算机。基于集群技术的高性能计算平台已成为并行计算系统发展的一种新主流技术,为磁约束聚变研究的大规模计算问题提供了一个有效解决途径。

1 基本体系结构

集群是一种并行处理系统,由很多连接在一起的独立的计算机组成,像一个整体的计算资源一样协同工作。计算机节点可以是一个单处理器或多处理器的系统,如PC、工作站或SMP,它拥有内存、I/O设备和操作系统。集群系统一般是指物理上分散的两个或多个计算机节点通过局域网络连接在一起,对于用户和应用程序来说像一个单一的系统,可以提供一种高性价比、高性能或高可靠性的解决方法。典型的集群系统的结构如图1所示。

网络接口硬件负责在节点间通过网络传送和接收数据包。集群通常使用网络通信协议在其节点间进行快速通信。集群各节点可以像集成的计算资源一样共同工作,而集群中间件负责为独立但互联的计算机对外提供统一的系统映象和易用性。编程环境包括消息传递库、调试器和性能分析器,它可以为应用程序的开发提供可移植的、有效和易用的工具。

2 硬件平台构建

图2是高性能计算集群硬件和网络体系结构图。从图中可以看出,整个系统由两类设备组成:节点和交换网络。

2.1 节点

高性能计算集群中的节点按功能的不同,可以划分为两种类型:管理节点和计算节点。系统由1个管理节点和64个计算节点构成。

管理节点是集群系统各种管理措施的控制节点。主要承担两种任务:一方面为计算节点提供基本的网络服务,如DHCP、NIS、NFS等,同时负责调度计算节点上的作业;另一方面,负责监控集群中各个节点和网络的运行状况,通常的集群管理软件也运行在这个节点上。管理节点还是外部世界访问集群系统的网关,用户通常登录到这个节点上编译并运行作业。系统中采用PC服务器(CPU为Dual IntelXeon 3 GHz/2MB;内存4 GB)作为管理节点。

计算节点是整个集群系统的计算核心。它的功能就是执行计算,一般可根据不同的需要和预算来决定采用什么样的配置。随着英特尔架构处理器性能的不断提高,越来越多的高性能计算系统使用基于英特尔架构的服务器系统作为计算节点。此外,考虑到计算机系统在处理器、内存和输入/输出系统三部分之间的通信带宽的平衡性,一般来讲,采用双路处理器为高性能计算系统的节点是最佳的平衡点。系统中采用SMP服务器(CPU为Dual IntelXeon 3 GHz/2 MB)作为计算节点。由于服务器是64位的CPU和64位的Linux操作系统,因此内存的寻址能力有了很大提高。

系统中每台计算机都自带磁盘,将这些磁盘存储空间配置成两个文件存储系统,把高性能SCSI磁盘单独配置为一个文件系统,用于保存结果数据;通过建立并行文件系统,把所有计算节点的磁盘存储空间配置成一个超大容量的文件存储系统,由于采用了并行存储技术,使得该文件系统的存取速度更快,它被用于数据交换频繁的中间计算数据的存储。

2.2 交换网络

为了提高通信速度,在设计时将计算数据与管理数据进行分离,使计算数据与管理数据由不同的网络链路进行传输通信。因此,高性能计算集群系统中必须包含两个网络:管理网络和计算网络。管理网络用于对集群中各节点发送管理命令,通过管理网络,RSH、Telnet和SSH等TCP协议被用来管理集群设备。管理网主要用于传递管理信息,通信量相对较少,交换机采用标准千兆交换机连接,其交换机之间互联带宽为1 GB。计算网络用于计算节点间的高速通信,通常由特殊的高速网络设备构成。当大规模计算中涉及到中细粒度的并行处理时,由于计算节点间有较高的通信需求,计算网络的性能会成为集群构建中非常重要的问题,目前,高性能计算集群的主要瓶颈通常也是双工的网络通信、延迟和全局同步。因此,系统中采用千兆以太网用于计算网络,考虑性能价格比和端口间高速通信的要求,采用性价比较高的桌面堆叠式高速千兆交换机作为该网的汇聚连接设备,交换机通过堆叠连接端口实现互联,其互联带宽为96 GB。

3 软件平台构建

本系统所需要的软件涉及节点机操作系统、并行编程软件、集群管理软件、编译器、程序库、系统性能分析与程序调优工具软件等。图3为高性能计算集群软件的组成和结构,以及各层次软件相应的服务。

3.1 操作系统

操作系统是任何计算机系统的软件基础,相对于桌面系统而言,集群系统对操作系统的任务调度和文件管理方面的要求更高。这方面的操作系统包括Unix、Windows NT和Linux。Windows NT操作系统本身在稳定性方面存在缺陷,而商用的Unix系统价格昂贵,所以集群系统采用的操作系统主要是Linux系统。Linux是遵守GPL公共源码开放协议的类Unix系统,提供了GNU软件和标准化的MPI消息传递机制,更重要的是在普通PC机上提供了对高性能网络的支持,这样就大大推动了基于Linux的集群系统的发展。系统中节点机的操作系统使用了RedHat企业版LinuxAS 4.0。

3.2 开发环境

3.2.1 编译器

对于科学研究中的数值计算,编译器的优劣对生成的程序的执行效率有着非常明显的影响。系统中安装配置了应用最广的GNU C/C++和Fortran编译器以及针对至强处理器进行过专门优化的,基于Linux平台的Intel C++和Fortran9.0编译器。其中Intel编译器作为主要编译器,一般应用都尽可能用Intel编译器来编译,以便获得较好的运行性能。

3.2.2数学库

聚变模拟研究中最基本的计算包括矩阵运算和线性方程组的求解,这方面英特尔的数学核心库(Math KernelLibrary)有很好的支撑,它是一个包括线性代数、快速傅里叶变换和矢量超越函数等在内的软件库,并针对最新英特尔处理器进行了专门优化。

3.2.3开发工具

开发工具包括并行调试器和性能分析器。调试是程序开发的重要部分,并行程序尤其难调试,更需要调试器的支持。本系统构建中采用了Etnus公司的TotalView,它是一款著名的第三方并行调试器,提供对Linux的支持,对C、C++、Fortran程序的图形化符号调试,可以调试多线程、多进程和集群应用程序。

程序性能分析可以帮助用户找到程序中最费时的部分,从而集中精力进行改进和优化,是改进程序性能的有效手段。系统中采用 IntelTraceAnalyzer&Trace Collector集群分析软件来提供基于事件的跟踪分析和跟踪数据采集。通过同时多个事件的采样,多线程分析,直接多重运行比较,可以按进程、线程、模块、函数或指令地址来查看数据,实时监视、实时分析,帮助调试确定软件和硬件的性能瓶颈,并提供解决瓶颈问题的原因分析和揭示改进方法。采用IntelVtune性能分析器来帮程序优化人员快速识别热点问题并提出代码改进意见,从而有助于提高代码性能和缩短代码执行时间。

3.3 并行计算环境

根据不同的并行程序的开发模式,集群应用支撑层可采用不同的通信标准接口。共享内存模式:在共享内存模型中,数据的交换通过隐含地使用共享内存来完成。目前流行的共享内存模式开发标准是OpenMP[3],支持的编程语言包括 Fortran、C 和 C++。

消息传递模式:在消息传递模式中,一个并行程序由多个并行任务组成。每个并行任务拥有自己的数据并对其进行计算操作。任务之间数据的交换是通过显示的消息传递语句来完成的。

现在广泛使用的消息传递模型是MPI(Message Passing Interface)。它是一种工业标准的API规范,专门为多处理器计算机和计算机集群上获得高性能计算而设计。MPI具有很好的可移植性和可扩展性,可以被绝大部分并行环境支持。它是在标准的串行程序设计语言(Fortran、C/C++)的基础上,再加入实现进程间通信的MPI消息传递库函数。MPI既可以在拥有多台独立计算机的集群中使用,也可以在共享内存的计算机上使用。

MPI的实现包括MPICH、LAM、IBM MPL等多个版本,最常用稳定的是MPICH,目前Linux上使用的MPI基本上都是MPICH。MPICH含三层结构,最上层是MPI的API,基本上是点到点的通信以及在点到点通信基础上构造的Collective通信;中间层是ADI(AbstractDevice Interface)层,是对各种不同的底层通信库的不同接口的一个设备虚拟层;底层是具体的底层通信库,例如p4和socket等通信接口。

3.4 资源管理系统

从最终用户看来,集群系统就好像一台计算机,很多用户可以同时使用这个系统。但是,当太多用户使用集群系统时,管理计算任务的递交、控制计算任务的运行、区分用户运行的权限等都是一个十分困难的工作。如果没有一个好的管理,并行计算机利用效率就很低,系统性能也会变得很差。作为高性能并行计算平台软件系统的重要组成部分,资源管理系统软件可以根据用户的需求,统一管理和调度大型服务器的软硬件资源,保证用户作业公平合理地共享计算资源,提高系统的吞吐率和利用率。平台构建中采用了TORQUE作业管理系统(图4)。

TORQUE是基于PBS项目的开源软件,是开放源代码软件OpenPBS的改进版。该软件提供了对集群计算资源的管理。用户通过单一切入点使用qsub命令提交作业脚本(即用户对计算机资源的请求),PBS服务(pbs_server)将这些作业放入队列并由调度器(pbs_sched)检查作业队列,直至可以有足够的硬件资源来执行它们,将它们从队列送往执行器(pbs_mom),执行器执行脚本,监控执行状况并在整个过程结束后将执行情况记录下来。

图4 TORQUE结构

3.5 集群管理工具

用于聚变研究的集群环境是多样和复杂的,在集群系统中通常装有多个版本的编译器、应用程序和辅助的算法库。通常情况下,这些软件需要设置它自定义的环境变量,对于不熟悉集群系统环境的用户而言,要正确设置环境变量比较困难。使用Environment Modules能够解决这个问题,用户通过简单的加载和卸载模块到他们的环境中,从而实现在各个软件版本间的无缝切换。

为了能够更集中、高效地管理集群系统,在系统中安装了并行分布式的shell程序Pdsh和集群节点开/关检测程序Whatsup。使用Pdsh能够在集群的所有节点上并行执行命令,从而不需要在每个节点去单独执行,这对于快速关闭系统和集中地在所有远程节点上安装软件等应用来说非常有效。使用Whatsup能够快速计算和输出集群节点的开关状态,从而快速诊断出问题节点。

为了让用户能够实时看到集群运行时网络的负载情况,以及各节点的CPU、内存等的使用情况,在管理节点上安装了开源的Web服务器软件Apache,并利用Ganglia软件对集群系统进行监控。Ganglia是一个用来监视集群系统状态的工具软件,能够通过Web以图表的方式直观地监控集群内部节点的性能状况。

4 结语

目前,该系统已经具备大运算量实验数据处理、数字模拟和控制仿真的能力,并以此为基础开展了多项国际合作研究,引进了一系列托卡马克数值模拟代码,对实验数据进行分析处理,完成了以前很难完成的一些工作,显示了该系统高效的并行计算性能,以及对程序可移植性的良好支持。同时它将作为未来建立中国数字TOKAMAK的基础,并为大规模电力系统计算提供了有力的技术支持。

猜你喜欢

编译器高性能集群
基于相异编译器的安全计算机平台交叉编译环境设计
运行速度大突破华为《方舟编译器》详解
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
一款高性能BGO探测器的研发
勤快又呆萌的集群机器人
高性能砼在桥梁中的应用
SATA推出全新高性能喷枪SATAjet 5000 B
高性能可变进气岐管降低二氧化碳排放