首页> 中国专利> 基于高性能平台的并行程序性能数据采集方法及装置

基于高性能平台的并行程序性能数据采集方法及装置

摘要

本发明提出一种基于高性能平台的并行程序性能数据采集方法及装置。其中,方法包括:S101:设置控制参数;S102:运行待采集的程序;S103:获取当前运行的程序的函数调用上下文;S104:通信插装模块对程序进行插装,采集程序的通信性能数据,并对应到触发插装的程序函数调用上下文;S105:中断程序的运行;S106:通过计算采样模块对程序进行采样,采集程序的计算性能数据,并对应到采样捕获的程序函数调用上下文;S107:恢复程序的运行;S108:步骤S104到S107直到采集全部通信性能数据和计算性能数据;S109:对通信性能数据和计算性能数据进行整理并输出。根据本发明实施例的方法,通过合理的采样和插装混合的方式,避免采集开销与通信性能数据和计算性能数据量过大。

著录项

  • 公开/公告号CN103077080A

    专利类型发明专利

  • 公开/公告日2013-05-01

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201310005536.8

  • 发明设计人 翟琰;翟季冬;陈力维;陈文光;

    申请日2013-01-07

  • 分类号G06F9/48(20060101);

  • 代理机构北京清亦华知识产权代理事务所(普通合伙);

  • 代理人张大威

  • 地址 100084 北京市海淀区100084-82信箱

  • 入库时间 2024-02-19 18:33:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-08-12

    授权

    授权

  • 2013-06-05

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20130107

    实质审查的生效

  • 2013-05-01

    公开

    公开

说明书

技术领域

本发明涉及高性能计算技术及分析领域,特别涉及一种基于高性能平台 的并行程序性能数据采集方法及装置。

背景技术

高性能计算一直是进行现代科学研究的重要支柱,例如,人类基因、地 球气候准确预报与模拟、核爆炸模拟等等,都与并行计算技术紧紧联系在一 起。但这些程序往往存在各种各样的性能问题,这类问题对于高性能计算的 影响很大,表现在如下几个方面:

1、性能瓶颈会影响高性能程序的扩展性,从而导致可计算的问题规模 被制约。对于高性能计算领域的主要应用,例如,核物理、天气预报,在问 题规模提升时对内存容量和带宽的需求也会迅速提升,而现代的高性能计算 机同时提供高内存容量和带宽的手段就是增加并行计算的核心数量。因此, 当扩展性不好时,应用程序将无法对大规模的问题进行求解,从而降低其科 学意义。

2、性能问题会导致程序运行的时间增长。目前高性能计算用户主要通 过在超级计算中心按每计算核心每小时的标准来购买机时,这种运行时间的 增长会导致用户在运行大规模程序时的开支和使用的计算核心数量成正比, 造成重大的经济损失。

性能分析工具主要包括两部分,性能数据的采集与性能数据的分析。对 于高性能程序而言,性能数据的采集存在如下关键问题:

1、性能数据的采集粒度与引入的额外性能开销的矛盾。一般来说,性 能数据的采集粒度越细,之后所能进行的分析就越准确。细粒度地数据采集 会给程序的执行带来额外的开销,可能会干扰程序本身的性能特征。高性能 计算程序往往需要使用数千甚至上万颗CPU核心进行运算。但在这种规模 的计算中,干扰会得到放大和传播,从而导致得出错误的热点分析报告。将 性能工具引入的性能开销降低到可忽视的程度,对于高性能计算的性能分析 工具至关重要。

2、性能数据的采集粒度与性能数据大小的矛盾。同样,当性能数据采 集粒度过细时,数据量可能会变得较大,不加以控制甚至可以达到数TB的 级别,除了加重了系统的输入输出(Input/Output,即I/O)负担,降低了系 统的稳定性外,大量的数据还会影响实际分析的效果。如何限制性能数据的 大小,也是不可忽视的问题。

3、国产计算平台特有的问题,如性能采集相关的硬件设备支持相对较 弱,性能事件计数器少于常用分析方法所需要的数量等问题。

目前主要的采集方法是通过插装(instrumentation)或者采样(sampling) 的手段进行。插装方法是通过编译或者链接手段在生成可执行文件时插入性 能采集的代码,其优点是确定性,易对应到源码,不会丢失性能数据,但是 开销和性能数据的量往往巨大。采样方法是通过定时器和硬件性能采集设 备,定时采集性能数据,如果采集频率设置合理,则性能开销相对较小,但 对应到源程序较为困难,且实现时存在多种问题。

发明内容

本发明的目的旨在至少解决上述的技术缺陷之一。

为达到上述目的,本发明一方面的实施例提出一种基于高性能平台的并 行程序性能数据采集方法,包括以下步骤:S101:设置控制参数;S102:运 行待采集的程序;S103:获取当前运行的所述程序的函数调用上下文;S104: 如果获取所述程序的函数调用上下文失败,则构建所述程序的函数调用上下 文;S105:通信插装模块对所述程序进行插装,采集所述程序的通信性能数 据,并对应到触发插装的程序函数调用上下文;S106:中断所述程序的运行; S107:通过计算采样模块对所述程序进行采样,采集所述程序的计算性能数 据,并对应到采样捕获的程序函数调用上下文;S108:恢复所述程序的运行; S109:重复S105至S108步骤直到全部所述通信性能数据和所述计算性能 数据采集完毕;S110:对所述通信性能数据和所述计算性能数据进行整理并 输出。

根据本发明实施例的方法,通过合理的采样和插装混合的方式,避免采 集开销与通信性能数据和计算性能数据量过大,同时采用随机轮换的方法解 决了平台硬件不足的问题。

在本发明的一个实施例中,所述控制参数包括:采样频率、缓冲区大小、 采集事件列表。

在本发明的一个实施例中,所述通信性能数据包括:通信时间、通信频 度、通信消息量。

在本发明的一个实施例中,所述通信插装模块还用于构建通信拓扑。

在本发明的一个实施例中,所述计算性能数据包括:计算时间、硬件性 能读数。

在本发明的一个实施例中,所述通信插装模块对所述程序进行插装,包 括:所述通信插装模块在所述程序的预定插装位置上插装入采集代码;当所 述程序运行到所述预定插装位置时,采集所述程序的计算性能数据。

为达到上述目的,本发明另一方面的实施例提出一种基于高性能平台的 并行程序性能数据采集装置,包括控制模块、获取模块、程序构建模块、中断 模块、通信插装模块和计算采样模块,其中,所述控制模块用于设置控制参数, 以及管理所述获取模块、所述程序构建模块、所述中断模块、所述通信插装模 块和所述计算采样模块运行,并在全部所述通信性能数据和所述计算性能数据 采集完毕后对所述通信性能数据和所述计算性能数据进行整理并输出;所述获 取模块,用于获取所述待采集的程序及所述程序的函数调用上下文;所述程序 构建模块,用于在所述获取模块获取所述程序的函数调用上下文失败时构建所 述程序的函数调用上下文;所述中断模块,用于中断所述程序运行,并在需要 的时候恢复所述程序的运行;所述通信插装模块,用于插装到所述程序中,采 集所述程序的通信性能数据,并对应到触发插装的程序函数调用上下文;所述 计算采样模块,用于对所述程序进行采样,采集所述程序的计算性能数据,并 对应到采样捕获的程序函数调用上下文。

根据本发明实施例的方法,通过合理的采样和插装混合的方式,避免采 集开销与通信性能数据和计算性能数据量过大,同时采用随机轮换的方法解 决了平台硬件不足的问题。

在本发明的一个实施例中,所述控制参数包括:采样频率、缓冲区大小、 采集事件列表。

在本发明的一个实施例中,所述通信性能数据包括:通信时间、通信频 度、通信消息量。

在本发明的一个实施例中,所述通信插装模块还用于构建通信拓扑。

在本发明的一个实施例中,所述计算性能数据包括:计算时间、硬件性 能读数。

在本发明的一个实施例中,所述通信插装模块对所述程序进行插装,包 括:所述通信插装模块在所述程序的预定插装位置上插装入采集代码;当所述 程序运行到所述预定插装位置时,采集所述程序的计算性能数据。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的 描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述 中将变得明显和容易理解,其中:

图1为根据本发明一个实施例的基于高性能平台的并行程序性能数据采 集方法的流程图;

图2为根据本发明一个实施例的插装插件的工作示意图;

图3为根据本发明一个实施例的CCT的逻辑接口样例示意图;

图4为根据本发明一个实施例的计算采集模块的采集示意图;以及

图5为根据本发明一个实施例的基于高性能平台的并行程序性能数据采 集装置的框架图。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始 至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元 件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不 能解释为对本发明的限制。

图1为本发明实施例的基于高性能平台的并行程序性能数据采集方法的 流程图。如图1所示,根据本发明实施例的基于高性能平台的并行程序性能 数据采集方法,包括以下步骤:

步骤S101,设置控制参数。

具体地,当程序启动时,通过预定义的初始化入口读取配置文件,设置本 次执行需要采集的性能数据的控制参数,包括采样频率、缓冲区大小和采集事 件列表等。

步骤S102,运行待采集的程序。

步骤S103,获取当前运行的程序的函数调用上下文。

在本发明的一个实施例中,获取当前运行的程序的函数调用上下文,如 果获取程序的函数调用上下文失败,则构建程序的函数调用上下文。读取程 序状态并依次执行插装库中加载的采集插件的预处理逻辑。

步骤S104,通信插装模块对程序进行插装,采集程序的通信性能数据, 并对应到触发插装的程序函数调用上下文。

在本发明的一个实施例中,通信插装模块采集每次通信所花费的通信时间、 并根据通信时间点来记录通信的频度,并将其存储至当前上下文环境。此外, 通信插装模块通过通信原语的参数,构建局部的通信拓扑结构,在终止时刻合 并全局通信的拓扑结构。

具体地,每个插装插件包括一个初始化接口,一个预处理接口,一个后 处理接口,以及一个终止接口。在插件被控制模块加载和卸载时,其初始化 接口或终止接口分别会被调用。在每一个插装点的前后,预处理和后处理的 接口将分别被执行。

步骤S105,中断程序的运行。

在本发明的一个实施例中,获取当前运行的程序的函数调用上下文,如 果获取程序的函数调用上下文失败,则构建程序的函数调用上下文并进行初 始化处理,并读取硬件计数与时钟并设置下次采样读取内容。

步骤S106,通过计算采样模块对程序进行采样,采集程序的计算性能数 据,并对应到采样捕获的程序函数调用上下文。

具体地,通信插装模块首先在程序的预定插装位置上插装入采集代码, 该采样代码包括一个初始化接口,一个触发接口,以及一个终止接口,采集代 码加载和卸载时,其初始化接口或终止接口分别会被调用。当程序运行到预定 插装位置时,触发接口被调用采集程序的计算性能数据。其中,计算性能数 据包括:计算时间、硬件性能读数。

在本发明的一个实施例中,通信原语信息采集插件采集记录每次通信的参 数信息,包括通信类型、消息大小和各种规约操作数等,并将其存储至当前上 下文环境。通信域采集插件通过通信域来达到隔离不同通信的目的。我们通过 记录通信域操作的原语来采集通信域相关信息并记录到当前上下文环境。

步骤S107,恢复程序的运行。

通过重复上述步骤S104到S107直到采集全部通信性能数据和计算性能 数据。

步骤S108,对通信性能数据和计算性能数据进行整理并输出。

图3为根据本发明一个实施例的CCT的逻辑接口样例示意图。如图3, 调用上下文树(Calling Context Tree,即CCT)来快速地比较两个CCT的对 应节点以分析扩展性问题。由于高性能应用程序主要为fortran和C编写, 因此树状的结构与源代码的可以自然地关联在一起。图4中的每一个树节点 都表示一个调用上下文,可能代表一个子例程调用,也可能代表具体的代码 行。每一个节点都维护和记录了该上下文发生的性能事件,包括总的花费时 间,通信时间,各个通信函数的调用等。由于命令式语言(Imperative Language)编写程序的执行模式通常是嵌套执行的,因此在程序执行的任意 一点都可以通过保存的调用者信息,从而恢复到入口点的过程调用链 (backtrace)。Backtrace由一组程序计数器(Program Counter)的值所构成, 标识了函数的调用层次和位置。

根据本发明实施例的方法,通过合理的采样和插装混合的方式,避免采 集开销与通信性能数据和计算性能数据量过大,同时采用随机轮换的方法解 决了平台硬件不足的问题,并且通过合理设置采样频率从而避免影像程序的 性能,减少不必要的数据采集。另外,通过插装的代码的确定的位置触发的 确定性约束两次插装时间之间的采样事件,从而增加采样的准确性,还通过 采用插件的方式实现各个采集模块,因此降低了采集模块之间的耦合度,方 便扩展。

图5为根据本发明一个实施例的基于高性能平台的并行程序性能数据采 集装置的框架图。如图5所示,根据本发明实施例的基于高性能平台的并行 程序性能数据采集装置,包括控制模块100、获取模块200、程序构建模块300、 中断模块400、通信插装模块500和计算采样模块600。

具体地,控制模块100用于设置控制参数,以及管理获取模块200、程序 构建模块300、中断模块400、通信插装模块500和计算采样模块600运行,并 在全部通信性能数据和计算性能数据采集完毕后对通信性能数据和计算性能数 据进行整理并输出。

在本发明的一个实施例中,当程序启动时通过预定义的初始化入口读取配 置文件,设置本次执行需要采集的性能数据的控制参数,包括采样频率、缓冲 区大小和采集事件列表等。通过这些参数,控制模块100加载相应的采集插件, 并将执行转到用户程序的执行流程。在程序结束时,控制模块会和其他节点进 行同步,收集采集的数据经格式化处理后输出到硬盘存储。

获取模块200用于获取待采集的程序及程序的函数调用上下文。

程序构建模块300用于在获取模块获取程序的函数调用上下文失败时构建 程序的函数调用上下文。

中断模块400用于中断程序运行,并在需要的时候恢复程序的运行。

通信插装模块500用于插装到程序中,采集程序的通信性能数据,并对应 到触发插装的程序函数调用上下文。

在本发明的一个实施例中,通信插装模块采集每次通信所花费的通信时间、 并根据通信时间点来记录通信的频度,并将其存储至当前上下文环境。此外, 通信插装模块通过通信原语的参数,构建局部的通信拓扑结构,在终止时刻合 并全局通信的拓扑结构。

具体地,每个插装插件包括一个初始化接口,一个预处理接口,一个后 处理接口,以及一个终止接口。在插件被控制模块加载和卸载时,其初始化 接口或终止接口分别会被调用。在每一个插装点的前后,预处理和后处理的 接口将分别被执行。

计算采样模块600用于对程序进行采样,采集程序的计算性能数据,并对 应到采样捕获的程序函数调用上下文。

具体地,通信插装模块首先在程序的预定插装位置上插装入采集代码, 该采样代码包括一个初始化接口,一个触发接口,以及一个终止接口,采集代 码加载和卸载时,其初始化接口或终止接口分别会被调用。当程序运行到预定 插装位置时,触发接口被调用采集程序的计算性能数据。其中,计算性能数 据包括:计算时间、硬件性能读数。

在本发明的一个实施例中,通信原语信息采集插件采集记录每次通信的参 数信息,包括通信类型、消息大小和各种规约操作数等,并将其存储至当前上 下文环境。通信域采集插件通过通信域来达到隔离不同通信的目的。我们通过 记录通信域操作的原语来采集通信域相关信息并记录到当前上下文环境。

根据本发明实施例的装置,通过合理的采样和插装混合的方式,避免采 集开销与通信性能数据和计算性能数据量过大,同时采用随机轮换的方法解 决了平台硬件不足的问题,并且通过合理设置采样频率从而避免影像程序的 性能,减少不必要的数据采集。另外,通过插装的代码的确定的位置触发的 确定性约束两次插装时间之间的采样事件,从而增加采样的准确性,还通过 采用插件的方式实现各个采集模块,因此降低了采集模块之间的耦合度,方 便扩展。

应当理解,本发明的装置实施例中的各个模块的具体操作过程可与方法 实施例中的描述相同,此处不再详细描述。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施 例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱 离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行 变化、修改、替换和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号