CN112083929B - 一种面向功率约束系统的性能-能耗协同优化方法及装置 - Google Patents

一种面向功率约束系统的性能-能耗协同优化方法及装置 Download PDF

Info

Publication number
CN112083929B
CN112083929B CN202010918175.6A CN202010918175A CN112083929B CN 112083929 B CN112083929 B CN 112083929B CN 202010918175 A CN202010918175 A CN 202010918175A CN 112083929 B CN112083929 B CN 112083929B
Authority
CN
China
Prior art keywords
parallel
power
energy consumption
performance
configuration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010918175.6A
Other languages
English (en)
Other versions
CN112083929A (zh
Inventor
张伟哲
郝萌
方滨兴
楼晨
何慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN202010918175.6A priority Critical patent/CN112083929B/zh
Publication of CN112083929A publication Critical patent/CN112083929A/zh
Application granted granted Critical
Publication of CN112083929B publication Critical patent/CN112083929B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Supply And Distribution Of Alternating Current (AREA)

Abstract

一种面向功率约束系统的性能‑能耗协同优化方法及装置,属于高性能计算技术领域,用以解决高性能计算中系统总体运行过程中能耗过大的问题。本发明主要通过机器学习模型预测并在OpenMP并行域级别进行功率上限设置来优化程序运行的能耗和性能,本发明包括数据采集、模型训练和代码优化三个部分,其中,数据采集包括从OpenMP并行程序中提取模型训练所需要的特征数据;模型训练包括根据功率配置和提取的特征数据对性能和能耗进行建模训练;代码优化包括根据训练得到的模型获取最优功率配置,并根据最优功率配置进行代码优化。本发明有助于通用的并行应用程序进行资源的合理利用,提高效率,同时也有助于云计算、物联网等功率约束场景下提高能量的利用率。

Description

一种面向功率约束系统的性能-能耗协同优化方法及装置
技术领域
本发明涉及高性能计算技术领域,具体涉及一种面向功率约束系统的性能-能耗协同优化方法及装置。
技术背景
高性能计算的研究不断取得进步,但仍然存在着许多问题制约着高性能计算的下一步发展,其中能耗问题伴随着计算能力的提升而愈发凸显出来,巨大的能耗不仅意味着需要高额的维护成本,而且会影响超级计算机的架构设计,这些因素使得能耗问题成为了限制高性能计算发展的一大阻碍。未来的高性能计算会更多地考虑功耗约束的场景,即系统只能在人为设置的有限的功率下运行,现在各国制定的E级计算规划基本将系统功耗目标设定为20MW,因此需要考虑在不同的复杂架构、加速器和学科对应用的不同需求下来对有限的计算资源进行分配,最大化资源的利用。
发明内容
本发明要解决的技术问题是:鉴于以上问题,本发明提出一种功率约束系统中对OpenMP并行程序的性能-能耗协同优化的方法及装置,用以解决高性能计算中系统总体运行过程中能耗过大的问题。
本发明为解决上述技术问题所采用的技术方案是:
一种面向功率约束系统的性能-能耗协同优化方法,该方法包括,
数据采集,包括从OpenMP并行程序中提取模型训练所需要的特征数据;
模型训练,包括根据功率配置和提取的所述特征数据对性能和能耗进行建模训练;
代码优化,包括根据训练得到的模型获取最优功率配置,并根据最优功率配置进行代码优化。
进一步地,提取模型训练所需要的特征数据具体步骤包括,首先按执行时间识别获得主要OpenMP并行域;然后在源码级别对主要OpenMP并行域设置不同的功率上限以进行功率配置;最后在功率配置下多次运行以获取对应的特征数据。
进一步地,识别获得主要OpenMP并行域具体步骤包括,首先对OpenMP并行程序进行编译插桩,获取并行域位置;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置分析模式运行编译好的并行域程序,获取识别结果;最后根据识别结果中各个并行域的运行时间占比排名,筛选获得主要并行域。
进一步地,在功率配置下多次运行以获取对应的特征数据具体步骤包括,首先对OpenMP并行程序进行编译插桩;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置追踪模式且设置待采集PAPI性能计数器名称及能耗测量插件名称;最后运行编译好的并行域程序,获得测量结果中对应的特征数据。
进一步地,根据训练得到的模型获取最优功率配置包括通过遍历所有可选择的功率配置搜索空间,使用训练好的模型进行预测,从而获得不同配置下的性能-能耗运行结果,根据运行结果获取最优的功率配置。
进一步地,根据最优功率配置进行代码优化包括根据获取的最优功率配置,对待优化并行程序进行源代码级别的修改,对并行域设置对应的最优功率上限,完成自动优化。
进一步地,根据训练得到的模型获取最优功率配置采用最优配置生成算法来获取最优功率配置。
进一步地,所述最优配置生成算法具体步骤包括,首先遍历功率配置找到并行域各自的帕累托解集;然后对输入的待优化程序结构进行结构分析,找到所有的循环结构;然后根据并行域是否在循环结构中为并行域进行分组;最后对处于同一分组内的并行域寻找帕累托解集的交集作为当前分组的最优配置。
进一步地,根据最优功率配置进行代码优化具体步骤包括,将待修改源代码转换为抽象语法树AST;根据获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点;插入设置功率的函数,在抽象语法树AST上修改待修改源代码;再将修改后的抽象语法树AST转换为源代码。
根据本发明的另一方面,提出一种面向功率约束系统的性能-能耗协同优化装置,包括,
数据采集模块,用于从OpenMP并行程序中提取模型训练所需要的特征数据,包括并行域识别模块、功率配置模块和特征获取模块;其中,并行域识别模块用于按执行时间识别获得主要OpenMP并行域,具体步骤包括,首先对OpenMP并行程序进行编译插桩,获取并行域位置;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置分析模式运行编译好的并行域程序,获取识别结果;最后根据识别结果中各个并行域的运行时间占比排名,筛选获得主要并行域;
功率配置模块用于在源码级别对主要OpenMP并行域设置不同的功率上限以进行功率配置;
特征获取模块用于在功率配置下多次运行以获取对应的特征数据,具体步骤包括,首先对OpenMP并行程序进行编译插桩;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置追踪模式且设置待采集PAPI性能计数器名称及能耗测量插件名称;最后运行编译好的并行域程序,获得测量结果中对应的特征数据;
模型训练模块,用于根据功率配置和提取的所述特征数据对性能和能耗进行建模训练;
代码优化模块,包括配置生成模块和代码转换模块,其中,配置生成模块用于根据训练得到的模型采用最优配置生成算法获取最优功率配置;代码转换模块用于根据最优功率配置进行代码优化,具体步骤包括将待修改源代码转换为抽象语法树AST;根据获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点;插入设置功率的函数,在抽象语法树AST上修改待修改源代码;再将修改后的抽象语法树AST转换为源代码。
本发明具有以下有益技术效果:本发明提出一种功率约束系统中对OpenMP并行程序的性能-能耗协同优化方法及装置,通过对计算节点内部进行资源分配来对程序运行的能耗和性能进行协同优化。在高性能计算系统功率约束的趋势下,本发明有效降低了高性能计算中系统总体运行的能耗,进而减少了系统运行的高额维护成本,帮助通用的并行应用程序进行资源的合理利用,提高效率,同时也有助于云计算、物联网等功率约束场景下提高能量的利用率。
附图说明
本发明可以通过参考下文中结合附图所给出的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分,而且用来进一步举例说明本发明的优选实施例和解释本发明的原理和优点。
图1示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的示意性流程图;
图2示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的并行域聚类结果及训练集划分示意图;
图3示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的并行域检测识别的示意性流程图;
图4示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的运行时特征获取的示意性流程图;
图5示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练能耗模型的MAPE结果图;
图6示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练性能模型的MAPE结果图;
图7示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练能耗模型的Adjusted R2结果图;
图8示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练性能模型的Adjusted R2结果图;
图9示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的代码优化的示意性流程图;
图10示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的能耗最优功率配置下各并行程序整体运行结果图;
图11示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的最小能耗延迟积功率配置下各并行程序整体运行结果图;
图12示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化装置的示意性结构图。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,例如,符合与系统及业务相关的那些限制条件,并且这些限制条件可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本发明内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
本发明提出一种面向功率约束系统的性能-能耗协同优化方法,图1示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的示意性流程图。根据本发明实施例,优化的基本思路是针对CPU和DRAM(内存)域,通过机器学习模型预测并在OpenMP并行域级别进行功率上限设置,以优化程序运行的能耗和性能。
如图1所示,首先执行步骤10,数据采集,包括从OpenMP并行程序中提取模型训练所需要的特征数据;其中,特征数据的提取包括,
步骤110、首先按执行时间识别获得主要OpenMP并行域;
步骤120、然后在源码级别对主要OpenMP并行域设置不同的功率上限以进行功率配置;
步骤130、最后在功率配置下多次运行以获取对应的程序特征。
根据本发明实施例,特征数据采用PAPI硬件性能计数器作为程序特征,PAPI硬件性能计数器是一套完备的跨平台访问底层硬件计数器的应用程序编程接口,其定义了一组标准的性能事件集合,可以获取程序运行时的硬件特征。
需要进行数据采集的对象有两个,训练集数据和测试集数据,二者的总体采集过程一致,可以分为三个阶段,分别是并行域检测识别、并行域设置功率上限和运行时特征测量。对于训练集数据,需要对每个并行域设置不同的功率上限来获取不同配置对性能能耗的影响,而对于测试集数据则只需要获取最大功率上限条件下的相关特征。
本发明使用的训练集benchmark如表1所示,共包含22个不同的并行域。根据层次聚类分析结果,选择22个并行域中的13个作为训练集,剩余9个作为测试集,图2示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的并行域聚类结果及训练集划分示意图,图2中字母与数字的组合代表并行域,如“BT_1”表示BT中选中的第一个并行域,选中的训练集用红色字体标出。
表1基准测试程序
OpenMP并行程序内部一般包含多个并行域,它们之间在任务量上有很大的不同。由于对执行时间很短的并行域进行配置的开销很大,所以需要首先识别出主要的并行域,步骤110中识别获得主要OpenMP并行域的具体步骤包括,
步骤1110、对OpenMP并行程序进行编译插桩,获取并行域位置;
步骤1210、设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;
步骤1310、设置分析模式运行编译好的并行域程序,获取识别结果;
步骤1410、根据识别结果中各个并行域的运行时间占比排名,筛选获得主要并行域。
进一步地,识别获得主要OpenMP并行域的工具为SCORE-P,Score-P作为比较优秀的第三方分析工具,同时也支持硬件加速器分析,其支持最多的并行范例,可以记录最多并发活动,对非常复杂的应用程序也可以提供最完整的性能图。
图3示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的并行域检测识别的示意性流程图。
根据本发明实施例,进行并行域检测时首先需要使用SCORE-P工具对基准测试程序进行编译,这时SCORE-P内部的工具会自动对源码进行插桩,识别出OpenMP并行域的位置;由于SCORE-P会对程序所有部分进行测量,会使测量结果文件过大,因此设置过滤器filter文件,可以只测量并行域部分;然后将SCORE-P设置为profile分析模式,运行编译好的程序,运行完之后会在当前路径下生成分析模式下测量结果的文件;从文件中可以读取各个并行域的运行时间,根据时间占比的排名可以选择出主要的并行域。
在获得主要并行域之后,需要对程序源码进行修改,在对应并行域的位置上设置功率上限,即执行步骤120,在源码级别对主要OpenMP并行域设置不同的功率上限以进行功率配置。
根据本发明实施例,本发明主要对系统中Package(整个CPU)和DRAM(内存)两部分进行功率上限设置,使用RAPL(RAPL是一种功耗监测控制接口,用于监测和限制CPU在一定时间间隔内的平均运行功率)提供的接口编写一个函数库,该函数库主要实现两个函数:CPU_SET_LIMIT、DRAM_SET_LIMIT,这两个函数可以根据输入的数值设置RAPL功率上限。使用时需要在并行域前后插入这两个函数,以达到设置功率上限的目的。
然后,同样使用SCORE-P工具进行PAPI硬件性能计数器事件测量,即执行步骤130,在功率配置下多次运行以获取对应的特征数据。
特征数据的获取包括以下具体步骤,
步骤1310、对OpenMP并行程序进行编译插桩;
步骤1320、设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;
步骤1330、设置追踪模式且设置待采集PAPI性能计数器名称及能耗测量插件名称;
步骤1340、运行编译好的并行域程序,获得测量结果中对应的程序特征。
图4示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的运行时特征获取的示意性流程图。
根据本发明实施例,特征数据的获取部分与步骤110中识别获得主要OpenMP并行域的过程相似,首先要使用SCORE-P对并行程序进行编译插桩;设置过滤器filter文件过滤掉不关心的部分;设置SCORE-P为trace追踪模式运行程序;在环境变量中设置好要采集的PAPI性能计数器名称、所用的插件名称;执行完成后会生成追踪结果文件,从中可以获取所需的数据。
在对不同种类的OpenMP并行域采集数据,获取对应的特征数据之后,需要通过数据处理、训练模型以找到功率上限、并行域运行特征和性能能耗的关系,通过预测能耗和时间来指导最优配置的选择,即执行步骤20。
步骤20、模型训练,包括根据功率配置和提取的特征数据对性能和能耗进行建模训练。
根据本发明实施例,模型训练的目标是能够精确预测不同功率配置下OpenMP并行域的执行时间和能量消耗,过程主要分为特征选择、数据预处理、模型选择、模型训练调优四个部分。
作为示例,本发明选择的程序特征如表2所示,包括三个部分,一是CPU和DRAM(内存)的功率上限设置,二是PAPI标准性能计数器,三是由PAPI性能计数器推导出的复合特征。对于PAPI标准性能计数器程序特征,使用随机森林对各个特征进行重要度排序,最终选取7组PAPI标准特征;IPC是每周期完成的指令数;计算强度是浮点计算次数与访存次数的比值,被用来判断程序是属于计算密集型还是访存密集型。
表2模型选择的特征及其描述
特征选择之后进行数据预处理,即对特征数据进行取对数处理,然后选择使用SVR(Support Vactor Regression)支持向量机和RF(随机森林)两种机器学习算法对性能-能耗建模,建模过程中使用网格搜索法和k折交叉验证法结合,列出所有可能的超参数组合,然后通过遍历运行参数组合,根据交叉验证的结果寻找最优的超参数配置进行模型训练,最后使用平均绝对百分比误差MAPE和校正决定系数AjustedR2来评估模型的拟合效果;
其中,平均绝对百分比误差MAPE取值范围为[0,+∞),MAPE值越小表示预测偏差越小;校正决定系数Adjusted R2取值范围为0-1,其越接近1拟合效果越好。
图5示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练能耗模型的MAPE结果图,可以看到整体上RF(随机森林)模型的MAPE值要小于SVR(Support Vactor Regression)支持向量机模型,RF(随机森林)模型MAPE平均值为5.90,而SVR(Support Vactor Regression)支持向量机模型MAPE平均值为11.08。
图6示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练性能模型的MAPE结果图,可以看到整体上RF(随机森林)模型的MAPE值要小于SVR(Support Vactor Regression)支持向量机模型,RF(随机森林)模型MAPE平均值为5.95,而SVR(Support Vactor Regression)支持向量机模型MAPE平均值为9.19。
图7示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练能耗模型的Adjusted R2结果图,可以看到整体上RF(随机森林)模型的拟合效果要高于SVR(Support Vactor Regression)支持向量机模型,RF(随机森林)模型的AjustedR2平均值为0.85,SVR(Support Vactor Regression)支持向量机模型去除最低值后的AjustedR2平均值为0.69。
图8示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的训练性能模型的Adjusted R2结果图,可以看到整体上RF(随机森林)模型的拟合效果要高于SVR(Support Vactor Regression)支持向量机模型,RF(随机森林)模型的AjustedR2平均值为0.84,SVR(Support Vactor Regression)支持向量机模型的AjustedR2平均值为0.71。
在模型训练之后执行步骤30代码优化,代码优化包括,
步骤310根据训练得到的模型获取最优功率配置;
包括通过遍历所有可选择的功率配置搜索空间,使用训练好的模型进行预测,从而获得不同配置下的性能-能耗运行结果,根据运行结果获取最优的功率配置。
进一步地,步骤310中采用最优配置生成算法来获取最优功率配置;
其中,最优配置生成算法具体步骤包括,
步骤3110、遍历功率配置找到并行域各自的帕累托解集;
步骤3120、对输入的待优化程序结构进行结构分析,找到所有的循环结构;
步骤3130、根据并行域是否在循环结构中为并行域进行分组;
步骤3140、对处于同一分组内的并行域寻找帕累托解集的交集作为当前分组的最优配置。
然后执行步骤320,根据最优功率配置进行代码优化;
包括根据获取的最优功率配置,对待优化并行程序进行源代码级别的修改,对并行域设置对应的最优功率上限,完成自动优化。
进一步地,步骤320代码优化具体步骤包括,
步骤3210、将待修改源代码转换为抽象语法树AST;
步骤3220、根据获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点;
步骤3230、插入设置功率的函数,在抽象语法树AST上修改待修改源代码;
步骤3240、再将修改后的抽象语法树AST转换为源代码。
根据本发明实施例,对于步骤310根据训练得到的模型获取最优功率配置,本发明设计一种最优配置生成算法,可以对程序内的并行域功率设置进行合并,减少因为循环迭代而过于频繁改变功率上限的影响,对程序总体生成最优配置。该算法主要是根据帕累托解集在允许一定范围内性能波动的情况下为一些并行域设置统一的功率上限,从而降低功率上限的改变频率,减少开销。
所谓帕累托最优解集,是指无法在不损失一个目标的情况下优化另一个目标所对应的解的集合。对算法中提到的一些内容进行定义,见定义1-定义6。
定义1程序中的待优化OpenMP并行域集合为其中由并行域的起始和结束位置二元组构成,
定义2功率上限设置(即功率配置)集合LIMIT={limit=(Limitcpu,limitdram)};
定义3帕累托解集
定义4程序中的循环结构集合为LOOP={l},如果有多重循环,则取最外层循环,l由起始和结束位置二元组构成,
l=(Beginl,Endl)
对于包含一个或多个并行域的循环结构,应将这个循环结构整体视为设置功率上限的对象,因此有:
定义5代码片段集合SLICE={slice},slice表示应该设置功率上限的代码段,它包含两个部分,一是所有不被循环结构包含的并行域,二是包含在同一循环里的并行域集合;
定义6最优配置集合表示在代码片段上设置功率上限为limit。
该算法可以分为三部分,第一部分是遍历功率设置找到并行域各自的帕累托解集;第二部分是对输入的待优化程序结构进行结构分析,找到所有的循环结构然后根据并行域是否在循环结构中为并行域进行分组;第三部分是对处于同一分组内的并行域寻找帕累托解集的交集作为当前分组的最优配置;最后将所有分组的结果作为输出。算法运行代码如下。
根据本发明实施例,对于根据最优功率配置进行代码优化,使用LLVMClang(编译器)作为基础实现源到源的代码转换工具,可以通过指定待优化区域的起止行号和对应的功率上限,实现自动代码转换。图9示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的代码优化的示意性流程图。
根据最优功率配置进行代码优化的基本思路是使用Clang(编译器)提供的语法解析功能,将待修改源码转化为抽象语法树AST,根据配置生成中获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点,在语法树上修改源码,插入设置功率的函数,最后再转换为源代码。
在相应的并行域功率配置下,对程序整体运行能耗和时间上验证本发明方法,对于每个基准测试程序在同一功率配置下测量5次取平均值。除了表2展示的基准测试程序之外,另外选取三个未参与模型训练的OpenMP基准测试程序Nstream、Stencil和Transpose进行优化效果的验证。
·Nstream:计算并行程序内存带宽;
·Stencil:对二维数组执行数据并行stencil操作;
·Transpose:测量通信带宽;
首先以能耗最优为标准来选择功率配置,图10示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的能耗最优功率配置下各并行程序整体运行结果图。图中包括观测到的最优配置、RF模型预测得到的最优配置和SVR模型预测得到的最优配置下运行能耗和时间的测量结果与未优化原始程序的比较。表3给出了能耗最优功率配置下基准测试程序与未优化程序相比的变化情况。
表3能耗最优功率配置下基准测试程序(时间/能耗)与未优化程序相比的变化情况
从表3中可以看到,在RF模型预测得到的最优配置下,能耗降低范围为3.93%-18.75%,可以以平均时间增加7.60%的情况下平均能耗减少9.25%;在SVR模型预测得到的最优配置下,能耗降低范围是0.22%-21.25%,可以以平均时间增加7.42%的情况下平均能耗减少9.65%。
表4给出了RF模型下各个测试程序所选择的CPU和DRAM(内存)功率上限,以及与最大值(145W/32W)相比功率的优化幅度,平均可以提供39.1%的功率下降空间。
表4 RF模型预测能耗最优功率上限(单位:瓦)
然后综合考虑性能-能耗来选择功率配置,以能耗延迟积E×T最小作为标准选择功率配置,图11示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化方法的最小能耗延迟积功率配置下各并行程序整体运行结果图。表5给出了最小能耗延迟积功率配置下基准测试程序与未优化程序相比的变化情况。可以看到,RF模型的预测结果中平均时间增加0.56%同时能耗降低4.74%,SVR模型预测结果中平均时间增加4.70%同时能耗降低2.81%。
表5最小能耗延迟积功率配置下基准测试程序(时间/能耗)与未优化程序相比的变化情况
从以上验证结果中可以看出,本发明中为不同OpenMP并行域设置功率上限的方法可以降低程序总体运行能耗,对于不同的程序来说降低能耗的效果不同,因此存在着功率优化的空间,以不同的目标程序进行优化会产生不同的效果,本发明方法可以较准确地反映出这种差别,表6给出了RF模型下各个测试程序所预测的CPU和DRAM(内存)功率上限,从表中可以看到,提供了平均为30.4%的功率上限下降空间。
需要说明的是,SVR模型下各个测试程序所预测的CPU和DRAM(内存)功率上限的预测结果和RF模型基本相同,在个别预测上存在偏差,但整体上RF模型的预测结果更为稳定。
表6 RF模型预测能耗延迟积最优功率上限(单位:瓦)
此外,本发明的实施例还提供了一种面向功率约束系统的性能-能耗协同优化装置,图12示出了根据本发明实施方式的一种面向功率约束系统的性能-能耗协同优化装置的示意性结构图。
如图12所示,一种面向功率约束系统的性能-能耗协同优化装置包括,
数据采集模块10,用于从OpenMP并行程序中提取模型训练所需要的特征数据,包括并行域识别模块110、功率配置模块120和特征获取模块130;其中,并行域识别模块110用于按执行时间识别获得主要OpenMP并行域,具体步骤包括,首先对OpenMP并行程序进行编译插桩,获取并行域位置;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置分析模式运行编译好的并行域程序,获取识别结果;最后根据识别结果中各个并行域的运行时间占比排名,筛选获得主要并行域;
功率配置模块120用于在源码级别对主要OpenMP并行域设置不同的功率上限以进行功率配置;
特征获取模块130用于在功率配置下多次运行以获取对应的特征数据,具体步骤包括,首先对OpenMP并行程序进行编译插桩;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置追踪模式且设置待采集PAPI性能计数器名称及能耗测量插件名称;最后运行编译好的并行域程序,获得测量结果中对应的特征数据;
模型训练模块20,用于根据功率配置和提取的特征数据对性能和能耗进行建模训练;
代码优化模块30,包括配置生成模块310和代码转换模块320,其中,配置生成模块310用于根据训练得到的模型采用最优配置生成算法获取最优功率配置;代码转换模块320用于根据最优功率配置进行代码优化,具体步骤包括将待修改源代码转换为抽象语法树AST;根据获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点;插入设置功率的函数,在抽象语法树AST上修改待修改源代码;再将修改后的抽象语法树AST转换为源代码。
进一步地,最优配置生成算法具体步骤包括,遍历功率配置找到并行域各自的帕累托解集;对输入的待优化程序结构进行结构分析,找到所有的循环结构;根据并行域是否在循环结构中为并行域进行分组;对处于同一分组内的并行域寻找帕累托解集的交集作为当前分组的最优配置。
本发明实施例所述一种面向功率约束系统的性能-能耗协同优化装置的功能可以由前述一种面向功率约束系统的性能-能耗协同优化方法说明,因此本实施例未详述部分,可参见以上方法实施例,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (4)

1.一种面向功率约束系统的性能-能耗协同优化方法,其特征在于,包括:
数据采集,包括从OpenMP并行程序中提取模型训练所需要的特征数据;其中提取模型训练所需要的特征数据的过程包括:
首先按执行时间识别获得主要OpenMP并行域,具体为:对OpenMP并行程序进行编译插桩,获取并行域位置;设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;设置分析模式运行编译好的并行域程序,获取识别结果;根据所述识别结果中各个并行域的运行时间占比排名,筛选获得主要并行域;
然后在源码级别对所述主要OpenMP并行域设置不同的功率上限以进行功率配置;
最后在所述功率配置下多次运行以获取对应的特征数据,具体为:对OpenMP并行程序进行编译插桩;设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;设置追踪模式且设置待采集PAPI性能计数器名称及能耗测量插件名称;运行编译好的并行域程序,获得测量结果中对应的特征数据;
模型训练,包括根据功率配置和提取的所述特征数据对性能和能耗进行建模训练;
代码优化,包括根据训练得到的模型获取最优功率配置,并根据所述最优功率配置进行代码优化;其中根据训练得到的模型获取最优功率配置采用最优配置生成算法来获取最优功率配置;根据最优功率配置进行代码优化的步骤包括根据获取的最优功率配置,对待优化并行程序进行源代码级别的修改,对并行域设置对应的最优功率上限,完成自动优化,具体为:将待修改源代码转换为抽象语法树AST;根据获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点;插入设置功率的函数,在抽象语法树AST上修改待修改源代码;再将修改后的抽象语法树AST转换为源代码。
2.根据权利要求1所述一种面向功率约束系统的性能-能耗协同优化方法,其特征在于,根据训练得到的模型获取最优功率配置包括通过遍历所有可选择的功率配置搜索空间,使用训练好的模型进行预测,从而获得不同配置下的性能-能耗运行结果,根据运行结果获取最优的功率配置。
3.根据权利要求2所述一种面向功率约束系统的性能-能耗协同优化方法,其特征在于,所述最优配置生成算法步骤包括,首先遍历功率配置找到并行域各自的帕累托解集;然后对输入的待优化程序结构进行结构分析,找到所有的循环结构;然后根据并行域是否在循环结构中为并行域进行分组;最后对处于同一分组内的并行域寻找帕累托解集的交集作为当前分组的最优配置。
4.一种面向功率约束系统的性能-能耗协同优化装置,其特征在于,包括:
数据采集模块,用于从OpenMP并行程序中提取模型训练所需要的特征数据,包括并行域识别模块、功率配置模块和特征获取模块;
其中,并行域识别模块用于按执行时间识别获得主要OpenMP并行域,具体步骤包括,首先对OpenMP并行程序进行编译插桩,获取并行域位置;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置分析模式运行编译好的并行域程序,获取识别结果;最后根据识别结果中各个并行域的运行时间占比排名,筛选获得主要并行域;功率配置模块用于在源码级别对主要OpenMP并行域设置不同的功率上限以进行功率配置;特征获取模块用于在功率配置下多次运行以获取对应的特征数据,具体步骤包括,首先对OpenMP并行程序进行编译插桩;然后设置过滤器,将并行域位置之外的其它采集数据过滤掉,只保留并行域部分采集数据;然后设置追踪模式且设置待采集PAPI性能计数器名称及能耗测量插件名称;最后运行编译好的并行域程序,获得测量结果中对应的特征数据;
模型训练模块,用于根据功率配置和提取的所述特征数据对性能和能耗进行建模训练;
代码优化模块,包括配置生成模块和代码转换模块,其中,配置生成模块用于根据训练得到的模型采用最优配置生成算法获取最优功率配置;代码转换模块用于根据最优功率配置进行代码优化,具体步骤包括将待修改源代码转换为抽象语法树AST;根据获取的最优配置,在区域的起止位置找到对应的抽象语法树AST节点;插入设置功率的函数,在抽象语法树AST上修改待修改源代码;再将修改后的抽象语法树AST转换为源代码。
CN202010918175.6A 2020-09-03 2020-09-03 一种面向功率约束系统的性能-能耗协同优化方法及装置 Active CN112083929B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010918175.6A CN112083929B (zh) 2020-09-03 2020-09-03 一种面向功率约束系统的性能-能耗协同优化方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010918175.6A CN112083929B (zh) 2020-09-03 2020-09-03 一种面向功率约束系统的性能-能耗协同优化方法及装置

Publications (2)

Publication Number Publication Date
CN112083929A CN112083929A (zh) 2020-12-15
CN112083929B true CN112083929B (zh) 2024-04-19

Family

ID=73732587

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010918175.6A Active CN112083929B (zh) 2020-09-03 2020-09-03 一种面向功率约束系统的性能-能耗协同优化方法及装置

Country Status (1)

Country Link
CN (1) CN112083929B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113852952B (zh) * 2021-02-20 2024-08-20 天翼视联科技有限公司 一种基于android手机性能分级自动执行app优化策略的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464799A (zh) * 2009-01-16 2009-06-24 天津大学 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法
CN103116526A (zh) * 2013-02-22 2013-05-22 中国人民解放军国防科学技术大学 高性能异构并行计算机的最大功耗控制方法
CN109245178A (zh) * 2018-06-05 2019-01-18 重庆大学 一种基于分布式协同mpc的风电场功率协同调度

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464799A (zh) * 2009-01-16 2009-06-24 天津大学 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法
CN103116526A (zh) * 2013-02-22 2013-05-22 中国人民解放军国防科学技术大学 高性能异构并行计算机的最大功耗控制方法
CN109245178A (zh) * 2018-06-05 2019-01-18 重庆大学 一种基于分布式协同mpc的风电场功率协同调度

Also Published As

Publication number Publication date
CN112083929A (zh) 2020-12-15

Similar Documents

Publication Publication Date Title
Kofler et al. An automatic input-sensitive approach for heterogeneous task partitioning
CN103440229B (zh) 一种基于mic架构处理器的向量化优化方法
Grahn et al. CudaRF: a CUDA-based implementation of random forests
Namolaru et al. Practical aggregation of semantical program properties for machine learning based optimization
Li et al. Discovery of potential parallelism in sequential programs
Balaprakash et al. SPAPT: Search problems in automatic performance tuning
Wang et al. Listing maximal k-plexes in large real-world graphs
CN112083929B (zh) 一种面向功率约束系统的性能-能耗协同优化方法及装置
Ahmad et al. Heteromap: A runtime performance predictor for efficient processing of graph analytics on heterogeneous multi-accelerators
Ashouri et al. A framework for Compiler Level statistical analysis over customized VLIW architecture
Zhou et al. Ugrapher: High-performance graph operator computation via unified abstraction for graph neural networks
Dutta et al. Pattern-based autotuning of openmp loops using graph neural networks
Deniz et al. Using machine learning techniques to detect parallel patterns of multi-threaded applications
Andrade et al. Accurate prediction of the behavior of multithreaded applications in shared caches
Zhao et al. Automatic End-to-End Joint Optimization for Kernel Compilation on DSPs
Wang et al. Funcytuner: Auto-tuning scientific applications with per-loop compilation
Singh et al. Using graph neural networks to model the performance of deep neural networks
Zhao et al. AutoGraph: Optimizing DNN computation graph for parallel GPU kernel execution
CN111984418B (zh) 稀疏矩阵向量乘并行任务粒度参数自动调优方法和装置
Guillen et al. DVFS automatic tuning plugin for energy related tuning objectives
Sun et al. Automated performance modeling based on runtime feature detection and machine learning
Rasmussen et al. Parallelism and scalability in an image processing application
Lloyd et al. Automated GPU grid geometry selection for OpenMP kernels
Bindal et al. Onestoptuner: an end to end architecture for jvm tuning of spark applications
Wu et al. Serving unseen deep learning models with near-optimal configurations: a fast adaptive search approach

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant