CN113254021B - 一种编译器协助的强化学习多核任务分配算法 - Google Patents

一种编译器协助的强化学习多核任务分配算法 Download PDF

Info

Publication number
CN113254021B
CN113254021B CN202110413026.9A CN202110413026A CN113254021B CN 113254021 B CN113254021 B CN 113254021B CN 202110413026 A CN202110413026 A CN 202110413026A CN 113254021 B CN113254021 B CN 113254021B
Authority
CN
China
Prior art keywords
task
program
core
state
temperature
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
CN202110413026.9A
Other languages
English (en)
Other versions
CN113254021A (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.)
Ningbo Yongyi Technology Co ltd
Original Assignee
Yunnan University YNU
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 Yunnan University YNU filed Critical Yunnan University YNU
Priority to CN202110413026.9A priority Critical patent/CN113254021B/zh
Publication of CN113254021A publication Critical patent/CN113254021A/zh
Application granted granted Critical
Publication of CN113254021B publication Critical patent/CN113254021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种编译器协助的强化学习多核任务分配算法,该算法基于强化学习,每当任务进入系统,代码编译优化工具LLVM会对程序源代码进行分析优化过程中,可以产生的类似汇编的中间文件,本发明对中间文件进行一系列处理结合输入的大小来作为程序的特征,同时获取系统中各个内核的占用率、当前运行频率、当前核的温度和短时间的温度变化量,并对四个变量进行处理来作为计算机系统状态信息,结合计算机系统状态信息和获取的将要运行程序的特征作为强化学习模型中的状态,智能体根据当前的状态来选择合适的核来运行任务并且为内核设置频率。本发明能在保证性能约束的条件下有效降低系统温度,并且使温度和性能均保持在很稳定的状态。

Description

一种编译器协助的强化学习多核任务分配算法
技术领域
本发明涉及计算机系统优化领域,具体为一种编译器协助的强化学习多核任务分配算法。
背景技术
在传统的任务调度算法中,计算机会观察内核的负载情况,用传统的优化算法来选取合适核来分配任务,同时系统会自适应的根据负载情况动态调节内核频率从而保证负载均衡以及程序的性能。但是随着计算机内核结构向着多核、异构发展,传统的优化算法变为一个困难问题。随着机器学习算法的兴起,市面上出现了很多基于机器学习的任务调度算法,首先是一些基于监督学习的算法:线性回归,分类算法来进行任务映射以及内核频率设置,虽然在特定的情况下取得较好的效果,但是这些模型的效果过分依赖于训练数据,很难获取较全的训练数据,此外模型的扩展性太差。
强化学习的出现,为各类动态决策问题带来了质的飞跃:人们熟知的强化学习算法玩很多小游戏完胜人类、基于强化学习的自动驾驶以及基于强化学习的推荐系统等等,强化学习强调在环境的交互中学习动态适应性很强,以及无数据依赖,这两大特性完美契合了我们计算机系统任务的调度决策问题,所以相继也出现了一些比较优秀的基于强化学习的任务调度算法,我们在分析了当前存在的算法的优缺点:有些算法状态建模过于简单不能很好的反应系统的当前状态;有些算法虽然系统状态考虑较为全面,但是带来了状态维度较大问题导致计算开销很大;有些算法虽然同时考虑了温度和性能,但并未实现温度和性能的权衡。
基于当前已有算法存在的问题,本发明提出了一种基于强化学习的性能约束下的具有温度意识的多核任务分配算法,即一种编译器协助的强化学习多核任务分配算法,该算法可在三种不同的计算机系统中进行验证,能在保证性能约束的前提下最大限度降低了系统温度。
发明内容
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明提供一种编译器协助的强化学习多核任务分配算法,包括以下步骤:
步骤1:对于将要在系统中运行的程序i,使用LLVM对其源代码进行分析编译,并产生中间文件;
步骤2:对LLVM编译产生的中间文件进行处理;
步骤3:获取将要运行程序i输入为j时的归一化输入
Figure GDA0003559979940000021
步骤4:结合利用率Ucore_i和内核的当前运行频率Fcore_i来反应内核的负载情况;
步骤5:表示出当前内核的温度状态;
步骤6:将获取的程序的信息T_fi、输入大小
Figure GDA0003559979940000022
系统中所有内核的温度情况Ti t、内核的负载情况
Figure GDA0003559979940000023
以及任务i输入为j对应的性能约束
Figure GDA0003559979940000024
放到一起组成一个维度为2n+3的向量作为强化学习中的state;
步骤7:强化学习的agent根据当前的state来计算每个动作的q值;
步骤8:更新q值;
步骤9:根据q值使用ε-greedy策略来选择动作action:
步骤10:将要执行的任务的affinity设置为corei,并且将corei的运行频率设置为Freqstep_i对应的频率;
步骤11:根据程序运行结束时获取所有核的当前温度,以及程序的运行时间run_timetask_i,来计算本次决策的回报值reward;
步骤12:计算好的reward反馈给Agent,来引导Agent学习到更优的调度策略;
步骤13:一旦有任务进入系统,则获取新的状态执行以上过程。
作为本发明的一种优选技术方案,包括以下设计流程:
S1.1:定义状态空间;
S1.2:定义动作空间:我们的动作为把任务放到合适的内核去运行并设置内核的运行频率,所以动作空间n*m,其中n为内核的数量,m为可用的运行频率级数。
S1.3:制定能满足用户性能约束且有效降低系统温度的奖励函数;
S1.4:神经网络构建;
S1.5:记忆库构建。
作为本发明的一种优选技术方案,包括以下工作流程:
S2.1:任务进入系统,提取通过LLVM编译产生的中间文件的特征作为程序特征,同时读取系统的负载信息、温度信息、程序输入大小;
S2.2:将S2.1中的信息进行预处理后作为当前的状态;
S2.3:使用S2.2的状态通过神经网络来计算当前状态下所有动作的收益,根据贪婪策略来选择任务映射的动作:ε的概率选择收益最大的动作,1-ε的概率随机选择动作;
S2.4:根据S2.3的动作来设置任务的亲和性将任务绑定到指定的内核,并为内核设置运行频率;
S2.5:任务运行结束获取当前的温度信息和任务的实际运行时间来对此次的决策进行评价,然后获取新的系统状态;
S2.6:将任务决策前后的信息存入记忆库,每条信息包括:任务进入时的状态信息、选择的动作、系统对动作的评价以及运行结束时新的状态;
S2.7:重复S2.1到S2.6的任务分配过程,每当记忆达到一定的量后使用梯度下降更新策略。
作为本发明的一种优选技术方案,根据观测到的系统状态、将要运行程序的特征、用户的性能约束以及程序输入,动态选择合适的内核来运行刚刚进入系统的线程。
作为本发明的一种优选技术方案,将要运行程序的特征包括LLVM编译过程中产生的中间文件中提取的特征信息和程序的输入信息。
作为本发明的一种优选技术方案,所述S2.1中,通过操作系统获取底层的信息,获取的底层信息作为当前的系统状态,并根据当前的状态来选择任务的映射方式。
作为本发明的一种优选技术方案,获取的底层信息包括当前内核的运行频率、内核的利用率、内核的当前温度和内核短时间内的温度变化量。
作为本发明的一种优选技术方案,输入为一个新的任务,输出为任务的映射策略。
作为本发明的一种优选技术方案,任务映射后根据系统的温度以及任务实际的运行时间来评价此次任务映射策略的好坏。
本发明的有益效果是:该种编译器协助的强化学习多核任务分配算法着重运用强化学习的思想,来进行任务映射,旨在平衡系统的负载,在保证性能的同时有效降低系统温度,最终达到提高系统稳定性和芯片寿命延长的统一性。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明一种编译器协助的强化学习多核任务分配算法的系统模型示意图;
图2是本发明一种编译器协助的强化学习多核任务分配算法的流程图;
图3是在本发明一种编译器协助的强化学习多核任务分配算法下运行九种任务的性能满足情况示意图;
图4是本发明一种编译器协助的强化学习多核任务分配算法与其他三种算法的峰值温度变化对比图;
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明可根据用户的性能需求来设置内核的运行频率并选择当前最合适的核来运行任务,达到保证性能的前提下来最大程度降低系统的峰值温度,从而提高系统的稳定性同时延长芯片寿命。
实施例:如图1和图2所示,为实现上述目的,本发明提出一种基于强化学习的性能约束下的具有温度意识的多核任务分配算法,包括以下步骤:
步骤1:对于将要在系统中运行的程序i,本发明会使用LLVM(代码优化编译工具)对其源代码进行分析编译,并产生中间.ll后缀的类似汇编代码的中间文件;
步骤2:LLVM编译产生的中间文件进行处理:读取所有要处理的语句总数,以及每种类型语句所占的比例来作为程序的特征,通过实验发现所提取的程序特征中,程序执行语句总数对最终的实验结果影响最大,并且各个语句的占比对效果影响不大,所以从权衡计算开销和最终效果的角度出发,本发明仅使用归一化程序所要执行语句的总数来作为程序特征,程序i的特征表示为:
Figure GDA0003559979940000061
其中T_num_opi为程序i通过LLVM编译产生中间文件中统计到的所有要执行操作语句总数,T_num_opmax为运行过的所有程序中通过LLVM编译产生中间文件中统计到的所有要执行操作语句总数的最大值。
步骤3:获取将要运行程序i输入为j时的归一化输入
Figure GDA0003559979940000071
表示方式如下
Figure GDA0003559979940000072
其中
Figure GDA0003559979940000073
表示为程序i输入为j时的输入数据量的大小,表示
Figure GDA0003559979940000074
为程序i的所有输入中输入数据量的最大值。通过对parse benchmark中多个不同输入的数据量大小相同的几个程序进行分析,发现对比输入构成的字符串的大小可以有效区分输入,所以当程序不同的输入的数据量大小一致时,先将n个不同的输入按输入构成的字符串从小到大排序,程序i排在第j的输入的归一化表示方式为:
Figure GDA0003559979940000075
步骤4:算法中我们结合利用率Ucore_i和内核的当前运行频率Fcore_i来反应内核的负载情况:
Figure GDA0003559979940000076
其中wu、wf为表示核的利用率和当前运行频率在表征当前系统压力中的重要性权重,满足:wu+wf=1(该方法中:wu=0.7,wf=0.3)。
步骤5:采用如下方法来表示当前内核的温度状态;
Ti t=(Ti(t)-Ti(t-Δt)×e-bΔt)/(1-e-bΔt)
其中Ti(t)为核i在t时刻的温度,Ti(t-Δt)为核i在t-Δt时刻的温度,b是由处理器决定的常数,Δt表示间隔时间,该表示方式涵盖了系统的当前温度和温度变化趋势,能较好的反应当前的系统温度情况,为了使温度状态与合并的系统状态
Figure GDA0003559979940000081
处于相同的数值范围,本发明使用系统的最大阈值温度Tthreshold对当前温度状态进行归一化:
Figure GDA0003559979940000082
步骤6:将获取的程序的信息T_fi、输入大小
Figure GDA0003559979940000083
系统中所有内核的温度情况Ti t、内核的负载情况
Figure GDA0003559979940000084
以及任务i输入为j对应的性能约束
Figure GDA0003559979940000085
放到一起组成一个维度为2n+3的向量作为强化学习中的state。
步骤7:所述state表示为:
Figure GDA0003559979940000086
步骤8:强化学习的agent根据当前的state来计算每个动作的q值。
步骤9:q值的计算公式为:
Q(s,a)=f(s,a,w)
其中Q(s,a)表示为状态为s采取动作a的q值,w为神经网络的权重参数,所使用的神经网络的结构为三层结构:输入层、隐藏层、输出层。
步骤10:q值更新公式表示为:
Q(s,a)←Q(s,a)+α[r+γmaxa'Q(s',a')-Q(s,a)]
其中Q(s,a)表示为状态为s采取动作a的q值,α为学习率,γ为折扣率。
步骤11:q值更新:因为Agent是在与系统的交互中来学习最优任务分配策略,选择动作的q值是通过反复迭代而来,传统的q-learning中q值的迭代更新实际上是在重复更新一个表格,该表存储了所有状态下每个的动作对应的q值,而表格更新得方式只适用于状态动作空间均较小的情况,面对连续的状态空间时,会带来内存空间开销过大,所以我们使用神经网络来逼近q值,对应的神经网络的更新公式为(更新方式为对loss进行梯度下降来更新w):
loss=(r+γmaxa'Q(s',a',w)-Q(s,a,w))2
步骤12:根据q值使用ε-greedy策略来选择动作action:Agent以ε(0<ε<=1)的概率选择q值最大的动作,以1-ε的概率来随机选择动作(探索更优的动作)。
步骤13:action表示为:actioni=(corei,Freqstep_i),动作空间表示为n×m,其中n为核的个数,m为内核可用频率梯度。
步骤14:将要执行的任务的affinity设置为corei,并且将corei的运行频率设置为Freqstep_i对应的频率。
步骤15:程序运行结束时获取所有核的当前温度,以及程序的运行时间run_timetask_i,来计算本次决策的reward,计算公式为:
Figure GDA0003559979940000091
其中x分情况讨论:
Figure GDA0003559979940000092
其中Mean_temi-1为上次任务运行结束时的平均温度,Action_temi为本次任务运行所在核的温度,Lctask_i为任务taski的性能约束。
步骤16:计算好的reward反馈给Agent,来引导Agent学习到更优的调度策略。
步骤17:一旦有任务进入系统,则获取新的状态执行以上过程。
为了使本发明的目的、技术方案和有益效果更加清楚,下面将结合附图,对本次发明的优选实施例进行详细描述。
有效的任务分配算法对每台计算机来说都是必不可少的,该领域最近的研究中,典型的模型是获取sensors以及一些底层性能计数器的值来建模状态,根据当前的系统状态来选择任务映射的核,再通过要优化的指标(温度、性能、功耗、功效等)来进行对此次的决策进行反馈,从而引导调度算法学习到好的任务映射策略。
本发明设计流程:
1、建立强化学习任务映射模型
考虑一个有n个内核的计算机,计算机不定时进入新的计算任务,只要有新任务进入系统调度算法要根据当前系统的状态来选择合适的内核来分配任务。
S1.1定义状态空间:任务进入系统时,我们会获取所有内核的负载信息、温度信息、并对这些信息进行归一化处理后和程序的特征以及程序输入组成的向量来表示当前的系统状态,作为任务映射的基本依据。
S1.2定义动作空间:我们的动作为把任务放到合适的内核去运行,所以动作空间为内核的数量n。
S1.3制定能满足用户性能约束且有效降低系统温度的奖励函数:奖励是为了算法选到能使最高温度较低的核来运行任务,且能选择到合适的频率来满足用户性能要求。
S1.4神经网络构建:构建一个简单的三层神经网络(DNN),用于存储更新我们的任务映射策略。
S1.5记忆库构建:在本发明中,在核心的算法控制部分,我们设置了一个记忆库,用于存储任务在决策过程中的信息,因为我们策略的更新不是每次完成任务映射都更新,而是每完成一定量的任务后更新一次策略:保持策略动态更新的同时减小系统开销。
2、在真实的计算机中使用我们的任务分配算法
本发明在真实系统中的具体工作流程:
步骤S2.1:任务进入系统,我们提取通过LLVM编译产生的中间文件的特征作为程序特征,同时读取系统的负载信息、温度信息、程序输入大小。
步骤S2.2:将步骤S2.1中的信息进行预处理后作为当前的状态。
步骤S2.3:使用S2.2的状态通过神经网络来计算当前状态下所有动作的收益,根据贪婪策略来选择任务映射的动作:ε的概率选择收益最大的动作,1-ε的概率随机选择动作。
步骤S2.4:根据S2.3的动作来设置任务的亲和性将任务绑定到指定的内核,并为内核设置运行频率。
步骤S2.5:任务运行结束获取当前的温度信息和任务的实际运行时间来对此次的决策进行评价,然后获取新的系统状态。
步骤S2.6:将任务决策前后的信息存入记忆库,每条信息包括:任务进入时的状态信息、选择的动作、系统对动作的评价以及运行结束时新的状态。
步骤S2.7:重复S2.1到S2.6的任务分配过程,每当记忆达到一定的量后使用梯度下降更新策略。
当新的程序进入系统时我们使用当前的策略来进行任务分配,然后以存储记忆的形式来更新之前的策略。
本发明一种编译协助的强化学习多核任务分配算法如下所示:
Figure GDA0003559979940000121
Figure GDA0003559979940000131
具体执行过程如下:
当程序i进入系统时,对于将要在系统中运行的程序i,本发明会使用LLVM(代码优化编译工具)对其源代码进行分析编译,并产生中间.ll后缀的类似汇编代码的中间文件。LLVM编译产生的中间文件进行处理:读取所有要处理的语句总数,以及每种类型语句所占的比例来作为程序的特征,通过实验发现我们所提取的程序的特征中程序执行语句总数对最终的实验结果影响最大,并且各个语句的占比对效果影响不大,所以从权衡计算开销和最终效果的角度出发,我们仅使用归一化程序所要执行语句的总数来作为程序特征,程序i的特征表示为:
Figure GDA0003559979940000132
其中T_num_opi为程序i通过LLVM编译产生中间文件中统计到的所有要执行操作语句总数,T_num_opmax为运行过的所有程序中通过LLVM编译产生中间文件中统计到的所有要执行操作语句总数的最大值。
同时获取程序的输入:获取将要运行程序i输入为j时的归一化输入
Figure GDA0003559979940000133
表示方式如下:
Figure GDA0003559979940000134
其中
Figure GDA0003559979940000135
表示为程序i输入为j时的输入数据量的大小,表示
Figure GDA0003559979940000136
为程序i的所有输入中输入数据量的最大值。通过对parsebenchmark中多个不同输入的数据量大小相同的几个程序进行分析,发现对比输入构成的字符串的大小可以有效区分输入,所以当程序不同的输入的数据量大小一致时,我们先将n个不同的输入按输入构成的字符串从小到大排序,程序i排在第j的输入的归一化表示方式为:
Figure GDA0003559979940000141
获取系统信息:算法中我们结合核i的利用率Ucore_i和内核的当前运行频率Fc_oi来反应内核的负载情况:
Figure DA00035599799436082600
其中wu、wf为表示核的利用率和当前运行频率在表征当前系统压力中的重要性权重,满足:wu+wf=1。
内核温度信息:我们采用了文献中所提出的方法来表示当前内核的温度状态:Ti t=(Ti(t)-Ti(t-Δt)×e-bΔt)/(1-e-bΔt),其中Ti(t)为核i在t时刻的温度,Ti(t-Δt)为核i在t-Δt时刻的温度,b是由处理器决定的常数,Δt表示间隔时间,该表示方式涵盖了系统的当前温度和温度变化趋势,能较好的反应当前的系统温度情况,为了使温度状态与合并的系统状态
Figure GDA0003559979940000143
处于相同的数值范围,我们使用系统的最大阈值温度Tthreshold对当前温度状态进行归一化:
Figure GDA0003559979940000144
将前面获取所有信息组合建模系统状态:获取的程序的信息T_fi、输入大小
Figure GDA0003559979940000145
系统中所有内核的温度情况Ti t、内核的负载情况
Figure GDA0003559979940000146
以及任务i输入为j对应的性能约束
Figure GDA0003559979940000147
放到一起组成一个维度为2n+3的向量作为强化学习中的state。
Figure GDA0003559979940000148
强化学习的智能体根据当前的state来计算每个动作的q值。q值的计算公式为:Q(s,a)=f(s,a,w),其中Q(s,a)表示为状态为s采取动作a的q值,w为神经网络的权重参数,我们所使用的神经网络的结构为三层结构:输入层、隐藏层、输出层。
计算q值后选择动作:根据q值使用ε-greedy策略来选择动作action:Agent以ε(0<ε<=1)的概率选择q值最大的动作,以1-ε的概率来随机选择动作探索更优的动作,在算法中我们初始的探索系数设置为0.3,随着运行次数的增多逐步缩小探索系数。action具体表示形式为:actioni=(corei,Freqstep_i)。根据动作actioni将要执行的任务的CPUaffinity设置为corei,并且将corei的运行频率设置为Freqstep_i对应的频率动作空间表示为n×m其中为核的个数,m为内核可用频率梯度。
程序运行结束时获取所有核的当前温度,以及程序的运行时间run_timetask_i,来计算本次决策的reward,reward的计算公式为:
Figure GDA0003559979940000151
其中x分情况讨论:
Figure GDA0003559979940000152
其中Mean_temi-1为上次任务运行结束时的平均温度,Action_temi为本次任务运行所在核的温度,Lctask_i为任务taski的性能约束。计算好的reward反馈给Agent,来引导Agent学习到更优的调度策略。
任务分配策略更新:每次任务映射过程中算法程序进入系统时的初始状态、选择的动作、回报值、新的状态作为一条记忆存储,每运行一定的次数我们会从记忆库随机选取记忆来更新任务映射策略。因为Agent是在与系统的交互中来学习最优任务分配策略,选择动作的q值是通过反复迭代而来,传统的q-learning中q值的迭代更新实际上是在重复更新一个表格,该表存储了所有状态下每个的动作对应的q值,而表格更新得方式只适用于状态动作空间均较小的情况,面对连续的状态空间时,会带来内存空间开销过大,所以我们使用神经网络来逼近q值,对应的神经网络的更新公式为:loss=(r+γmaxa'Q(s',a',w)-Q(s,a,w))2,其中r为状态s下执行动作a的回报值,γ为折扣率。
一旦有任务进入系统,则获取新的状态执行以上过程。
图3为本发明算法下运行九种不同来自parsec benchmark中的测试任务的结果,图中水平的线代表了程序的性能约束,折线为每个任务的实际运行时间,从图4可以看出在探索阶段(0-150次),程序的实际运行时间处于不停的波动状态,当运行一定的次数后(150-250次),九个程序均能满足性能约束,并且稳定在性能约束周围,达到了较为理想的效果。
图4为本发明算法(ReLeTA-LC)同其它三种方法在性能相近的情况下的峰值温度对比情况,可以看到本发明算法虽然前期温度较高,但是温度一直处于下降的状态,相比其它三种方法波动很小,随着运行次数的增多,本发明算法下温度基本处于最低且最稳定的状态。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种编译器协助的强化学习多核任务分配算法,其特征在于,包括以下步骤:
步骤1:对于将要在系统中运行的程序i,使用LLVM对其源代码进行分析编译,并产生中间文件;
步骤2:对LLVM编译产生的中间文件进行处理;读取所有要处理的语句总数,以及每种类型语句所占的比例来作为程序的特征,通过实验发现所提取的程序特征中,程序执行语句总数对最终的实验结果影响最大,并且各个语句的占比对效果影响不大,所以从权衡计算开销和最终效果的角度出发,本发明仅使用归一化程序所要执行语句的总数来作为程序特征,程序i的特征表示为:
Figure FDA0003559979930000011
其中T_num_opi为程序i通过LLVM编译产生中间文件中统计到的所有要执行操作语句总数,T_num_opmax为运行过的所有程序中通过LLVM编译产生中间文件中统计到的所有要执行操作语句总数的最大值;
步骤3:获取将要运行程序i输入为j时的归一化输入
Figure FDA0003559979930000012
所述归一化输入
Figure FDA0003559979930000013
表示方式如下
Figure FDA0003559979930000014
其中
Figure FDA0003559979930000015
表示为程序i输入为j时的输入数据量的大小,
Figure FDA0003559979930000016
表示 为程序i的所有输入中输入数据量的最大值; 通过对parse benchmark中多个不同输入的数据量大小相同的几个程序进行分析,发现对比输入构成的字符串的大小可以有效区分输入,所以当程序不同的输入的数据量大小一致时,先将n个不同的输入按输入构成的字符串从小到大排序,程序i排在第j的输入的归一化表示方式为:
Figure FDA0003559979930000021
步骤4:结合利用率Ucore_i和内核的当前运行频率Fcore_i来反应内核的负载情况:
Figure FDA0003559979930000022
其中wu、wf为表示核的利用率和当前运行频率在表征当前系统压力中的重要性权重,满足:wu+wf=1(该方法中:wu=0.7,wf=0.3);
步骤5:采用如下方法来表示当前内核的温度状态:
Ti t=(Ti(t)-Ti(t-Δt)×e-bΔt)/(1-e-bΔt)
其中Ti(t)为核i在t时刻的温度,Ti(t-Δt)为核i在t-Δt时刻的温度,b是由处理器决定的常数,Δt表示间隔时间,该表示方式涵盖了系统的当前温度和温度变化趋势,能较好的反应当前的系统温度情况,为了使温度状态与合并的系统状态
Figure FDA0003559979930000023
处于相同的数值范围,本发明使用系统的最大阈值温度Tthreshold对当前温度状态进行归一化:
Figure FDA0003559979930000024
步骤6:将获取的程序的信息T_fi、输入大小
Figure FDA0003559979930000025
系统中所有内核的温度情况Ti t、内核的负载情况
Figure FDA0003559979930000026
以及任务i输入为j对应的性能约束
Figure FDA0003559979930000027
放到一起组成一个维度为2n+3的向量作为强化学习中的state;
步骤7:强化学习的agent根据当前的state来计算每个动作的q值;所述state表示为:
Figure FDA0003559979930000031
步骤8:更新q值;
步骤9:根据q值使用ε-greedy策略来选择动作action:
步骤10:将要执行的任务的affinity设置为corei,并且将corei的运行频率设置为Freqstep_i对应的频率;
步骤11:根据程序运行结束时获取所有核的当前温度,以及程序的运行时间run_timetask_i,来计算本次决策的reward;
步骤12:计算好的reward反馈给Agent,来引导Agent学习到更优的调度策略;
步骤13:一旦有任务进入系统,则获取新的状态执行以上过程。
2.根据权利要求1所述的一种编译器协助的强化学习多核任务分配算法,其特征在于,包括以下工作流程:
S1.1:定义状态空间;
S1.2:定义动作空间:我们的动作为把任务放到合适的内核去运行并设置内核的运行频率,所以动作空间n×m,其中n为内核的数量,m为可用的运行频率级数;
S1.3:制定能满足用户性能约束且有效降低系统温度的奖励函数;
S1.4:神经网络构建;
S1.5:记忆库构建;
S2.1:任务进入系统,提取通过LLVM编译产生的中间文件的特征作为程序特征,同时读取系统的负载信息、温度信息、程序输入大小;
S2.2:将S2.1中的信息进行预处理后作为当前的状态;
S2.3:使用S2.2的状态通过神经网络来计算当前状态下所有动作的收益,根据贪婪策略来选择任务映射的动作:ε的概率选择收益最大的动作,1-ε的概率随机选择动作;
S2.4:根据S2.3的动作来设置任务的亲和性将任务绑定到指定的内核,并为内核设置运行频率;
S2.5:任务运行结束获取当前的温度信息和任务的实际运行时间来对此次的决策进行评价,然后获取新的系统状态;
S2.6:将任务决策前后的信息存入记忆库,每条信息包括:任务进入时的状态信息、选择的动作、系统对动作的评价以及运行结束时新的状态;
S2.7:重复S2.1到S2.6的任务分配过程,每当记忆达到一定的量后使用梯度下降更新策略。
3.根据权利要求2所述的一种编译器协助的强化学习多核任务分配算法,其特征在于:
根据观测到的系统状态、将要运行程序的特征、用户的性能约束以及程序输入,动态选择合适的内核来运行刚刚进入系统的线程。
4.根据权利要求2所述的一种编译器协助的强化学习多核任务分配算法,其特征在于:
将要运行程序的特征包括LLVM编译过程中产生的中间文件中提取的特征信息和程序的输入信息。
5.根据权利要求2所述的一种编译器协助的强化学习多核任务分配算法,其特征在于:
所述S2.1中,通过操作系统获取底层的信息,获取的底层信息作为当前的系统状态,并根据当前的状态来选择任务的映射方式。
6.根据权利要求5所述的一种编译器协助的强化学习多核任务分配算法,其特征在于:
获取的底层信息包括当前内核的运行频率、内核的利用率、内核的当前温度和内核短时间内的温度变化量。
7.根据权利要求3所述的一种编译器协助的强化学习多核任务分配算法,其特征在于:
输入为一个新的任务,输出为任务的映射策略。
8.根据权利要求7所述的一种编译器协助的强化学习多核任务分配算法,其特征在于:
任务映射后根据系统的温度以及任务实际的运行时间来评价此次任务映射策略的好坏。
CN202110413026.9A 2021-04-16 2021-04-16 一种编译器协助的强化学习多核任务分配算法 Active CN113254021B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110413026.9A CN113254021B (zh) 2021-04-16 2021-04-16 一种编译器协助的强化学习多核任务分配算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110413026.9A CN113254021B (zh) 2021-04-16 2021-04-16 一种编译器协助的强化学习多核任务分配算法

Publications (2)

Publication Number Publication Date
CN113254021A CN113254021A (zh) 2021-08-13
CN113254021B true CN113254021B (zh) 2022-04-29

Family

ID=77220960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110413026.9A Active CN113254021B (zh) 2021-04-16 2021-04-16 一种编译器协助的强化学习多核任务分配算法

Country Status (1)

Country Link
CN (1) CN113254021B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970580A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向多核集群的数据流编译优化方法
CN109117255A (zh) * 2018-07-02 2019-01-01 武汉理工大学 基于强化学习的异构多核嵌入式系统能耗优化调度方法
CN110673950A (zh) * 2019-08-23 2020-01-10 广东大杉网络科技有限公司 云计算任务分配方法、装置、设备及存储介质
WO2020251850A1 (en) * 2019-06-12 2020-12-17 New York University System, method and computer-accessible medium for a domain decomposition aware processor assignment in multicore processing system(s)
CN112422644A (zh) * 2020-11-02 2021-02-26 北京邮电大学 计算任务卸载方法及系统、电子设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970580A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向多核集群的数据流编译优化方法
CN109117255A (zh) * 2018-07-02 2019-01-01 武汉理工大学 基于强化学习的异构多核嵌入式系统能耗优化调度方法
WO2020251850A1 (en) * 2019-06-12 2020-12-17 New York University System, method and computer-accessible medium for a domain decomposition aware processor assignment in multicore processing system(s)
CN110673950A (zh) * 2019-08-23 2020-01-10 广东大杉网络科技有限公司 云计算任务分配方法、装置、设备及存储介质
CN112422644A (zh) * 2020-11-02 2021-02-26 北京邮电大学 计算任务卸载方法及系统、电子设备和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Energy-Efficient Scheduling of Real-Time Tasks on Heterogeneous Multicores Using Task Splitting;Di Liu 等;《2016 IEEE 22nd International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA)》;20161003;第1-13页 *
ReLeTA: Reinforcement Learning for Thermal-Aware Task Allocation on Multicore;Shi-Gui Yang等;《Electrical Engineering and Systems Science》;20191130;第1-6页 *
同构多核/众核处理器任务分配自适应模拟退火算法;闫乔 等;《计算机科学》;20140615;第41卷(第6期);第18-21、53页 *
面向高通量应用的众核处理器任务调度;徐远超等;《清华大学学报(自然科学版)》;20170315(第03期);第23-28页 *

Also Published As

Publication number Publication date
CN113254021A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
US11423295B2 (en) Dynamic, automated fulfillment of computer-based resource request provisioning using deep reinforcement learning
Huang et al. Credit scoring with a data mining approach based on support vector machines
Hens et al. Computational time reduction for credit scoring: An integrated approach based on support vector machine and stratified sampling method
US6321217B1 (en) Data analyzing method for generating rules
Zhao et al. An entropy-based clustering ensemble method to support resource allocation in business process management
CN111834010A (zh) 一种基于属性约简和XGBoost的COVID-19检测假阴性识别方法
US20050289000A1 (en) Method for contact stream optimization
CN112256739B (zh) 一种基于多臂赌博机的动态流大数据中数据项筛选方法
CN109035028A (zh) 智能投顾策略生成方法及装置、电子设备、存储介质
Chen et al. Research on credit card default prediction based on k-means SMOTE and BP neural network
US10795956B1 (en) System and method for identifying potential clients from aggregate sources
US20220237516A1 (en) Data modeling systems and methods
CN109657884A (zh) 电网供电优化方法、装置、设备和计算机可读存储介质
CN113159213A (zh) 一种业务分配方法、装置及设备
CN117708756A (zh) 一种基于机器学习的数据挖掘建模平台
US20230385664A1 (en) A computer-implemented method for deriving a data processing and inference pipeline
CN113254021B (zh) 一种编译器协助的强化学习多核任务分配算法
US20210192361A1 (en) Intelligent data object generation and assignment using artificial intelligence techniques
CN113763031A (zh) 一种商品推荐方法、装置、电子设备及存储介质
JP7064656B1 (ja) 人財配置支援システム及び方法
US11113652B2 (en) System and method for a recommendation mechanism regarding store remodels
Gong et al. Evaluating individuals in interactive genetic algorithms using variational granularity
CN114186706A (zh) 基于整数规划的法院案件均衡分配方法、系统及电子设备
CN111127184A (zh) 一种分布式组合信用评估方法
CN118672594B (zh) 一种软件缺陷预测方法及系统

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
TR01 Transfer of patent right

Effective date of registration: 20220718

Address after: 315048 517, floor 5, building 8, Lane 218, Qingyi Road, high tech Zone, Ningbo, Zhejiang Province

Patentee after: Ningbo Yongyi Technology Co.,Ltd.

Address before: No.2, Cuihu North Road, Kunming, Yunnan 650031

Patentee before: YUNNAN University

TR01 Transfer of patent right