首页 > 范文大全 > 正文

高性能计算机的性能评测

开篇:润墨网以专业的文秘视角,为您筛选了一篇高性能计算机的性能评测范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

高性能计算机性能评测技术提供了分析用户需求的系统化方法,可以帮助高性能计算机研制单位根据用户应用的需求特点,进行系统的设计和选择。

现代高性能计算机的研制需要投入巨大的人力、物力和时间,对于千万亿次级别的系统,处理器个数将超过10万个,研发费用将达到数亿元人民币,正确的系统设计决策显得尤为重要。由于高性能计算系统研制的主要动力来自用户需求,因此高性能计算机的研制决策必须以是否满足用户需求为最重要的标准,在系统设计时就需要深入分析目标应用特点,以用户需求驱动高性能计算机系统的研制。

用户需求驱动计算机的研制

以目前在TOP500上排名第一的IBM BlueGene/L系统为例。该系统在设计之初就定位于解决大规模分子动力学问题,系统在设计时采用了高并行度、低主频策略。目前的BlueGene/L系统的处理器个数达到13万多个,处理器主频仅为700Mhz。由于分子动力学应用具有良好的并行性,使得系统可以通过多个处理器的聚合计算能力达到较高的整体性能,而低主频策略对系统能耗的降低起到了很好的作用。但是,BlueGene/L显然并不适应所有的并行应用,对于通信频繁或负载不平衡的应用来说,并行度在提高到一定程度之后系统的整体性能反而可能下降,因此可能无法在BlueGene/L这样的系统上高效率地执行。

日本的地球模拟器在2002年~2004年TOP 500上排名第一。该系统在运行实际应用中达到了很好的性能。地球模拟器获得成功的一个主要原因是系统设计者与用户进行了长期合作,深入分析了用户应用。处理器是特制的向量处理器,针对应用提供了极高的单处理器性能,高性能的网络使得系统能够有效处理用户应用的通信需求,使得整个地球模拟器系统对用户应用来说是一个均衡的系统,因此能够得到满意的性能。

高性能计算机的性能评测技术提供了分析用户需求的系统化方法,可以帮助高性能计算机研制单位根据用户应用的需求特点,进行系统的设计和选择,其主要内容包括:

1. 用户需求收集技术,用于分析需求的应用领域,选取有代表性的应用程序。

2. 应用程序特征分析,如该应用的访问特性、通信特性以及并行度特性等。

3. 测试程序构造技术,即根据需求,采用有代表性的程序,并根据需求中各个程序的重要性构建Benchmark程序集。

4. 系统建模和应用程序性能预测技术,可用来比较不同的系统设计方案,分析系统性能瓶颈以及为优化应用程序和系统提供依据。

本文将简要介绍上述技术在国内外的发展现状。

用户需求的收集

用户需求的收集是高性能计算机性能评测技术的基础。用户需求的收集就是通过征集并选取当前有代表性的应用程序来评测高性能计算机系统,典型应用的征集主要集中在对高性能计算需求较大的一些领域。

核武器研制: 国际上的超级计算机很多是用来做核武器研究的,比如美国能源部的ASC(Advanced Simulation and Computing)计划支持的大部分系统、法国的CEA(Atomic Energy Commission)工程。在核武器研究方面有很多大规模并行模拟程序需要运行在超级计算机上。因此,一些公开的核武器模拟并行程序可以作为高性能计算机评测的代码。比如,公开的程序SAGE、Sweep3D等。

国防安全: 这类应用主要是国防上用于密码破译、间谍侦探等方面。这类应用程序主要是信息处理和信息分析,对浮点计算需求比较小,一般对单次计算的响应时间要求比较高。

气象预报: 天气预报是高性能应用的一个传统领域,复杂的气候三维模型对超级计算机有着巨大需求。日本的地球模拟器就是用来做气象预报的超级计算机,我国新一代的数值天气预报系统Grapes就是这类典型应用。这类应用程序对系统的通信性能要求较高。

生物信息学: 通过超级计算机强大的计算能力来解决生物领域的难题是近些年研究的热点。生物领域有很多海量数据处理应用程序,比如基因拼接、多序列比对、蛋白质三维结构预测等,它们都需要使用具有强大的计算能力的服务器来解决。

此外,石油勘探、地震预测、计算流体力学等领域都有着对超级计算机的巨大需求。通过对这些领域的典型应用程序进行征集和初步的分析,我们就可以为下一步的应用程序特征分析做好基础。通过采取广泛征集,在各个领域选择几个候选的应用程序,作为下一步程序特征分析的基础。

应用程序的分析

对选取的典型应用程序进行特征分析是进行高性能计算机性能评测技术的一个关键步骤。只有清晰地了解每个典型应用的程序特征,才可以为下一步的测试程序集构建提供科学的依据。

不同应用领域的科学程序使用的算法不同,对系统的要求也有所不同。比如,通信密集型的算法对机器的网络性能要求较高,计算密集型的算法对处理器性能要求较高。对应用程序进行分析能够让我们了解该应用领域的程序特点,了解程序对系统各部件的不同需求,为用户评测和购买高性能计算机系统提供依据,也能给系统设计者设计相关领域的计算机系统提供参考。对应用程序的分析,主要分析程序的访存特性、通信特性、I/O特性等。

表1是典型的科学应用程序中使用的主要算法描述,其中列举了纳米计算、气象应用、化学应用、聚变、燃烧应用等八个典型科学应用所使用的算法。

对具有多物理、多尺度的科学应用最好在一个通用的、各方面性能都较好的系统上运行; 对于稠密线性代数计算需要高性能的处理器,尤其是具有较高浮点计算能力的机器; 对于稀疏线性代数计算,需要内存的性能较高; 对于多维FFT算法,由于通信较多,需要较高的网络性能; 对于AMR(Adaptive mesh refinement)的应用,需要系统对不规则数据和控制流的性能较高; 对于数据或者I/O密集型的应用,应该需要较好的存储和数据管理能力的机器。

对应用程序的分析,主要包括对程序中访存模式、通信模式、I/O特征以及程序的可扩展性分析。程序的访存模式和通信模式是影响高性能应用程序的两个主要特征,本文下面将重点介绍。

访存特性分析 由于处理器速度和内存速度差异越来越大,应用程序的访存特征严重地制约着并行程序性能提高。通过对应用程序中访存特征的分析,可以帮助优化程序性能。应用程序访存模式主要包括顺序访问和随机访问,可以通过数据局部性来描述程序的访存特征。程序的数据局部性包括时间局部性和空间局部性。

时间局部性: 反映程序中对相同内存地址数据重新引用的趋势;

空间局部性: 反映程序中被引用数据周围地址单元数据被使用的趋势。

例如,程序顺序读取内存地址单元,那么该程序的空间局部性就比较好; 如果程序中频繁地引用相同的数据,那么它的时间局部性就比较好。程序访存的局部性特征是程序的固有的特征,它并不随运行的系统结构改变而改变。因此,可以使用时间局部性和空间局部性作为衡量程序访存特征的两个关键指标。实际上,计算机系统中的Cache也是应用了程序的访存具有时间局部性和空间局部性来设计的。

通过对程序的时间局部性和空间局部性进行量化,我们就可以把不同的应用程序画在一个以时间局部性和空间局部性为坐标的二维坐标图中。图1是一些常见基准测试程序中程序访存局部性示意图,其中横轴表示程序的空间局部性,纵轴表示程序的时间局部性。

其中,HPL、FFT、Random Access和Streams是HPCC(High Performance Computing Challenge Benchmark)基准测试程序集中的测试程序; CG是NPB(NAS Parallel Benchmark)测试程序中的程序; AVUS是一个计算流体力学代码。通过对这张图观察,可以发现HPL和FFT程序具有几乎相同的空间局部性,AVUS和NPB中CG程序具有相同的时间局部性; Streams测试程序顺序的读取内存地址单位,因此程序的空间局部性非常好,但基本没有时间局部性。

通信特性分析 并行程序通过进程间通信、同步完成大规模并行计算,因此程序的通信模式是影响并行程序性能和可扩展性的主要因素。程序的通信模式包括点对点通信和组通信两类。正确理解并行应用程序中的通信行为,对于设计真实的测试程序,优化并行应用程序的性能以及设计更好的网络拓扑结构都具有较好的参考价值。

点对点的通信操作是基于消息传递的并行应用中比较常见的操作,它是在进程间进行点对点的通信。在MPI的应用中,有阻塞式和非阻塞式的两种通信方式。传统的对于并行应用程序的通信可以通过以下几个特征来进行分类: 时间、空间和容量。通信模式的时间特性用来说明消息产生的速率; 空间特性用来说明消息目的地址的分布情况; 消息的容量用来衡量消息大小的分布特征。组通信是由通信库提供的可以实现一对多或者多对多等方式的通信模式,一般在具体实现过程中也是通过点对点通信完成。

对应用的通信模式分析,一般的方法是通过对程序的通信函数部分进行插装(Instrumentation),得到程序的通信事件记录(Communication Event Trace),通过对通信事件分析得到程序的通信模式特征。图2是对国家气象局的新一代数值气象预报系统Grapes程序的点对点通信分析的部分结果,分别描述了消息大小分布和消息目的进程分布的情况。

我们可以发现,Grapes程序中点对点通信的消息大小集中在100KB到1MB之间,0号进程与所有的进程进行通信。Grapes的通信操作较频繁,程序对系统的通信性能要求较高。

通过对程序的通信模式研究,可以把应用程序按照访存特征分别归为不同的类别。此外,程序的特征分析还包括程序的计算特征,如程序以浮点计算为主或以整数计算为主,以及程序的I/O特征、程序中I/O访问的顺序性和I/O访问文件的大小等。

程序集的构建

测试程序构造技术,即根据需求采取有代表性的程序,并根据需求中各个程序的重要性构建benchmark程序集。它需要使用应用程序分析的结果,通过把程序特征相似的程序聚类,并根据应用程序的权重选取代表性的程序,构建最后的基准测试程序。在构建程序集的时候主要从以下几个方面考虑:

1. 程序的重要性。选择典型的应用程序是构建程序集的根本,由于购买的高性能计算机主要用于这些典型的应用领域,所以选择有代表性的应用程序可以和实际的需求更加一致。因此,这类应用在选取的时候具有较高优先级。

2.程序性能特征。通过对程序性能特征的分析,对程序的访存模式、通信模式、I/O特征都有一定的了解。可以通过聚类的方式,使选择的程序集能够覆盖整个性能空间,同时,具有相同或者相似性能的程序,我们可以选取其中的一个作为代表。

3.程序的移植性。由于构建的程序集要在不同的体系结构上运行,所以程序的移植性非常重要。一般针对某个特定领域开发的应用只可在某个体系结构下运行,所以为使基准测试具有通用性,需要把程序移植到各种平台。

此外,基准测试程序还需要考虑数据集以及运行规模等各方面的问题。它是用户理解系统性能最直接的方式,因此在性能评测中是一个极其重要的研究内容。

性能建模和性能预测

通过需求的征集、并行程序的性能分析和最后程序集的构建,我们就构造好了一套用于测试高性能计算机的基准测试程序集。这些测试程序集在用户购买超级计算机以及厂商进行系统比较等方面都具有重要的作用。但这种测试技术不能预测当系统某个设备有轻微改变时系统整体性能的变化,因此无法在系统尚未搭建好的时候,为系统设计人员提供参考建议,也不能对未来的科学应用程序进行预测分析,为面向未来应用需求的系统设计提供帮助。

为了解决这些问题,需要采用系统建模和性能预测技术。性能建模就是对应用程序和高性能计算机系统建立合适的模型; 性能预测就是使用程序和系统的模型,预测应用程序在系统中性能。性能建模和性能预测在高性能计算机系统的性能评测过程中扮演着重要的角色。性能建模和预测的好处在于: 不需要实际运行应用代码就可以分析系统性能,这可以减少运行应用的时间开销,而且在高性能系统还处于设计阶段就可以预测系统性能,及时发现系统设计的瓶颈,分析未来应用模式对系统的需求。

对并行程序的性能预测主要有基于模拟的方法和基于分析的方法。基于模拟的方法主要通过模拟器来模拟系统的Cache、内存、网络、I/O等行为,从而实现系统性能的预测。基于分析的方法主要是对系统和程序建立数学的模型,通过测试等手段获得模型的参数,从而实现性能的预测。

基于模拟的方法又包括执行驱动的模拟器和事件记录驱动的模拟器。执行驱动的模拟器就是仅模拟需要分析的部分,其余的部分通过实际运行。比如,我们需要分析系统的网络性能,只需要模拟通信部分,其他的计算和访存部分可以通过实际运行代码来实现。典型的执行驱动的模拟器现在有UIUC大学的Bigsim模拟器和UCLA大学开发的MPI-SIM模拟器。这种模拟器一般精度很高,缺点是对于访存密集型的应用程序,很难实现在小规模的机器上模拟。

事件记录驱动的模拟器通过事件驱动模拟器执行。比如事件记录驱动的网络模拟器,它的工作原理是对应用程序的通信模块进行插装,得到程序的通信事件记录,然后把这些通信事件记录输入模拟器。模拟器根据输入的事件以及待模拟机器的通信参数指标就可以预测出程序的通信时间,这类模拟器典型的有欧洲UPC大学的DIMEMAS模拟器。

美国的圣地亚哥超级计算中心(San Diego Super-computer Center,SDSC)提出一套基于模拟的性能预测框架。它们认为,影响并行程序性能的主要因素包括单处理器性能和互连网络性能,因此,需要对单处理器性能和互连网络分别建立模型。单处理器上的性能主要由程序的访存和浮点计算需求决定。互连网络的性能主要由程序的通信模式决定。程序的特征和机器的性能分别进行描述,通过两者之间的映射分别实现程序在单处理器和互连网络上的性能预测,最后实现整个并行程序在超级计算机上的性能预测。

基于分析的方法通过对需要预测的并行程序进行分析,对并行程序的访存、通信建立一个数学模型,通过数学模型进行求解,得到程序的性能预测。美国的劳斯阿拉莫斯国家实验室(Los Alamos National Laboratory LANL)使用分析的方法分析了一些并行应用程序。

比较两种方法可以看出,模拟的方法由于可以精确地模拟系统的行为,因此预测的精度比较高,但缺点是模拟的运行时间一般都比较长。分析的方法优点是可以非常灵活地分析各个参数之间的相互影响,预测时间比较短,成本比较低,缺点是预测精度比较低,同时,对于复杂的应用,分析方法很难构建数学的模型。因此,需要把模拟的方法和分析方法结合起来,才可以实现快速、精确的性能预测。总之,系统建模和应用程序性能预测技术,可用来比较不同的系统设计方案,分析系统性能瓶颈以及为优化应用程序和系统提供依据。

作者简介

郑纬民

清华大学计算机系教授、博士生导师,863高性能计算机评测中心主任。同时还担任中国计算机学会副理事长、中国计算机学会学术工会主任、北京市科技进步奖第八届评审委员会委员等。

链接:863高性能计算机评测中心

863高性能计算机评测中心是863 高性能计算机及其核心软件重大专项于2004年11月特别设立的。它以清华大学为依托,联合了多家国内高性能计算的专家和用户,旨在建立一个独立的第三方评测中心,开展高性能计算机评测技术的研究,推动国内高性能计算机系统的研制和应用工作。中心成立2年来,在用户需求收集、程序特征分析以及基准测试程序构建等方面都取得了一定的进展,在应用与系统建模技术和性能预测技术方面,正致力于研究对任意程序的自动建模分析技术。中心正努力联合各方面的力量,进一步深入研究计算性能评测技术,为系统研制方和用户提供更好的支持。