公开/公告号CN103716210A
专利类型发明专利
公开/公告日2014-04-09
原文格式PDF
申请/专利权人 浪潮(北京)电子信息产业有限公司;
申请/专利号CN201410007120.4
申请日2014-01-07
分类号H04L12/26;
代理机构北京安信方达知识产权代理有限公司;
代理人王丹
地址 100085 北京市海淀区上地信息路2号2-1号C栋1层
入库时间 2024-02-19 23:06:30
法律状态公告日
法律状态信息
法律状态
2017-05-24
授权
授权
2014-05-07
实质审查的生效 IPC(主分类):H04L12/26 申请日:20140107
实质审查的生效
2014-04-09
公开
公开
技术领域
本发明涉及超级计算机及其运行的高性能计算应用软件技术,尤其涉及 监控大型计算应用软件运行效率的系统、装置及方法。
背景技术
随着人类社会的不断进步,科学技术的发展,人们不但对自然界的认识 越来越广泛,而且对未知世界探索的需求也越来越迫切。这就使得人类掌握 信息数据的量急剧性的增长;而与此同时,这些海量的信息数据都需要及时 进行分析和处理。例如,一个大型天文射电望远镜阵列一秒钟就能产生 100GB以上的宇宙微波数据,这些数据都需要及时进行分析。再如,在粒子 物理研究领域,一台大型强子对撞机一次对撞的数据也是以TB为单位来计 量的。此外,像人类基因组工程、石油勘探、天气预报等领域也对计算能力 提出了越来越高的要求。在这种技术发展的大背景下数值计算已然成为除实 验、理论分析之外的第三种极其重要的科学探索手段。正是基于这一现实, 促使当今世界各科技强国都在不遗余力的大力发展超级计算机。如,在2013 年6月发布的世界TOP500中,排名第一的中国“天河2号(Milky Way-2) 超级计算机”就已经达到了54.9PFlops的峰值速度。与此同时,新的百亿亿 次超级计算机也已经在研究和规划之中了。总的来说,基本上每十年,超级 计算机的速度就提升三个量级(1000倍),因此建造超级计算机的能力已经 成为一个国家科技水平和综合国力的有力体现。
虽然超级计算机惊人的发展速度十分令人欣慰,但遗憾的是与之相配套 的大型软件技术却裹足不前,这已经严重的制约了超级计算机应用能力的发 挥。现在绝大多数的应用软件所基于的基本原理和数学算法,还是上世纪 50~60年代提出和发展起来的,这些算法与当时的大型计算机是完全匹配和 适应的,以串行或少量进程间并行为主。但经过50多年的发展,现在的超级 计算机体系结构已经发生了翻天覆地的变化,动辄拥有几十万乃至上百万的 CPU核,而且还有相当一部分超级计算机是使用混合异构(CPU+GPU/MIC 等)的体系架构,这就使得早期的物理模型和数学算法力不从心而无法胜任。 这就是现在绝大多数运行在超级计算机上的应用软件效率低下、可扩展性差 的主要原因。
要克服目前存在的技术难题,一方面,需大力研究和发展新的与现今超 级计算机体系结构相匹配的物理模型和数学算法,这是突破现有技术瓶颈的 终极手段,但这毕竟是一项极其困难的课题,无法在短时间内见到成效并实 现大规模应用。另一方面,需着手研究目前所继承下来的、海量的应用软件, 了解它们在现有高性能计算平台上的运行效率特征,找出它们的性能瓶颈, 最大限度的在现有平台上发挥这些应用程序的潜在的性能;此外亦为应用程 序性能的改进和瓶颈的突破提供有力的依据。因此,如何监控大型应用软件 的运行效率,从而使得大型应用软件合理、科学、快速以及高效地运行在超 级计算机上,是亟待解决的课题。
发明内容
本发明所要解决的技术问题是提供一种监控计算应用软件运行效率的系 统、装置及方法,能够使得计算应用软件运行在合适的硬件平台而提高运行 效率。
为了解决上述技术问题,本发明提供了一种监控计算应用软件运行效率 的系统,包括超级计算机平台及其上的计算应用程序运行装置和监控装置, 其中:
超级计算机平台,用于在为计算应用程序运行装置提供计算资源的同时, 为监控装置提供实现监控计算应用程序运行装置效率的硬件资源;
计算应用程序运行装置,用于在超级计算机平台将相应的计算应用程序 运行在主节点和从节点上;
监控装置,用于在超级计算机平台的主节点和从节点上启动各自的监控 器;根据从所有节点提取的物理参数和主节点发送的所有节点有效的监控数 据运算计算应用程序运行装置的运行效率。
进一步地,监控装置包括依次连接的监控器启闭模块、节点监控器模组、 软件运行效率计算模块以及节点参数提取模块,其中:
监控器启闭模块,用于根据超级计算机平台的节点数分别将节点监控器 模组中的主节点监控器和多个从节点监控器启动在超级计算机平台运行计算 应用程序的主节点、从节点上;
节点监控器模组,用于通过多个从节点监控器发送所处从节点运行计算 应用程序的监控数据,由主节点监控器接收所有从节点有效的监控数据以及 随同所处主节点运行计算应用程序的监控数据一起传输给软件运行效率计算 模块;监控数据包括浮点运算速度、有效使用指令数以及有效时钟周期数;
节点参数提取模块,用于提取超级计算机平台运行计算应用程序的主节 点、从节点的物理参数,包括CPU默认的时钟频率、所使用的指令集信息以 及节点内CPU物理核心数;将提取的各节点的物理参数传输给软件运行效率 计算模块;
软件运行效率计算模块,用于根据各节点的物理参数计算各节点理论浮 点运算速度和理论执行指令时的最小时钟周期数,并根据各个运行计算应用 程序的节点的监控数据计算出实测的浮点运算速度和实测的执行指令时的最 小时钟周期数;根据计算结果运算出计算应用程序运行装置运行所有计算应 用程序的总体效率。
进一步地,
软件运行效率计算模块根据计算结果按如下公式运算出计算应用程序运 行装置运行所有计算应用程序的总体效率:
式中:
V理论为节点理论浮点运算速度;V实测为计算出节点实测的浮点运算速度;
CPI理论为理论执行指令时的最小时钟周期数;
CPI实测为计算出的实测的执行指令时的最小时钟周期数,即CPI实测= 指令数/时钟数;
n为超级计算机平台上运行所述计算应用程序的主节点和从节点的总节 点数。
进一步地,
软件运行效率计算模块在完成所有计算应用程序的总体效率的运算后, 报告运算结果,并向监控器启闭模块输出监控器关闭指令;
监控器启闭模块根据输入的所述监控器关闭指令关闭所有监控器。
为了解决上述技术问题,本发明提供了一种用前面所述的监控计算应用 软件运行效率的系统中的计算应用程序运行装置,包括依次连接的监控器启 闭模块、节点监控器模组、软件运行效率计算模块以及节点参数提取模块, 其中:
监控器启闭模块,用于根据超级计算机平台的节点数分别将节点监控器 模组中的主节点监控器和多个从节点监控器启动在超级计算机平台运行计算 应用程序的主节点、从节点上;
节点监控器模组,用于通过多个从节点监控器发送所处从节点运行计算 应用程序的监控数据,由主节点监控器接收所有从节点有效的监控数据以及 随同所处主节点运行计算应用程序的监控数据一起传输给软件运行效率计算 模块;监控数据包括浮点运算速度、有效使用指令数以及有效时钟周期数;
节点参数提取模块,用于提取超级计算机平台所述运行计算应用程序的 主节点、从节点的物理参数,包括CPU默认的时钟频率、所使用的指令集信 息以及节点内CPU物理核心数;将提取的各节点的物理参数传输给软件运行 效率计算模块;
软件运行效率计算模块,用于根据各节点的物理参数计算各节点理论浮 点运算速度和理论执行指令时的最小时钟周期数,并根据各个运行计算应用 程序的节点的监控数据计算出实测的浮点运算速度和实测的执行指令时的最 小时钟周期数;根据计算结果运算出计算应用程序运行装置运行所有计算应 用程序的总体效率。
进一步地,软件运行效率计算模块根据计算结果按如下公式运算出计算 应用程序运行装置运行所有计算应用程序的总体效率:
式中:
V理论为节点理论浮点运算速度;V实测为计算出节点实测的浮点运算速度;
CPI理论为理论执行指令时的最小时钟周期数;
CPI实测为计算出的实测的执行指令时的最小时钟周期,即CPI实测= 指令数/时钟数;
n为超级计算机平台上运行计算应用程序的主节点和从节点的总节点数。
进一步地,
软件运行效率计算模块在完成所有计算应用程序的总体效率的运算后, 报告运算结果,并向监控器启闭模块输出监控器关闭指令;
监控器启闭模块根据输入的监控器关闭指令关闭所有监控器。
为了解决上述技术问题,本发明提供了一种监控计算应用软件运行效率 的方法,涉及超级计算机平台上的监控装置,该方法包括:
确定计算应用软件和监控装置运行的超级计算机平台,部署软件环境;
在确定的超级计算机平台上将相应的监控器启动在运行计算应用程序的 主、从节点上;
根据从所有节点提取的物理参数和主节点发送的所有节点有效的监控数 据运算计算应用程序运行装置的运行效率。
进一步地,根据从所有节点提取的物理参数和主节点发送的所有节点有 效的监控数据运算计算应用程序运行装置的运行效率,具体包括:
根据从各节点提取的物理参数计算各节点理论浮点运算速度和理论执行 指令时的最小时钟周期数;
根据各个运行计算应用程序的节点的监控数据计算出实测的浮点运算速 度和实测的执行指令时的最小时钟周期数;监控数据包括浮点运算速度、有 效使用指令数以及有效时钟周期数;
根据计算结果按如下公式运算出计算应用程序运行装置运行所有计算应 用程序的总体效率:
式中:
V理论为节点理论浮点运算速度;V实测为计算出节点实测的浮点运算速度;
CPI理论为理论执行指令时的最小时钟周期数;
CPI实测为计算出的实测的执行指令时的最小时钟周期数,即CPI实测= 指令数/时钟数;
n为超级计算机平台上运行计算应用程序的主节点和从节点的总节点数。
进一步地,该方法,还包括:
在完成所有计算应用程序的总体效率的运算后,报告运算结果,并关闭 所有监控器。
本发明的方法能够客观地反映出计算应用程序的运行效率,由此准确的 把握计算应用程序对计算资源的利用率,确定计算应用程序的扩展性等,从 而为准确定位和优化可以最大程度发挥应用程序性能的超级计算机硬件平台, 并为实现应用性能最大化提供足够数据指标依据。
附图说明
图1为本发明的监控计算应用软件运行效率的系统实施例的结构框图;
图2为图1中所示的本发明的监控装置实施例的结构框图;
图3为本发明的监控计算应用软件运行效率的方法实施例的流程图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该 理解,以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术 方案的限制。
如图1所示,表示了本发明提供的监控计算应用软件运行效率的系统实 施例的结构,它除了包括在超级计算机平台上的计算应用程序运行装置外, 还包括一监控装置,其中:
超级计算机平台,用于在为计算应用程序运行装置提供计算资源的同时, 为监控装置提供实现监控计算应用程序运行装置效率的硬件资源;
计算应用程序运行装置,用于在超级计算机平台将相应的计算应用程序 运行在主节点和从节点上;
监控装置,用于在超级计算机平台的主节点和从节点上启动各自的监控 器;根据从所有节点提取的物理参数和所有节点的有效的监控数据运算计算 应用程序运行装置的运行效率。
针对上述系统实施例,本发明还提供了一监控装置实施例,其结构如图 2所示,包括依次连接的监控器启闭模块、节点监控器模组、软件运行效率 计算模块以及节点参数提取模块,其中:
监控器启闭模块,用于根据超级计算机平台的节点数分别将节点监控器 模组中的主节点监控器和多个从节点监控器启动在超级计算机平台运行计算 应用程序的主节点、从节点上;
节点监控器模组,用于通过多个从节点监控器发送所处从节点运行计算 应用程序的监控数据,由主节点监控器接收所有从节点有效的监控数据以及 随同所处主节点运行计算应用程序的监控数据一起传输给软件运行效率计算 模块;监控数据包括浮点运算速度、有效使用指令数以及有效时钟周期数;
节点参数提取模块,用于提取超级计算机平台运行计算应用程序的主节 点、从节点的物理参数,包括CPU默认的时钟频率、所使用的指令集信息以 及节点内CPU物理核心数;将提取的各个节点的物理参数传输给软件运行效 率计算模块;
软件运行效率计算模块,用于根据各节点的物理参数计算各节点理论浮 点运算速度(GFlops)和理论执行指令时的最小时钟周期数(CPI),并根据 各个运行计算应用程序的节点的监控数据计算出实测的浮点运算速度和实测 的执行指令时的最小时钟周期数;根据计算结果运算出计算应用程序运行装 置运行所有计算应用程序的总体效率。
在上述系统实施例中,
软件运行效率计算模块根据计算结果按如下公式运算出计算应用程序运 行装置运行所有计算应用程序的总体效率:
式中:
V理论为节点理论浮点运算速度(譬如对于Intel Xeon E5-2650 CPU的双 路节点,V理论=256GFlops);V实测为计算出节点实测的浮点运算速度;
CPI理论为理论执行指令时的最小时钟周期数(譬如对于Intel Xeon E5-2650 CPU的双路节点,CPI理论=0.125);
CPI实测为计算出的实测的执行指令时的最小时钟周期数即CPI实测= 指令数/时钟数;
n为超级计算机平台上运行计算应用程序的主节点和从节点的总节点数。
在上述系统实施例中,
软件运行效率计算模块在完成所有计算应用程序的总体效率的运算后,
报告运算结果,并向监控器启闭模块输出监控器关闭指令;
监控器启闭模块根据输入的监控器关闭指令关闭所有监控器。
本发明针对上述系统实施例,相应地还提供了监控计算应用软件运行效 率的方法实施例,其流程如图3所示,包括如下步骤:
110:确定应用软件和监控装置运行的硬件平台,部署软件环境;
选择确定合适的硬件平台,部署相应的操作系统、数学库以及监控装置 的软件环境。这里,确定的硬件平台的性能应尽可能的平衡,并尽可能的留 有一定的资源余量;同时要求监控装置以极少量的资源占用而不影响被监控 及分析的计算应用程序的正常运行。
120:在确定的硬件平台上将相应的监控器启动在运行计算应用程序的主、 从节点上;
监控装置选择出一主节点,并将主节点监控器启动在该主节点上,根据 运行计算应用程序的节点之节点数n将从节点监控器分别启动在其它(n-1) 个从节点上。
130:主节点监控器接各个收从节点监控器发送的数据;
在此,主节点和从节点是针对监控而言,它是一个相对的概念。主节点 监控器主要完成对监控数据的接收,它亦可同时是从节点监控器。
140:主节点是否正常接收数据,是则执行步骤150,否则返回步骤110 执行;
150:各监控器对被监控的节点上运行的计算应用程序进行监控,主监控 器接收从监控器在监控过程获取的监控数据;
160:主监控器判断所有监控数据是否真实有效,是则执行步骤170,否 则返回步骤120执行;
这里,各监控器判断监控数据是否真实有效,是依据监控数据的合理值 的范围进行判断的。
170:根据提取的各个节点的物理参数和实测的监控数据计算应用程序运 行效率。
上述方法实施例中,
根据提取的各个节点的物理参数和实测的监控数据计算应用程序运行效 率,具体包括:
根据各节点的物理参数计算各节点理论浮点运算速度(GFlops)和理论 执行指令时的最小时钟周期数(CPI);
根据各个运行计算应用程序的节点的监控数据计算出实测的浮点运算速 度和实测的执行指令时的最小时钟周期数;
根据计算结果按照公式(1)运算出计算应用程序运行装置运行所有计算 应用程序的总体效率。
在上述方法实施例中,还包括:
在完成所有计算应用程序的总体效率的运算后,报告运算结果,并关闭 所有监控器。
本发明充分利用了超级计算机上高性能计算应用程序的特点,深度探索 和挖掘了计算应用程序对计算资源的利用程度,且以监控器极微弱的资源占 用量并不影响被分析应用程序的正常运行。该方法反映出计算应用程序的运 行效率,由此准确的把握计算应用程序对计算资源的利用率,确定计算应用 程序的扩展性等,从而为准确定位和优化可以最大程度发挥应用程序性能的 超级计算机硬件平台,实现应用性能最大化提供足够数据指标依据。
例如对于运行中使用了100个计算节点的应用作业来说,如果其效率比 较高(譬如大于80%),则在一定程度上可以认为针对该作业,该应用软件 还可能使用更多的计算节点(即大于100节点)来计算,从而降低任务的运 行时间。相反,如果应用的效率已经很低了,如小于30%,则可以认为对于 该应用,使用100个节点已经过多,可以适当减少计算节点的使用,以提升 应用的运行效率。
由于本发明在监控应用运行效率的时候,已经监控了实时的浮点运算速 度,以及CPI指标等等物理量,而这些物理指标恰恰就反映了应用程序的运 行特征,从而有针对性的对应用优化。如通过效率监控微架构信息,发现某 一应用程序的浮点运算速度非常低,浮点运算基本上全部由传统的浮点单元 X87指令提供,而并没有使用到主流处理器的向量化单元,从而CPI也很高, 则由此可以定位到,该应用向量化方面的优化不足,从而有针对性的优化应 用的向量化部分代码。相反,如果监控到浮点运算很高,向量化单元也很高, 则可以定位该应用的向量化优化不错,应该定制支持向量化的处理器硬件平 台,以使应用软件的性能得以发挥。
机译: 应用软件分发系统,应用软件分发方法和存储应用软件分发程序的计算机可读介质
机译: 应用软件分发系统,应用软件分发方法和计算机可读介质存储应用软件分发程序
机译: 移动通信终端,应用软件启动装置,应用软件启动系统,应用软件启动方法,以及应用软件启动程序