当前位置:文档之家› 如何评价一台计算机的性能

如何评价一台计算机的性能

如何评价一台计算机的性能计算机从发明以来,人们一直追求着如何将计算机性能大幅提升,使其具有更快的计算机速度、更高的计算能力。

虽然计算机的运算速度是一个很重要的指标,但是却不是评价计算机性能的唯一标准。

不同时代、不同领域对计算机的性能需求也是不同的。

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

现代高性能计算机的研制需要投入巨大的人力、物力和时间,对于千万亿次级别的系统,处理器个数将超过10万个,研发费用将达到数亿元人民币,正确的系统设计决策显得尤为重要。

由于高性能计算系统研制的主要动力来自用户需求,因此高性能计算机的研制决策必须以是否满足用户需求为最重要的标准,在系统设计时就需要深入分析目标应用特点,以用户需求驱动高性能计算机系统的研制。

用户需求驱动计算机的研制以目前在TOP500上排名第一的IBMBlueGene/L 系统为例。

该系统在设计之初就定位于解决大规模分子动力学问题,系统在设计时采用了高并行度、低主频策略。

目前的BlueGene/L系统的处理器个数达到13万多个,处理器主频仅为700Mhz。

由于分子动力学应用具有良好的并行性,使得系统可以通过多个处理器的聚合计算能力达到较高的整体性能,而低主频策略对系统能耗的降低起到了很好的作用。

但是,BlueGene/L显然并不适应所有的并行应用,对于通信频繁或负载不平衡的应用来说,并行度在提高到一定程度之后系统的整体性能反而可能下降,因此可能无法在BlueGene/L这样的系统上高效率地执行。

日本的地球模拟器在2002年~2004年TOP500上排名第一。

该系统在运行实际应用中达到了很好的性能。

地球模拟器获得成功的一个主要原因是系统设计者与用户进行了长期合作,深入分析了用户应用。

处理器是特制的向量处理器,针对应用提供了极高的单处理器性能,高性能的网络使得系统能够有效处理用户应用的通信需求,使得整个地球模拟器系统对用户应用来说是一个均衡的系统,因此能够得到满足的性能。

高性能计算机的性能评测技术提供了分析用户需求的系统化方法,可以帮助高性能计算机研制单位根据用户应用的需求特点,进行系统的设计和选择,其主要内容包括:1.用户需求收集技术,用于分析需求的应用领域,选取有代表性的应用程序。

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

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

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

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

用户需求的收集用户需求的收集是高性能计算机性能评测技术的基础。

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

核武器研制:国际上的超级计算机很多是用来做核武器研究的,比如美国能源部的ASC计划支持的大部分系统、法国的CEA工程。

在核武器研究方面有很多大规模并行模拟程序需要运行在超级计算机上。

因此,一些公开的核武器模拟并行程序可以作为高性能计算机评测的代码。

比如,公开的程序SAGE、Sweep3D等。

国防安全:这类应用主要是国防上用于密码破译、间谍侦察等方面。

这类应用程序主要是信息处理和信息分析,对浮点计算需求比较小,一般对单次计算的响应时间要求比较高。

气象预:天气预是高性能应用的一个传统领域,复杂的气候三维模型对超级计算机有着巨大需求。

日本的地球模拟器就是用来做气象预的超级计算机,我国新一代的数值天气预系统Grapes就是这类典型应用。

这类应用程序对系统的通信性能要求较高。

生物信息学:通过超级计算机强大的计算能力来解决生物领域的难题是近些年研究的热点。

生物领域有很多海量数据处理应用程序,比如基因拼接、多序列比对、蛋白质三维结构猜测等,它们都需要使用具有强大的计算能力的服务器来解决。

此外,石油勘探、地震猜测、计算流体力学等领域都有着对超级计算机的巨大需求。

通过对这些领域的典型应用程序进行征集和初步的分析,我们就可以为下一步的应用程序特征分析做好基础。

通过采取广泛征集,在各个领域选择几个候选的应用程序,作为下一步程序特征分析的基础。

应用程序的分析对选取的典型应用程序进行特征分析是进行高性能计算机性能评测技术的一个关键步骤。

只有清楚地了解每个典型应用的程序特征,才可以为下一步的测试程序集构建提供科学的依据。

不同应用领域的科学程序使用的算法不同,对系统的要求也有所不同。

比如,通信密集型的算法对机器的网络性能要求较高,计算密集型的算法对处理器性能要求较高。

对应用程序进行分析能够让我们了解该应用领域的程序特点,了解程序对系统各部件的不同需求,为用户评测和购买高性能计算机系统提供依据,也能给系统设计者设计相关领域的计算机系统提供参考。

对应用程序的分析,主要分析程序的访存特性、通信特性、I/O特性等。

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

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

对应用程序的分析,主要包括对程序中访存模式、通信模式、I/O特征以及程序的可扩展性分析。

程序的访存模式和通信模式是影响高性能应用程序的两个主要特征,本文下面将重点介绍。

访存特性分析由于处理器速度和内存速度差异越来越大,应用程序的访存特征严重地制约着并行程序性能提高。

通过对应用程序中访存特征的分析,可以帮助优化程序性能。

应用程序访存模式主要包括顺序访问和随机访问,可以通过数据局部性来描述程序的访存特征。

程序的数据局部性包括时间局部性和空间局部性。

时间局部性:反映程序中对相同内存地址数据重新引用的趋势;空间局部性:反映程序中被引用数据四周地址单元数据被使用的趋势。

例如,程序顺序读取内存地址单元,那么该程序的空间局部性就比较好;假如程序中频繁地引用相同的数据,那么它的时间局部性就比较好。

程序访存的局部性特征是程序的固有的特征,它并不随运行的系统结构改变而改变。

因此,可以使用时间局部性和空间局部性作为衡量程序访存特征的两个关键指标。

实际上,计算机系统中的Cache也是应用了程序的访存具有时间局部性和空间局部性来设计的。

通过对程序的时间局部性和空间局部性进行量化,我们就可以把不同的应用程序画在一个以时间局部性和空间局部性为坐标的二维坐标图中。

图1是一些常见基准测试程序中程序访存局部性示意图,其中横轴表示程序的空间局部性,纵轴表示程序的时间局部性。

其中,HPL、FFT、RandomAccess和Streams是HPCC基准测试程序集中的测试程序;CG是NPB测试程序中的程序;AVUS是一个计算流体力学代码。

通过对这张图观察,可以发现HPL和FFT程序具有几乎相同的空间局部性,AVUS和NPB中CG程序具有相同的时间局部性;Streams测试程序顺序的读取内存地址单位,因此程序的空间局部性非常好,但基本没有时间局部性。

通信特性分析并行程序通过进程间通信、同步完成大规模并行计算,因此程序的通信模式是影响并行程序性能和可扩展性的主要因素。

程序的通信模式包括点对点通信和组通信两类。

正确理解并行应用程序中的通信行为,对于设计真实的测试程序,优化并行应用程序的性能以及设计更好的网络拓扑结构都具有较好的参考价值。

点对点的通信操作是基于消息传递的并行应用中比较常见的操作,它是在进程间进行点对点的通信。

在MPI的应用中,有阻塞式和非阻塞式的两种通信方式。

传统的对于并行应用程序的通信可以通过以下几个特征来进行分类:时间、空间和容量。

通信模式的时间特性用来说明消息产生的速率;空间特性用来说明消息目的地址的分布情况;消息的容量用来衡量消息大小的分布特征。

组通信是由通信库提供的可以实现一对多或者多对多等方式的通信模式,一般在具体实现过程中也是通过点对点通信完成。

对应用的通信模式分析,一般的方法是通过对程序的通信函数部分进行插装,得到程序的通信事件记录,通过对通信事件分析得到程序的通信模式特征。

图2是对国家气象局的新一代数值气象预系统Grapes程序的点对点通信分析的部分结果,分别描述了消息大小分布和消息目的进程分布的情况。

我们可以发现,Grapes程序中点对点通信的消息大小集中在100KB到1MB之间,0号进程与所有的进程进行通信。

Grapes的通信操作较频繁,程序对系统的通信性能要求较高。

通过对程序的通信模式研究,可以把应用程序按照访存特征分别归为不同的类别。

此外,程序的特征分析还包括程序的计算特征,如程序以浮点计算为主或以整数计算为主,以及程序的I/O特征、程序中I/O访问的顺序性和I/O访问文件的大小等。

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

它需要使用应用程序分析的结果,通过把程序特征相似的程序聚类,并根据应用程序的权重选取代表性的程序,构建最后的基准测试程序。

在构建程序集的时候主要从以下几个方面考虑:1.程序的重要性。

选择典型的应用程序是构建程序集的根本,由于购买的高性能计算机主要用于这些典型的应用领域,所以选择有代表性的应用程序可以和实际的需求更加一致。

因此,这类应用在选取的时候具有较高优先级。

2.程序性能特征。

通过对程序性能特征的分析,对程序的访存模式、通信模式、I/O特征都有一定的了解。

可以通过聚类的方式,使选择的程序集能够覆盖整个性能空间,同时,具有相同或者相似性能的程序,我们可以选取其中的一个作为代表。

3.程序的移植性。

由于构建的程序集要在不同的体系结构上运行,所以程序的移植性非常重要。

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

此外,基准测试程序还需要考虑数据集以及运行规模等各方面的问题。

它是用户理解系统性能最直接的方式,因此在性能评测中是一个极其重要的研究内容。

性能建模和性能猜测通过需求的征集、并行程序的性能分析和最后程序集的构建,我们就构造好了一套用于测试高性能计算机的基准测试程序集。

这些测试程序集在用户购买超级计算机以及厂商进行系统比较等方面都具有重要的作用。

相关主题