CN113448425B - 一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统 - Google Patents
一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统 Download PDFInfo
- Publication number
- CN113448425B CN113448425B CN202110810963.8A CN202110810963A CN113448425B CN 113448425 B CN113448425 B CN 113448425B CN 202110810963 A CN202110810963 A CN 202110810963A CN 113448425 B CN113448425 B CN 113448425B
- Authority
- CN
- China
- Prior art keywords
- program
- energy consumption
- stage
- power
- reinforcement learning
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Power Sources (AREA)
Abstract
一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统,属于并行程序能耗优化技术领域,目的是自动地优化并行应用程序的能耗,并且不需要领域专家知识,对程序是透明的。本发明的技术要点包括:程序的阶段根据工作负载的特征,分为计算密集阶段和内存密集阶段,根据应用程序不同的实时工作负载特征,动态调整处理器功率配置,使硬件功率配置文件与运行时动态变化的程序阶段匹配;通过强化学习算法自动探索功率配置空间,根据环境反馈的奖惩信息,不断优化配置空间;最后,根据自动学习到的策略动态调整功率配置以匹配不断变化的程序阶段。本发明实现了自动且动态的并行程序能耗优化,并且该运行时优化系统的开销可以忽略不计。
Description
技术领域
本发明涉及并行应用程序能耗优化技术领域,具体涉及一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统。
背景技术
功率和能耗已经成为高性能科学计算中一个非常关键的问题,未来的高性能计算(High Performance Computing,HPC)系统和并行应用程序将受到明显的功率约束。美国能源部要求每台E级超级计算机的总功率预算不能超过20MW,即每台E级超算需要到达50GFlops/W的能效比。但是,根据最新的Top500超算性能排行榜,目前排名第一的超算是日本的Fugaku,运算速度为415.5PFlop/s,功率为28.3MW,能效比为14.8GFlops/W,远低于50GFlops/W的目标。因此,为了满足高性能并行计算对能源效率的严格要求,需要一种显著提高并行程序能源效率的方法。
目前,主流的处理器制造商已经提供了各种测量、监控和控制处理器和外围设备能耗的技术,例如,DVFS(Dynamic Voltage and Frequency Scaling)、Intel的RAPL(Running Average Power Limit)和AMD的TDP(Thermal Design Power)功率上限约束技术。大量研究工作使用这些硬件功率控制技术降低系统能耗。但是,如何高效地利用这些技术仍是一个挑战。特别是当以动态的能耗优化为目标时,需要精准的捕获程序不同的阶段特征,并且开销小。目前有大量方法使用DVFS技术动态调整处理器的频率,但是这种硬件配置逐渐不再为用户默认提供,RAPL技术提供的功率上限的调整逐渐取代直接的频率调整。功率上限调整技术结合电压和频率的调整,将处理器消耗的功率控制在设定的值之下。因为有时应用程序执行时并不会消耗很高的功率,如果为处理器配置很高的功率预算,将会浪费能量,但是如果为了节约能量将功率上限设置的很低,将严重影响应用程序的性能,因此,根据程序执行阶段的变化动态调整功率配置能够很好的权衡并行程序的性能和能耗。目前有许多启发式算法用于动态能耗优化,但是这些通常需要应用程序的领域专家知识,不具备通用性;传统的机器学习算法都需要大量的数据进行建模,但是强化学习算法是一种与环境不断进行交互和自学习的过程,因此非常适用于自动的动态并行应用程序能耗优化。
文献号为CN201680010063.2的现有技术基于机器学习的性能和能量模型识别特定工作负载行为(例如密集型存储器访问)并且预测最佳功率配置,包括活跃核和线程的数量,以及对于每个活跃核的最佳电压和频率。该专利忽略了多核处理器中与密集型存储器访问密切相关的非核心部分的频率控制,无法充分优化性能和能耗。文献号为CN201380040201.8的现有技术通过提供每个核P状态(PCPS)、非核频率调整(UFS)以及有能量效率的超频(EET)这些特征中的某些或全部的可配置性,以允许在系统内细微地调整处理器。该专利只是提供了这些可配置地以动态功率/性能级别操作处理器的技术,没有提供程序阶段识别(计算密集和内存密集),无法实现自动能耗和性能优化。
发明内容
鉴于以上问题,本发明提出一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统,目的是在不明显影响并行应用程序执行时间的情况下降低程序的能耗。
根据本发明一方面,提出一种基于强化学习的动态并行应用程序能耗运行时优化方法,该方法包括下述步骤:
步骤一、利用硬件性能计数器记录性能指标来动态检测程序的工作负载,工作负载的变化表示运行在处理器上程序的阶段变化,并测量每个阶段处理器的能耗;其中,程序的阶段根据其计算特性分为两类:计算密集阶段和内存密集阶段;
步骤二、基于测量到每个阶段处理器的能耗计算工作负载和功率配置下的奖惩,并根据计算得到的奖惩更新存储状态-操作对Q值的Q表,从而基于强化学习训练得到稳定的Q表;其中,所述功率配置包括功率上限和非核心频率;
步骤三、从训练得到的Q表中选择相应工作负载状态中最佳的功率配置,重新设置CPU的功率上限和非核心频率。
进一步地,步骤一中所述性能指标包括单位周期指令数和单位操作的缓存未命中数。
进一步地,步骤一中通过单位周期指令数和单位操作的缓存未命中数的变化来检测识别程序的阶段变化。
进一步地,步骤二中强化学习训练采用Double Q-learning算法进行训练,具体步骤包括:Q表初始化为零,然后按照如下步骤进行更新:基于检测到的程序工作负载阶段状态,选择Q表中Q值最大的功率上限和非核心频率,或者随机选择功率配置;存储两个Q表,两个Q表使用不同的经验样本集进行更新;在每次迭代中,平均随机地更新其中一个Q表,待更新的Q表将使用来自另一个Q表的值进行更新;使用贝尔曼方程更新Q表,其对应的方程为:
QA(s,a)←QA(s,a)+α(s,a)[r+γQB(s′,a*)-QA(s,a)]
其中,QA(s,a)表示在时间t处于状态s的动作a的Q值;α表示学习率;γ表示折现因子;r表示奖惩;QB(s′,a*)表示另一个Q表的Q值,s′,a*分别表示当前获取的状态s′和另一个QA表中状态动作s′下最大Q值对应的动作a*。
进一步地,奖惩r的计算公式如下:
r=(c×IPC)3/W
其中,IPC表示单位周期指令数;W表示系统功耗;c是一个常数。
进一步地,步骤三中基于RAPL技术和UFS技术重新设置CPU的功率上限和非核心频率。
根据本发明另一方面,提出一种基于强化学习的动态并行应用程序能耗运行时优化系统,该系统包括程序阶段检测器、奖惩计算器和功率控制器;其中,
所述程序阶段检测器用于利用硬件性能计数器记录性能指标来动态检测程序的工作负载,工作负载的变化表示运行在处理器上程序的阶段变化,并测量每个阶段处理器的能耗;其中,程序的阶段根据其计算特性分为两类:计算密集阶段和内存密集阶段;
所述奖惩计算器用于基于测量到每个阶段处理器的能耗计算工作负载和功率配置下的奖惩,并根据计算得到的奖惩更新存储状态-操作对Q值的Q表,从而基于强化学习训练得到稳定的Q表;其中,所述功率配置包括功率上限和非核心频率;
所述功率控制器用于从训练得到的Q表中选择相应工作负载状态中最佳的功率配置,重新设置CPU的功率上限和非核心频率。
进一步地,所述程序阶段检测器中所述性能指标包括单位周期指令数和单位操作的缓存未命中数,通过单位周期指令数和单位操作的缓存未命中数的变化来检测识别程序的阶段变化。
进一步地,所述奖惩计算器中强化学习训练采用Double Q-learning算法进行训练,具体步骤包括:Q表初始化为零,然后按照如下步骤进行更新:基于检测到的程序工作负载阶段状态,选择Q表中Q值最大的功率上限和非核心频率,或者随机选择功率配置;存储两个Q表,两个Q表使用不同的经验样本集进行更新;在每次迭代中,平均随机地更新其中一个Q表,待更新的Q表将使用来自另一个Q表的值进行更新;使用贝尔曼方程更新Q表,其对应的公式为:
QA(s,a)←QA(s,a)+α(s,a)[r+γQB(s′,a*)-QA(s,a)]
其中,QA(s,a)表示在时间t处于状态s的动作a的Q值;α表示学习率;γ表示折现因子;r表示奖惩;QB(s′,a*)表示另一个Q表的Q值,s′,a*分别表示前获取的状态s′和另一个QA表中状态动作s′下最大Q值对应的动作a*;
奖惩r的计算公式如下:
r=(c×IPC)3/W
其中,IPC表示单位周期指令数;W表示系统功耗;c是一个常数。
进一步地,所述功率控制器中基于RAPL技术和UFS技术重新设置CPU的功率上限和非核心子系统频率。
本发明的有益技术效果是:
本发明提出了一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统,本发明根据应用程序的实时工作负载,动态调整处理器功率上限和非核心子系统频率,使硬件功率配置与运行时动态变化的程序行为匹配;通过强化学习从训练程序中自动探索功率配置空间,根据设置的奖惩信息,不断优化配置空间;最后,强化学习训练得到的策略根据检测到的程序执行时的工作负载动态调整。本发明实现了动态的并行程序能耗的自动优化,且该运行时优化系统的开销可以忽略不计。本发明适用于降低并行应用程序执行时的能耗。
附图说明
本发明可以通过参考下文中结合附图所给出的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分,而且用来进一步举例说明本发明的优选实施例和解释本发明的原理和优点。
图1是本发明基于强化学习的动态并行应用能耗运行时优化系统架构图;
图2是本发明中强化学习算法double Q-learning算法示意图;
图3是本发明中并行程序miniAMR执行过程中的阶段变化图;
图4是本发明中Q表的初始化和训练示意图;
图5是本发明中单个节点并行应用程序的能耗节省和性能损失对比图;其中,图(a)是能耗节省;图(b)是性能损失;
图6是本发明中CascadeLake集群上并行应用程序的能耗节省和性能损失对比图;其中,图(a)是能耗节省;图(b)是性能损失;
图7是本发明中Haswell集群上并行应用程序的能耗节省和性能损失对比图;其中,图(a)是能耗节省;图(b)是性能损失。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,在下文中将结合附图对本发明的示范性实施方式或实施例进行描述。显然,所描述的实施方式或实施例仅仅是本发明一部分的实施方式或实施例,而不是全部的。基于本发明中的实施方式或实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式或实施例,都应当属于本发明保护的范围。
本发明的目的是学习程序执行阶段(状态)到功率硬件配置的映射,使得动态调整的功率配置能够在不显著影响应用程序执行时间的情况下降低并行应用的能耗。因此,本发明提出一种基于强化学习的动态并行应用能耗运行时优化方法及系统,如图1所示,本发明系统主要包括三个部分:程序阶段检测器、奖惩计算器和功率控制器;其中,程序阶段检测器通过轻量级硬件性能计数器监测程序阶段变化,它利用硬件性能计数器统计得到的工作负载,反应运行在处理器上的程序的阶段变化,并测量该阶段应用程序消耗的能量;基于程序阶段检测器测量到的能耗,奖惩计算器计算该程序阶段下使用的功率配置的奖惩。double Q-learning是一种著名的强化学习算法,如图2所示,该算法主要有三部分组成:环境状态、环境反馈的奖惩信息和执行的行为。强化学习的目标是通过与环境的交互过程学习策略以达到奖惩最大化,因此,本发明主要是通过定义计算奖惩的公式实现本发明的目标,即在不显著影响应用程序性能的情况下,降低并行应用的功耗;然后,根据计算得到的奖惩更新存储状态-操作对Q值的Q表;最后,从Q表中选择相应状态中最佳的功率配置,该功率配置被传递给功率控制器,功率控制器重新设置CPU的功率上限和非核心频率。
本发明方法的实现具体包括以下步骤:
步骤1:检测程序阶段的变化。
对于动态的功率管理系统,最重要的就是能够准确地检测到系统中应用程序执行阶段的变化,这样才能及时的根据负载变化动态调整系统的功率配置。应用程序的阶段根据其计算特性可分为两类:计算密集阶段和内存密集阶段。因此,基于强化学习的电源管理系统将应用程序执行阶段建模为使用硬件性能计数器来记录的性能指标。如表1所示,本发明使用单位周期指令数(Instructions Per Cycle,IPC)和单位操作的缓存未命中数(Misses Per Operation,MPO)作为程序执行过程中的性能指标。对于计算密集阶段,每周期指令数(IPC)是常用的性能指标。高IPC值表示程序将大部分用于CPU计算。对于内存受限的工作负载,使用每个操作的未命中率(MPO)作为性能度量,这是从指令数和最后一级缓存未命中数计算得到的。随着MPO值的增加,工作负载变得更受内存限制,因为每个操作的内存访问次数增加,缓存未命中率增加。
表1用于识别阶段变化的性能指标
图3显示了miniAMR并行程序执行时的能耗分布和硬件性能计数器的值,图中x轴表示时间线,y轴表示以最大值和最小值归一化到每个度量的数据。从图3中可以看出,有十个明显可识别的阶段,这些阶段是较短的计算密集型阶段,其特点是CPU能耗高、IPC高、DRAM能量低、MPO低,出现在CPU能量低、IPC低、DRAM能量高、MPO高的内存密集型阶段之间。因此,从内存密集型阶段到计算密集型阶段的转换可以通过IPC的上升或MPO的下降来识别。此外,这些性能指标被离散化,对应double Q-learning强化学习算法中有限的状态(state)空间。本发明中使用Perf(内置于Linux内核源码树中的性能剖析(profiling)工具)每3秒统计一次性能计数器。采样时间间隔可以由用户自定义,并不会影响本发明方法的本质。
步骤2:初始化强化学习中存储状态-操作对Q值的Q表。
对于一系列程序状态(state),S={S1,S2...,Sn},强化学习系统采取一系列操作(action),A={A1,A2,…Am},这些操作是硬件系统支持的功率配置选项,在本方法中采用的是功率上限和非核心频率。如图4所示,在基于Double Q-learning的强化学习算法中,划分的状态-操作对的Q值存储在Q表中。例如,将MPO值(0到1.0之间)划分为十个区域,其中每个区域对应于一个程序系统状态阶段,功率配置就是强化学习算法的操作,Q表初始化为零,然后根据与环境的交互更新Q表。
步骤3:更新存储程序状态-操作(state-action)对Q值的强化学习Q表。
本发明使用强化学习中的Double Q-learning算法,这是一种无模型的强化学习算法,该算法学习一个策略,用于指导能耗运行时优化系统根据检测的程序执行阶段,动态调整功率硬件配置。本发明提出的基于RL的功率优化算法即基于强化学习的并行程序能耗优化算法的伪代码如下所示。
上述算法将每个状态-操作对的Q值存储在Q表中。Q表初始化为零,然后按照如下步骤进行更新。
(1)基于检测到的程序阶段状态,功率控制器选择Q表中Q值最大的功率封顶和非核心频率,或者随机选择电源配置,这是一种可以快速探索参数空间的贪心机制。参数可以基于启发式自适应调整。例如,在训练阶段∈设置为0.3,在实际使用中设置为0.2。
(2)为避免对于Q值的过估计,Double Q-learning存储两个Q表,两个Q表使用不同的经验样本集进行更新。因此,在每次迭代中,平均随机地更新其中一个Q表。更新的这个Q表将使用来自另一个Q表的值进行更新,该值在算法1第22行中描述,这是对这个动作的值的无偏估计。如算法1第23行所示,算法使用贝尔曼方程更新Q表,其中,QA(s,a)给出在时间t处于状态s的动作a的Q值;学习率α∈[0,1]是权衡与环境交互反馈的新旧奖惩,为了平衡新旧奖惩,本发明设置α为0.7;γ是折现因子,用于设置未来的可能奖惩相对于当前获得的奖惩的重要性,为了充分考虑将来的奖惩,本发明设置γ为0.8;r是系统反馈的奖惩信息,Double Q-learning算法的最终目的就是最大化累计的奖惩r。而本发明的主要目的就是在不显著影响应用程序执行时间的情况下降低多核处理器的能耗。因此,为了更好的权衡性能和能耗,利用EDnP(Energy-delay product)将双目标(性能和能耗)转化为单个度量:
EDnP=E×Dn
其中,E是能量,D是电路延迟,n是一个非负整数。参数n意味着电路延迟减少1%对应于能量消耗增加n%。因此,不同的n值代表了对不同程度的可交付性能。对于并行应用程序,n为2的ED2P的公式更合适,因为更多延迟因子能够进一步强调性能。(c×IPC)3/W(单位循环的指令数的平方除以能耗)可以用作直接的逆ED2P度量,并且适用于每个指令,这样就能实现不明显著影响应用程序执行时间的情况下降低应用程序能耗,将其作为强化学习中的奖惩r:
r=(c×IPC)3/W
其中,c是一个常数,确保奖惩随着IPC单调递增;W表示系统功耗。
步骤4:根据训练相对稳定的Q表进行在线能耗管理。根据检测到的程序状态,能耗管理系统在Q表中选择相应的状态下Q值最大的功率配置。例如,图4中当MPO为“0.1”时,最大的Q值为0.83,因此,选择的功率上限为110W。该功率配置被传递给功率控制器,功率控制器基于RAPL技术和UFS(uncore frequency scaling)技术修改相应的MSR重新设置CPU的功率上限和非核心子系统的频率。
下面对本发明产生的技术效果进行说明。
1、方法评估
使用两个具有不同Intel CPU体系结构的HPC群集来评估,如表2所示,主要评估平台由4个计算节点组成,该集群的处理器使用Intel CascadeLake架构,每个节点配置两个20核Intel Xeon Gold 6230处理器(4个节点160核)和256GB内存。该集群支持13个非核心频率级别,从1.2GHz到2.4GHz,步长为0.1GHz。整个芯片的CPU的功率限制为65W到125W(Thermal design power,TDP)。除了可扩展性实验之外,其他实验都是在CascadeLake节点上进行的。为了验证方法的可扩展性,将方法应用于具有16节点的计算集群,该集群的处理器使用Intel Haswell架构,每个节点都有一个12核Intel Xeon E5-2678v3处理器和48GBRAM。该集群支持19个非核心频率级别,从1.2GHz到3.0GHz,步长为0.1GHz。整个CPU的功率上限可以设置为61W到120W(TDP)。将硬件配置的最小值设置为硬件配置提供的中间值,因为使用较低的设置会对应用程序性能产生严重的负面影响。
表2硬件平台和强化学习(RL)设置
使用perf性能工具对硬件性能事件进行采样,并且每3秒读取一次应用程序消耗的能量。这个取样间隔可以提供准确的能源消耗测量,并让功率运行时优化系统快速应对应用程序行为的变化。但是,采样间隔可以更改,并不影响本发明方法的工作机制。所有监测和控制能耗的代码都是用C语言编写的,并且是独立地部署到每个节点。因此,每个节点的相变检测和电源配置开销非常小并且是独立进行的。
使用在NAS并行基准中的8个程序训练功率优化策略。其中,EP是计算密集型基准,BT、SP和LU是最后一级缓存密集型基准,MG、FT、IS和CG是内存绑定基准。在训练过程中,在执行NAS并行程序时,基于RL的算法利用根据程序状态和奖惩学习和更新Q表。
为了准确评估基于强化学习的功率管理方法的泛化能力,将训练过的系统应用到11个在训练阶段没有使用过新的基准。这些测试基准包括来自ECP的AMG、CoMD、miniFE、miniQMC、HPCCG、NEKbone、miniAMR,来自LLNL的LULESH,Sweep3D,LeNet-5和Keras-CNN。其中,Sweep3D是DOE(Department of Energy)加速战略计算计划应用程序使用的核心算法,LeNet-5和Keras-CNN包含许多深度学习工作负载中使用的关键算法。图5是单个节点并行应用程序的能耗节省和性能损失对比图。
从图5中可以看出,训练得到的功率管理策略在各个并行应用程序中都是有效的。当NAS训练基准用于测试时,实现了平均12.5%的节能,平均性能降低不到3%。当在新基准程序上进行测试时,本发明方法实现了12%的平均节能,应用程序性能下降不到3%。可以看出,即使执行从未参加强化学习训练的程序,也能实现相似的优化效果,这是因为从训练中学习的Q值通常可以跨基准进行移植,并且本发明方法在程序运行时不断地动态观察更新Q值。这表明本发明具有良好的泛化能力,能够广泛的应用于不同的程序。对于大多数测试用例,本发明方法在性能降低的情况下实现了能耗节省。此外,该方法针对计算受限和内存受限的应用程序都实现了节能。例如,像EP、BT、SP、MiniAMR、miniQMC和Nekbone这样的应用程序比其他应用程序有更长的CPU-bound阶段。本发明方法通过以较高的功率上限和较低的非核心频率运行应用程序来降低能耗。相比之下,针对内存受限的应用程序,本发明方法动态地选择较低的功率上限,以降低核心频率,但增加非核心频率,因为内存访问是瓶颈,本发明方法生成的自适应策略允许以很小的性能为代价减少大多数测试用例的能耗。
进一步地,将本发明方法分别应用于4节点和16个节点集群,从而在不同的分布式计算环境中评估。在每个计算节点上,运行一个分布式的RL系统,在节点级进行功率优化监控和执行。在每个计算集群中,评估不同的计算节点数的性能损失和能耗节省情况。图6和图7分别显示了4节点CascadeLake集群和16节点Haswell集群上并行应用程序的能耗节省和性能损失的对比结果。从图中可以看出,本发明方法在两个计算集群中表现出良好的可扩展性和可移植性性能。随着计算节点数量的增加,它提供了类似的能量节省,只产生很少的性能损失。对于CascadeLake集群,当使用单个计算节点时,平均能量降低和性能下降分别为12%和2.5%。当使用2、3、4节点时,能量减少分别为10%、10.5%、11%,性能损失分别为2%、2.5%、1.5%。也观察到16节点Haswell集群的类似趋势。在单个节点上,Haswell集群上的平均能量减少为10%。当使用多个计算节点时,能量减少在8%和11%。
综上,功率和能耗是多核处理器的一级设计约束,也是下一代超级计算机研发的主要限制因素。虽然现代处理器设计提供了各种各样的机制来优化电源和能源,但如何才能最好地使用它们仍然是个未知数。因此,本发明提出了一种新的动态并行应用程序能耗运行时优化方法及系统,结合功率上限封顶技术和非核心频率缩放技术,使硬件功率配置文件与运行时动态变化的程序行为匹配;通过强化学习从训练程序中自动探索能量性能优化空间,学习硬件功率、程序特性、能耗和程序运行时之间复杂的关系;最后,根据强化学习算法训练得到的策略来动态调整CPU的功率上限和非核心频率,以匹配不断变化的程序执行阶段,实现在不显著影响应用程序性能的同时降低系统的能耗。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (9)
1.一种基于强化学习的动态并行应用程序能耗运行时优化方法,其特征在于,包括下述步骤:
步骤一、利用硬件性能计数器记录性能指标来动态检测程序的工作负载,工作负载的变化表示运行在处理器上程序的阶段变化,并测量每个阶段处理器的能耗;其中,程序的阶段根据其计算特性分为两类:计算密集阶段和内存密集阶段;
步骤二、基于测量到每个阶段处理器的能耗计算工作负载和功率配置下的奖惩,并根据计算得到的奖惩更新Q表,所述Q表用于存储多个状态-操作对的Q值,从而基于强化学习训练得到稳定的Q表;其中,所述功率配置包括功率上限和非核心频率;强化学习训练采用Double Q-learning算法进行训练,具体步骤包括:Q表初始化为零,然后按照如下步骤进行更新:基于检测到的程序工作负载阶段状态,选择Q表中Q值最大的功率上限和非核心频率,或者随机选择功率配置;存储两个Q表,两个Q表使用不同的经验样本集进行更新;在每次迭代中,平均随机地更新其中一个Q表,待更新的Q表将使用来自另一个Q表的值进行更新;使用贝尔曼方程更新Q表,其对应的方程为:
QA(s,a)←QA(s,a)+α(s,a)[r+γQB(s',a*)-QA(s,a)]
其中,QA(s,a)表示在时间t处于状态s的动作a的Q值;α表示学习率;γ表示折现因子;r表示奖惩;QB(s′,a*)表示另一个Q表的Q值,s′,a*分别表示前获取的状态s′和另一个QA表中状态动作s′下最大Q值对应的动作a*;
步骤三、从训练得到的Q表中选择相应工作负载状态中最佳的功率配置,重新设置CPU的功率上限和非核心频率。
2.根据权利要求1所述的一种基于强化学习的动态并行应用程序能耗运行时优化方法,其特征在于,步骤一中所述性能指标包括单位周期指令数和单位操作的缓存未命中数。
3.根据权利要求2所述的一种基于强化学习的动态并行应用程序能耗运行时优化方法,其特征在于,步骤一中通过单位周期指令数和单位操作的缓存未命中数的变化来检测识别程序的阶段变化。
4.根据权利要求3所述的一种基于强化学习的动态并行应用程序能耗运行时优化方法,其特征在于,奖惩r的计算公式如下:
r=(c×IPC)3/W
其中,IPC表示单位周期指令数;W表示系统功耗;c是一个常数。
5.根据权利要求4所述的一种基于强化学习的动态并行应用程序能耗运行时优化方法,其特征在于,步骤三中基于RAPL技术和UFS技术重新设置CPU的功率上限和非核心频率。
6.一种基于强化学习的动态并行应用程序能耗运行时优化系统,其特征在于,包括程序阶段检测器、奖惩计算器和功率控制器;其中,
所述程序阶段检测器用于利用硬件性能计数器记录性能指标来动态检测程序的工作负载,工作负载的变化表示运行在处理器上程序的阶段变化,并测量每个阶段处理器的能耗;其中,程序的阶段根据其计算特性分为两类:计算密集阶段和内存密集阶段;
所述奖惩计算器用于基于测量到每个阶段处理器的能耗计算工作负载和功率配置下的奖惩,并根据计算得到的奖惩更新Q表,所述Q表用于存储多个状态-操作对的Q值,从而基于强化学习训练得到稳定的Q表;其中,所述功率配置包括功率上限和非核心频率;强化学习训练采用Double Q-learning算法进行训练,具体步骤包括:Q表初始化为零,然后按照如下步骤进行更新:基于检测到的程序工作负载阶段状态,选择Q表中Q值最大的功率上限和非核心频率,或者随机选择功率配置;存储两个Q表,两个Q表使用不同的经验样本集进行更新;在每次迭代中,平均随机地更新其中一个Q表,待更新的Q表将使用来自另一个Q表的值进行更新;使用贝尔曼方程更新Q表,其对应的方程为:
QA(s,a)←QA(s,a)+α(s,a)[r+γQB(s',a*)-QA(s,a)]
其中,QA(s,a)表示在时间t处于状态s的动作a的Q值;α表示学习率;γ表示折现因子;r表示奖惩;QB(s′,a*)表示另一个Q表的Q值,s′,a*分别表示前获取的状态s′和另一个QA表中状态动作s′下最大Q值对应的动作a*;
所述功率控制器用于从训练得到的Q表中选择相应工作负载状态中最佳的功率配置,重新设置CPU的功率上限和非核心频率。
7.根据权利要求6所述的一种基于强化学习的动态并行应用程序能耗运行时优化系统,其特征在于,所述程序阶段检测器中所述性能指标包括单位周期指令数和单位操作的缓存未命中数,通过单位周期指令数和单位操作的缓存未命中数的变化来检测识别程序的阶段变化。
8.根据权利要求7所述的一种基于强化学习的动态并行应用程序能耗运行时优化系统,其特征在于,所述奖惩计算器中奖惩r的计算公式如下:
r=(c×IPC)3/W
其中,IPC表示单位周期指令数;W表示系统功耗;c是一个常数。
9.根据权利要求8所述的一种基于强化学习的动态并行应用程序能耗运行时优化系统,其特征在于,所述功率控制器中基于RAPL技术和UFS技术重新设置CPU的功率上限和非核心子系统频率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110810963.8A CN113448425B (zh) | 2021-07-19 | 2021-07-19 | 一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110810963.8A CN113448425B (zh) | 2021-07-19 | 2021-07-19 | 一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448425A CN113448425A (zh) | 2021-09-28 |
CN113448425B true CN113448425B (zh) | 2022-09-09 |
Family
ID=77816520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110810963.8A Active CN113448425B (zh) | 2021-07-19 | 2021-07-19 | 一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448425B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130769A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频方法、频率调节神经网络的训练方法及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117255A (zh) * | 2018-07-02 | 2019-01-01 | 武汉理工大学 | 基于强化学习的异构多核嵌入式系统能耗优化调度方法 |
CN109324875A (zh) * | 2018-09-27 | 2019-02-12 | 杭州电子科技大学 | 一种基于强化学习的数据中心服务器功耗管理与优化方法 |
CN111444009A (zh) * | 2019-11-15 | 2020-07-24 | 北京邮电大学 | 一种基于深度强化学习的资源分配方法及装置 |
CN112433853A (zh) * | 2020-11-30 | 2021-03-02 | 西安交通大学 | 一种面向超级计算机数据并行应用的异构感知数据划分方法 |
CN112732436A (zh) * | 2020-12-15 | 2021-04-30 | 电子科技大学 | 一种多核处理器-单图形处理器的深度强化学习加速方法 |
CN112764932A (zh) * | 2021-01-27 | 2021-05-07 | 西安电子科技大学 | 基于深度强化学习的计算密集型工作负载高能效分配方法 |
CN112799828A (zh) * | 2020-12-16 | 2021-05-14 | 山西西电信息技术研究院有限公司 | 一种基于强化学习的云平台资源调度策略 |
CN112953286A (zh) * | 2021-03-19 | 2021-06-11 | 华南理工大学 | 基于Q-Learning算法同容量三相逆变器并联环流抑制方法 |
CN112954736A (zh) * | 2019-12-10 | 2021-06-11 | 深圳先进技术研究院 | 基于策略的无线携能物联网设备的计算卸载 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098277B2 (en) * | 2012-08-30 | 2015-08-04 | Dell Products L.P. | Information handling system configuration for power system output capability |
US10222849B2 (en) * | 2016-08-29 | 2019-03-05 | International Business Machines Corporation | Power phase energy level monitoring and management in a data center |
KR102039650B1 (ko) * | 2018-04-10 | 2019-11-01 | 국방과학연구소 | 인지 무선 애드혹 네트워크에서의 주파수 자원 할당 방법 및 장치 |
CN109974737B (zh) * | 2019-04-11 | 2020-01-31 | 山东师范大学 | 基于安全疏散标志和强化学习结合的路径规划方法及系统 |
CN110191489B (zh) * | 2019-05-17 | 2020-07-24 | 北京科技大学 | 一种超密集网络中基于强化学习的资源分配方法及装置 |
CN110830560A (zh) * | 2019-10-25 | 2020-02-21 | 东华大学 | 一种基于强化学习的多用户移动边缘计算迁移方法 |
CN111953759B (zh) * | 2020-08-04 | 2022-11-11 | 国网河南省电力公司信息通信公司 | 基于强化学习的协同计算任务卸载和迁移的方法及装置 |
CN111934335B (zh) * | 2020-08-18 | 2022-11-18 | 华北电力大学 | 一种基于深度强化学习的集群电动汽车充电行为优化方法 |
-
2021
- 2021-07-19 CN CN202110810963.8A patent/CN113448425B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117255A (zh) * | 2018-07-02 | 2019-01-01 | 武汉理工大学 | 基于强化学习的异构多核嵌入式系统能耗优化调度方法 |
CN109324875A (zh) * | 2018-09-27 | 2019-02-12 | 杭州电子科技大学 | 一种基于强化学习的数据中心服务器功耗管理与优化方法 |
CN111444009A (zh) * | 2019-11-15 | 2020-07-24 | 北京邮电大学 | 一种基于深度强化学习的资源分配方法及装置 |
CN112954736A (zh) * | 2019-12-10 | 2021-06-11 | 深圳先进技术研究院 | 基于策略的无线携能物联网设备的计算卸载 |
CN112433853A (zh) * | 2020-11-30 | 2021-03-02 | 西安交通大学 | 一种面向超级计算机数据并行应用的异构感知数据划分方法 |
CN112732436A (zh) * | 2020-12-15 | 2021-04-30 | 电子科技大学 | 一种多核处理器-单图形处理器的深度强化学习加速方法 |
CN112799828A (zh) * | 2020-12-16 | 2021-05-14 | 山西西电信息技术研究院有限公司 | 一种基于强化学习的云平台资源调度策略 |
CN112764932A (zh) * | 2021-01-27 | 2021-05-07 | 西安电子科技大学 | 基于深度强化学习的计算密集型工作负载高能效分配方法 |
CN112953286A (zh) * | 2021-03-19 | 2021-06-11 | 华南理工大学 | 基于Q-Learning算法同容量三相逆变器并联环流抑制方法 |
Non-Patent Citations (2)
Title |
---|
"基于强化学习的动态并行机调度研究";陈杨阳;《中国优秀硕士学位论文全文数据库》;20200531;第1-76页 * |
"改进的动态A*-Q-Learning 算法及其在无人机航迹规划中的应用";程传斌 等;《现代信息科技》;20210510;第5卷(第9期);第1-6页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113448425A (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289185B2 (en) | Apparatus and method for efficient estimation of the energy dissipation of processor based systems | |
Kasture et al. | Rubik: Fast analytical power management for latency-critical systems | |
Ebrahimi et al. | Coordinated control of multiple prefetchers in multi-core systems | |
Curtis-Maury et al. | Prediction models for multi-dimensional power-performance optimization on many cores | |
Curtis-Maury et al. | Prediction-based power-performance adaptation of multithreaded scientific codes | |
US8006108B2 (en) | Dynamic selection of group and device power limits | |
Li et al. | Strategies for energy-efficient resource management of hybrid programming models | |
US20120297232A1 (en) | Adjusting the clock frequency of a processing unit in real-time based on a frequency sensitivity value | |
Heirman et al. | Near-side prefetch throttling: Adaptive prefetching for high-performance many-core processors | |
CN110832434B (zh) | 用于处理器的频率调控的方法和系统 | |
Santriaji et al. | GRAPE: Minimizing energy for GPU applications with performance requirements | |
US10204056B2 (en) | Dynamic cache enlarging by counting evictions | |
EP2798570A1 (en) | Multi-level cpu high current protection | |
Heirman et al. | Undersubscribed threading on clustered cache architectures | |
Wang et al. | Using per-loop CPU clock modulation for energy efficiency in OpenMP applications | |
CN113448425B (zh) | 一种基于强化学习的动态并行应用程序能耗运行时优化方法及系统 | |
Rotem et al. | H-EARtH: Heterogeneous multicore platform energy management | |
Kalani et al. | Instruction criticality based energy-efficient hardware data prefetching | |
Cicotti et al. | Efficient speed (ES): Adaptive DVFS and clock modulation for energy efficiency | |
Korkmaz et al. | Towards Dynamic Green-Sizing for Database Servers. | |
Gupta et al. | Timecube: A manycore embedded processor with interference-agnostic progress tracking | |
Wang et al. | Evaluating the energy consumption of openmp applications on haswell processors | |
Hebbar et al. | Pmu-events-driven dvfs techniques for improving energy efficiency of modern processors | |
Gupta et al. | DR-SNUCA: An energy-scalable dynamically partitioned cache | |
Shifer et al. | Low-latency adaptive mode transitions and hierarchical power management in asymmetric clustered cores |
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 |