CN105373424A - 一种基于机器学习的推测多线程划分方法 - Google Patents
一种基于机器学习的推测多线程划分方法 Download PDFInfo
- Publication number
- CN105373424A CN105373424A CN201510661837.5A CN201510661837A CN105373424A CN 105373424 A CN105373424 A CN 105373424A CN 201510661837 A CN201510661837 A CN 201510661837A CN 105373424 A CN105373424 A CN 105373424A
- Authority
- CN
- China
- Prior art keywords
- program
- thread
- divided
- division
- walk
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000010801 machine learning Methods 0.000 title claims abstract description 23
- 238000012549 training Methods 0.000 claims abstract description 54
- 230000001788 irregular Effects 0.000 claims abstract description 51
- 238000004364 calculation method Methods 0.000 claims abstract description 20
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 15
- 125000002015 acyclic group Chemical group 0.000 claims abstract description 7
- 238000000638 solvent extraction Methods 0.000 claims description 29
- 230000005284 excitation Effects 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 19
- 238000005192 partition Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000009825 accumulation Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012916 structural analysis Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于机器学习的推测多线程划分方法,先从非规则程序集中提取程序特征,应用带注释的CFG图联合关键路径来表示程序特征;然后用SUIF编译器构造程序的控制流图,并转化为加权控制流图和超级块控制流图,对程序集进行针对循环部分和非循环部分的线程划分,得到由程序特征和最优划分方案构成的训练样本集;最后通过提取待划分非规则程序的特征,并计算其与训练样本中程序特征的相似性,对若干最相似样本程序的划分阈值进行加权计算,获得适应于该非规则程序的最优划分方案。本发明依据程序特征来比较待划分程序与样本程序的相似性,将相似样本的划分方案应用到待划分程序中,对于并行化各类非规则程序具有更好的适应性。
Description
技术领域
本发明属于计算机技术领域,涉及一种推测多线程技术,特别涉及一种基于机器学习的推测多线程划分方法。
背景技术
随着指令级并行遇到越来越多的瓶颈和片上多处理器的迅速发展,如何更加有效的利用核资源成为当前研究热点,推测多线程作为一种线程级并行技术得到迅速发展。特别是针对使用基于指针的数据结构如图和树等进行处理的非规则程序,其存在大量的只有在执行时才能确定的模糊数据依赖关系,而线程级推测并行在允许存在控制和数据依赖的情况下,通过并行编译器将非规则串行程序分解为多个线程单元,在执行时将其依次分别分配给空闲的处理器核单元来并行执行,而程序并行执行的正确性则由底层的硬件根据相应的执行模型来保证。线程级推测技术摆脱了传统并行化方法不能有效消解模糊数据依赖关系的局限,从而在并行化非规则程序方面展现出好的应用前景。
在线程级推测执行过程中,串行程序被划分为多个推测线程并行执行,每个线程分别执行程序的不同部分,并严格按照串行语义顺序执行。推测多线程程序的执行时,有且仅有一个线程为确定线程,该线程可以提交其执行结果,而其他线程均为推测线程,线程间以前驱后继的形式保持串行程序的语义。每个推测线程通过一对激发指令来标识,通过引入预计算片段(Pre-computationSlice,P-slice)预测推测线程的live-ins变量(活跃变量,被线程体使用但其值并非由该线程定义值)的值。一对激发指令由线程激发点(SpawningPoint,SP)和准控制无关点(ControlQuasiIndependentPoint,CQIP),即新线程的起始点构成,当程序执行到SP点时,若有空闲核资源,则分配线程到该处理器执行;当确定线程执行到CQIP点时,将验证其直接后继线程在P-slice产生的live-ins数据,若验证正确,则确定线程提交其执行结果;若验证失败,则撤销此后继推测线程及其所有推测子线程,然后跳过P-slice片段,将该后继线程作为确定线程来执行。
在推测多线程中如何合理地分解非规则串行程序对于提高加速比有很大的影响,传统的线程划分方法主要应用启发式规则,通过对线程粒度、数据依赖距离等加以选择控制来优化程序的分解过程。其局限性在于不同的程序通常具有不同的结构特征,而基于启发式规则的方法以一种单一的优化方案来对所有程序进行优化,因此不能保证所有的非规则程序均能获得最优的划分。
发明内容
本发明的目的在于克服上述现有应用启发式规则以一种单一的优化方案来对所有程序进行优化的局限性,提供一种基于机器学习的推测多线程划分方法,该方法能够依据程序特征来优化最优划分方案,对不同非规则程序具有更好的适应性。
为达到上述目的,本发明采用以下技术方案:
一种基于机器学习的推测多线程划分方法,包括以下步骤:
1)从非规则程序集中提取程序特征,并将提取的程序特征注释到程序的控制流图CFG上,同时以数组结构来存储程序关键路径上的基本块,得到以带注释的图联合数组的方式表达的程序集;
2)基于SUIF编译器构造程序控制流图CFG,并用程序剖析信息和结构化分析方法将构造的程序控制流图依次转化为加权控制流图WCFG和超级块控制流图SCFG,然后对程序集分别进行循环部分和非循环部分的线程划分,得到由程序特征和最优划分方案构成的训练样本集;
3)提取待划分非规则程序的特征,利用基于图的相似性比较算法计算待划分的非规则程序特征与训练样本集的程序特征的相似性,得到最相似的样本程序,然后对最相似的样本程序的划分阈值进行加权计算,并将计算结果作为最优划分阈值应用到待划分非规则程序中完成推测多线程划分。
所述步骤1)中依据影响程序加速比的因素从非规则程序集中提取程序特征,并使用图G和数组A联合的数据结构来存储程序特征;其中影响程序加速比的因素包括线程粒度、负载均衡、数据依赖以及控制依赖;提取的程序特征包括动态指令数、循环概率、分支概率、数据依赖数和数据依赖距离;图G是带注释的控制流图,图G中的节点的属性为动态指令数,边的属性为由循环分支概率、数据依赖数、数据依赖距离组成的三元组;数组A中的元素Ai表示关键路径上的基本块。
所述步骤2)中在进行循环部分的线程划分时,根据剖析器分析得到的迭代次数、循环体大小以及循环体之间的数据依赖数来决定循环部分的划分,只有当激发下一次迭代是盈利的,才将每个迭代指定为一个候选线程;并且在划分循环部分时,依据线程粒度和数据依赖数将候选线程的激发点SP插入到循环体内,将准控制无关点CQIP即候选线程的起始点插入到循环分支指令前。
判断激发下一次迭代是盈利的标准为:循环体的线程粒度ThreadSize∈[3,32],且迭代之间的数据依赖数DDC∈[3,9]。
所述步骤2)中在进行非循环部分的线程划分时,将当前候选线程初始化为空,以起始点作为当前线程划分的参考点,获得从起始点到最近一个后向支配节点的最可能路径,仅当最可能路径上所有基本块的动态指令数满足经验值设定的线程粒度阈值范围条件,并且与后继待划分部分的最优依赖数小于经验值设定的阈值时,则获得由最可能路径上的节点构成的候选线程;若大于线程粒度上限,则将被进一步划分;若小于线程粒度下限,则当前起始点的最近后向支配节点不会激发新的线程,将最可能路径上的节点加入到当前候选线程;每一步递归将当前参考点的最近后向支配节点作为当前候选线程的起始点,直到当前非循环部分的结束节点结束为止。
所述步骤2)中分别针对循环部分和非循环部分进行线程划分,得到程序的划分方案,然后对程序特征及其相应的最优划分方案进行联合表达,得到训练样本集;其中划分方案表示为线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限的五维阈值组合,训练样本T表示为其中,表示第i个程序的程序特征,表示第i个程序对应的最优划分,N表示程序总个数。
所述步骤3)中待划分的非规则程序特征与训练样本集的程序特征的相似性比较方法为:分别提取待划分的非规则程序和训练样本集的程序在起始点和结束点之间的所有路径,比较二者所有路径的相似性,加权累加后得到图的相似性,具体计算公式如式(1)所示:
其中Kfun(G1,G2)为图G1和图G2的相似性,walki为图G1的程序执行路径,walkj为图G2的程序执行路径,Kwalk(walki,walkj)为walki和walkj的相似性,Kwalk(walkG1,walkG2)为图G1和图G2的关键路径的相似性,p为权值参数。
所述步骤3)中对最相似的样本程序的划分方案五维阈值进行加权计算,获得待划分非规则程序的最优划分阈值,计算公式如式(8)所示:
其中THj表示第j个待求阈值,j=1~5,e为欧拉数,th1j表示距离待划分过程最近的第1个过程的第j个阈值,thij表示距离待划分过程最近的第i个过程的第j个阈值,参数c表示选取的最相似样本数;五维阈值为线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限。
相对于现有技术,本发明具有以下有益效果:
本发明提供的基于机器学习的推测多线程划分方法,克服了现有应用启发式规则以一种单一的优化方案来对所有程序进行优化的局限性。该方法通过对程序特征进行分析及表示,并分别对循环部分和非循环部分执行不同的线程划分策略以获得由程序特征及其最优化分方案构成的训练样本集,从而通过将待划分的非规则程序特征与训练样本集的程序特征进行比较,应用最相似的样本程序的划分方案对待划分的非规则程序进行推测多线程划分。本发明依据程序特征来比较待划分的非规则程序与训练样本集的程序的相似性,将最相似样本的划分方案应用到待划的非规则分程序中,能够依据程序特征来优化最优划分方案,对不同非规则程序具有更好的适应性。本发明还具有以下优点:
1)通过使用本发明提供的基于机器学习的推测多线程划分方法,能够避免像现有的基于启发式规则的方法那样,以一种单一的优化方案来对所有非规则程序进行线程划分的局限性,本发明的基于机器学习的推测多线程划分方法依据程序特征决定优化的划分方案,对不同非规则程序具有更好的适应性。
2)本发明提供的基于机器学习的推测多线程划分方法能够对基于动态数据结构的非规则程序进行并行化处理,获得较好的加速比性能。
附图说明
图1为程序特征的表示示意图;
图2为训练样本集的生成过程流程图;
图3为程序结构的预处理过程流程图;
图4为程序循环部分的划分示意图;
图5为程序非循环部分的划分示意图;
图6为基于机器学习的线程划分框架示意图。
具体实施方式
下面对本发明做进一步详细说明。所述是解释而不是限定。
本发明提供了一种基于机器学习的推测多线程划分方法,该方法首先从非规则程序集中提取程序特征,并将其注释到程序的控制流图(ControlFlowGraph,CFG),应用该带注释的CFG图联合关键路径来表示程序特征;其次应用SUIF编译器构造程序的控制流图,并采用程序剖析信息和结构化分析方法将其依次转化为加权控制流图(WeightedControlFlowGraph,WCFG)和超级块控制流图(SuperControlFlowGraph,SCFG),从而对程序集分别进行针对循环部分和非循环部分不同的线程划分以得到由程序特征和最优划分方案构成的训练样本集;最后通过提取待划分非规则程序的特征,并应用基于图的相似性比较算法计算其与训练样本中程序特征的相似性,对若干最相似样本程序的划分阈值进行加权计算,从而获得适应于该非规则程序的最优化分阈值,即近似最优划分方案。本发明依据程序特征来比较待划分程序与样本程序的相似性,将相似样本的划分方案应用到待划分程序中,对于并行化各类非规则程序具有更好的适应性。
本发明提供的基于机器学习的推测多线程划分方法如下:
首先,从非规则程序集提取程序特征,并将其注释到程序的控制流图(ControlFlowGraph,CFG),同时以数组结构来存储程序关键路径上的基本块,得到应用带注释的图联合数组表达的一组程序集。
其次,基于SUIF编译器构造程序的CFG,并应用程序剖析信息和结构化分析方法将其依次转化为WCFG和SCFG,从而对虚拟程序集进行线程划分以得到训练样本集,本发明对程序循环部分和非循环部分分别进行不同策略的划分;得到程序的划分方案后对程序特征及其最优划分进行联合表达,从而得到最终的训练样本集。
最后,对于待划分的非规则程序,比较其程序特征与训练样本集中程序特征的相似性来实现对非规则程序的推测多线程划分。
具体的,本发明提供的基于机器学习的推测多线程划分方法具体包括以下步骤:
1)从非规则程序集中提取程序特征,包括基本块动态指令数、循环概率、分支概率、数据依赖数和数据依赖距离,并将其注释到程序的控制流图(ControlFlowGraph,CFG),同时以数组结构来存储程序关键路径上的基本块,得到一组应用带注释的图联合数组的方式表达的一组程序集;
2)基于SUIF编译器构造程序控制流图CFG,并应用程序剖析信息和结构化分析方法将其依次转化为加权控制流图(WeightedControlFlowGraph,WCFG)和超级块控制流图(SuperControlFlowGraph,SCFG),进而对程序集分别进行循环部分和非循环部分的线程划分,以得到由程序特征和最优划分方案(划分方案表示为线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限的五维阈值组合)构成的训练样本集;其中WCFG即为注释分支概率、路径、循环概率的程序控制流图,SCFG即为循环部分被转化为单入口和单出口抽象节点的加权控制流图;
3)提取待划分非规则程序的特征,并应用基于图的相似性比较算法计算得到待划分的非规则程序特征与训练样本集的程序特征的相似性,对最相似的样本程序的划分阈值进行加权计算,并将计算结果作为近似最优划分阈值应用到该非规则程序中完成线程划分。
其中步骤1)中依据影响程序加速比的主要因素(线程粒度、负载均衡、数据依赖以及控制依赖)提取程序特征(动态指令数、循环概率、分支概率、数据依赖数和数据依赖距离),并使用图G和数组A联合的数据结构来存储程序特征,从而得到了由带注释的图G和数组A表示的一个串行非规则程序。其中,图G是带注释的控制流图,节点的属性为动态指令数,边的属性为由循环分支概率、数据依赖数、数据依赖距离组成的三元组,数组元素Ai表示关键路径上的基本块。
本发明在线程划分时首先考虑循环部分,通过综合考虑由剖析器(profiling)分析所得到的迭代次数、循环体大小以及循环体之间的数据依赖数来决定循环部分的划分。只有当激发下一次迭代是盈利的,即循环体具有适当的线程粒度(ThreadSize∈[3,32])且迭代之间的数据依赖数较小(DDC∈[3,9])时,才将每个迭代指定为一个候选线程。对于循环部分,综合考虑线程粒度和数据依赖数将候选线程的激发点(SpawningPoint,SP)插入到循环体内,而将准控制无关点(ControlQuasiIndependentPoint,CQIP),即候选线程的起始点插入到循环分支指令前。
对于非循环部分的划分采用经验值来权衡线程粒度、数据依赖数和激发距离以获得最优划分。将当前候选线程初始化为空,以起始点作为当前线程划分的参考点,获得从起始节点到最近一个后向支配节点的最可能路径,只有当最可能路径上所有基本块的动态指令数满足经验值设定的线程粒度阈值范围条件并且与后继待划分部分的最优依赖数小于经验值所设定的阈值时,则获得由最可能路径上的节点构成的候选线程;如果大于线程粒度上限,那么该块将被进一步划分;如果小于线程粒度下限,则当前起始点的最近后向支配节点不会激发新的线程,而将最可能路径上的节点加入到当前候选线程。每一步递归将当前参考点的最近后向支配节点作为当前候选线程的起始点,直到当前非循环部分的结束节点结束为止。
本发明分别针对循环部分和非循环部分不同的线程划分算法进行划分。得到程序的划分方案后(划分方案表示为线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限的五维阈值组合),对程序特征及其相应的最优划分方案进行联合表达以得到最终的训练样本集,即本发明将训练样本表示为其中,表示第i个程序的程序特征,表示该程序对应的最优划分。
本发明对于给定的待划分非规则程序,提取其程序特征并比较其与训练样本集中程序特征的相似性。待划分程序和训练样本集程序特征的比较方法为分别提取待划分程序和训练样本集程序在begin和end点之间的所有路径,比较二者所有路径相似性,加权累加后得到图的相似性,如公式(1)所示:
其中,Kfun(G1,G2)为图G1和G2的相似性,Kwalk(walkG1,walkG2)为图G1和G2的关键路径的相似性,Kwalk(walki,walkj)为图G1和G2的程序执行路径walki和walkj的相似性,p为权值参数,本例中设置为0.4。
得到与待划分程序最相似的c个程序集后,综合最相似程序的划分方案,具体为,对最相似程序划分方案的五维阈值(线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限)进行加权计算来获得待划分程序的最优划分阈值,从而得到待划分程序的最优阈值,应用于非规则程序的推测多线程划分算法中。最优划分阈值的计算公式如公式(2)所示:
其中,THj表示第j个待求阈值,thij表示距离待划分过程最近的第i个过程的第j个阈值,参数c表示选取的最相似样本数,th1j表示距离待划分过程最近的第1个过程的第j个阈值,参数c表示选取的最相似样本数,e为欧拉数,j=1~5。
下面结合附图对本发明进行进一步详细说明。
1.程序特征的提取与表示
本发明基于非规则程序集提取影响程序加速比的特征,并以图和数组的联合方式来表达具有特定结构的非规则程序。
线程粒度、负载均衡、数据依赖以及控制依赖是影响程序加速比的主要因素,综合考虑以上因素,提取如下表所示的程序特征:
表1
程序特征 | 描述 |
指令数 | 一个基本块中的动态指令数目 |
循环概率 | 循环跳转到测试部分的概率 |
分支概率 | 控制流经过该分支与否的概率 |
数据依赖数 | 两个基本块之间的数据依赖数 |
数据依赖距离 | 两个基本块之间的数据依赖距离 |
关键路径 | 一条函数执行最可能经过的路径 |
本发明依据SUIF编译器的中间表示对程序特征进行分析,一个函数的特征表示如图1所示,数组A中每个元素Ai表示程序关键路径上的基本块编号,顶点A-H中元素c表示每个基本块的动态指令数,矩阵M1中的元素Mij表示基本块i和基本块j之间的循环分支概率,矩阵M2中的元素Mij表示基本块i和基本块j之间的数据依赖数,矩阵M3中的元素Mij表示基本块i和基本块j之间的数据依赖距离。将动态指令数作为顶点属性,矩阵M1M2M3作为边属性添加到CFG中构造加值CFG。关键路径数组A和带注释的CFG联合表示一个串行非规则程序。
2.构造训练样本集
基于SUIF编译器构造程序的CFG,并应用程序剖析信息和结构化分析方法将其依次转化为WCFG和SCFG,从而对虚拟程序集进行线程划分得到训练样本集。本发明对程序循环部分和非循环部分分别进行划分;得到程序的划分方案后对样本程序特征及其最优划分进行联合表达得到最终的训练样本集。生成训练样本过程如图2所示,对于一个串行程序,首先应用SUIF编译器将其转化为中间表示形式(IntermediateRepresentation,IR),再通过程序剖析器获取程序特征,将其以注释的形式添加到SUIFIR,应用线程划分算法对SUIFIR进行线程划分,同时反复对其进行评估得到最优划分,从而将程序及其最优划分方案作为训练样本。
1)结构预处理
如图3所示,源程序首先被预处理为低级SUIFIR,同时基于编译器对其进行分析并构造该程序的CFG,如图3(a)所示,在CFG中,节点表示基本块,而边表示基本块之间的控制依赖关系;其次,本发明应用程序剖析器获取分支概率、路径和循环概率,并将其信息注释到CFG图中,从而得到相应的WCFG,如图3(b)所示;最后,将循环部分转化为单入口和单出口的抽象节点,得到SCFG,如图3(c)所示。
2)循环部分划分
本发明在线程划分时首先考虑循环部分,通过综合考虑剖析器得到的迭代次数、循环体大小以及循环体之间的数据依赖数来决定循环部分的划分,只有当激发下一次迭代是盈利的,那么线程才被激发。对于具有适当的粒度并且迭代之间的数据依赖数较小时,每次迭代被指定为一个候选线程;对于循环体较小的情况,则将其展开执行。对于循环区域,综合考虑线程粒度和数据依赖数将候选线程的线程激发点SP插入到线程体中,而准控制无关点CQIP插入到候选线程的循环分支指令前面。其步骤为:
步骤一:通过程序剖析(剖析器)搜集循环迭代次数和循环体的动态指令数;
步骤二:计算循环内两次连续迭代间的数据依赖数;
步骤三:若在下一次迭代开始一个新的线程时,其粒度满足设定阈值范围,并且数据依赖小于设定阈值,则下一次迭代被创建为一个候选线程;
步骤四:综合考虑线程粒度和数据依赖数将SP点插入到线程体中,将CQIP点插入在跳转指令之前。
图4所示为一个循环部分的划分例子,只有线程循环体大小合适且迭代之间的数依赖小于固定阈值时,一个线程激发点被插入在入口节点处,一个准控制无关点被插入在前面的分支指令结束节点的循环体。在这种情况下,任何迭代可以激发下一次迭代作为候选线程,并与该迭代体并行执行,图4中基本块B5i处激发后继迭代B5i+1,i表示循环次数。
3)非循环部分划分
非循环部分划分算法以起始节点、结束节点和当前候选线程为输入,尽可能通过递归调用将两个节点间的程序段划分为多个线程,划分的策略是严格乱序的;为了获得最优的加速比,线程划分算法给出经验阈值来权衡线程粒度、数据依赖数和激发距离以得到最优划分方案。将当前候选线程初始化为空,获得从起始节点到最近后向支配节点的最可能路径,只有当最可能路径上所有基本块的动态指令数满足设定的线程粒度阈值范围条件并且与后继待划分部分的最优依赖数小于设定阈值时,才可获得由最可能路径上的节点构成的候选线程;如果大于线程粒度上限,那么将被进一步划分;如果小于线程粒度下限,则当前起始点的最近后向支配节点不激发新的线程,将最可能路径上的节点加入当前候选线程。每一步递归将当前参考点的最近后向支配节点作为当前候选线程的起始点,直到当前待划分区域的结束节点结束。非循环部分划分步骤为:
步骤一:将当前候选线程初始化为空;
步骤二:如果起始节点到达结束节点,则非循环部分线程划分结束;如果起始节点未到达结束节点,则继续进行步骤三;
步骤三:寻找起始节点的最近后向支配节点(最近后向支配节点即为在CFG中,从某节点开始的所有分支都必须经过的后向节点),获得从起始节点到最近后向支配节点的最可能路径;
步骤四:若最可能路径上所有基本块的动态指令数满足设定的线程粒度阈值范围条件并且与后继待划分部分的最优依赖数小于设定阈值时,则可获得由最可能路径上的节点所构成的候选线程;
步骤五:若最可能路径上所有基本块的动态指令数大于线程粒度上限,则将起始点与最近后向支配节点之间的非循环部分再次划分;
步骤六:若最可能路径上所有基本块的动态指令数小于线程粒度下限,则当前起始点的最近后向支配节点不激发新的线程,将最可能路径上的节点加入当前候选线程,找到下一个支配节点;
步骤七:以最近后向支配节点为起始节点,划分其到结束节点之间的程序段。
如图5所示为非循环部分划分的例子,该图表示一个函数的SCFG,节点的值表示该基本块的动态指令数,边的权值表示控制流图中的分支概率。如图所示,LOWER_LIMIT和UPPER_LIMIT分别表示每个线程动态指令数的下限和上限,DEP_COUNT_THRESHOLD表示数据依赖数阈值,最可能路径为B1-B2-B4-B5'-B8-B10。当前的候选线程将其初始化为{B1},现在考虑其最近后必经节点B4,并分析B1和B4之间的最可能路径,节点B2在最可能路径上,将其增加到当前线程Thread1,那么线程Thread1的粒度为59,在线程粒度范围内。假设{B1,B2}和{B4,B5',B8}的最优数据依赖数均小于5,那么基本块B4作为线程Thread2的开始节点,即将Thread2初始化为{B4},那么继续考虑其最近后必经节点B10,并分析B4和B10之间的最可能路径{B4,B5',B8,B10},假设其数据依赖数小于5,但是线程体{B4,B5',B8}粒度为69,那么B10被选为边界,开始新的线程Thread3,然后线程体{B4,B5',B8}被继续划分为更小的线程体。
4)训练样本表示
得到程序的最优划分方案后,划分方案表示为五维阈值组合,分别为:线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限,
对样本程序特征及其最优划分进行联合表达得到最终的训练样本集,本发明将训练样本表示为其中,表示程序特征,表示该程序对应的最优划分。
3.预测模型构建及线程划分
对于给定的待划分非规则程序,提取其特征后应用改进的K近邻(K-nearestneighbor,KNN)算法实现对非规则程序的推测多线程划分。
如图6所示,基于机器学习的线程划分方法分为两个阶段:应用训练样本构建预测模型以及应用上述模型预测待划分程序的划分方案。第一阶段从上述的训练样本集中构建预测模型,每个训练样本包含了表示程序的特征及其相应的划分方案;第二阶段通过比对程序特征的相似性对程序进行划分,这就使得线程划分问题从预测SP、CQIP序列演变到程序特征比较的问题。
1)基于图模型的相似性计算
如图6所示,对于给定待划分程序,本发明首先提取其特征,并将其注释到CFG图,再应用基于图的相似性比较算法来比较其与样本程序特征的相似性,图比较算法详细流程如下:
步骤一:以带注释图(G)中begin节点为起始节点,end节点为终结节点,根据CFG拓扑结构分别提取输入程序和训练样本的所有可能路径;
步骤二:比较输入程序与训练样本各路径之间的相似性。路径的相似性由两条路径上对应点和边的相似性计算得到,式(6)为点的相似性计算公式,式(7)为边的相似性计算公式,式(3)为路径相似性计算公式;
步骤三:取输入程序和训练样本每轮路径比较相似性的最大值,累加该最大值得到输入程序和训练样本带注释图(G)的相似性;
步骤四:比较输入程序和训练样本关键路径的相似性,并以权值因子p与二者带注释图(G)的相似性相加,得到输入程序和训练样本的相似性。
相应的计算公式如下式所示:
Kknode=Knode(vi,wi)*Knode(vi+1,wi+1)式(4)
Kstep((vi,vi+1),(wi,wi+1))=Kknode*Kedge((vi,vi+1),(wi,wi+1))式(5)
Kedge((vi,vi+1),(wi.wi+1))=1-|wight(vi,vi+1)-wight(wi,wi+1)|式(7)
其中,wight(vi,vi+1)表示提取输入程序特征后的带注释的CFG边属性,即循环概率分支概率、数据依赖数和数据依赖距离三元组,wight(wi,wi+1)表示训练样本程序边属性,feature(vi)和feature(wj)表示各自的节点特征,即动态指令数,Kedge((vi,vi+1),(wi,wi+1))表示边相似性,Knode(vi,wi)、Knode(vi+1,wi+1)表示各自的顶点相似性,Kknode表示总的顶点相似性,Kstep((vi,vi+1),(wi,wi+1))表示路径中每步相似性,Kwalk(walki,walkj)表示路径相似性,Kgraph(G1,G2)表示带注释CFG的相似性,Kfun(G1,G2)表示输入程序和训练样本的相似性。walki为图G1的程序执行路径,walkj为图G2的程序执行路径,Kwalk(walkG1,walkG2)为图G1和图G2的关键路径的相似性,walkG1和walkG2表示图G1和G2的关键路径,p为权值因子,本例中设置为0.4。
2)改进的KNN算法
在构建的样本集中,每个特征向量对应的标签是五维阈值,即线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限的阈值组合,而不是单一的数字类标签,并且每组阈值基本上都是不同的,不能把一组阈值当成单一的类标签进行处理。因此,待划分程序不能简单地使用原始的KNN算法判定标签类别,而是采用对c个最相似样本程序的划分阈值加权求取,计算公式如下式所示:
其中,THj代表第j个待求阈值,thij表示距离待划分过程最近的第i个过程的第j个阈值,参数c表示选取的最相似样本数。从而得到输入程序的最优阈值,也即得到适应于该程序的近似最优划分方案,本发明采用该划分方案将输入程序分解为可并行执行的推测多线程程序。改进的KNN算法其输入为最近邻数目参数值c、训练样本集和待划分程序,具体步骤为:
步骤一:使用基于图的相似性比较算法来计算待划分程序特征和样本集中程序特征之间的相似性;
步骤二:选择与划分程序最相似的c个程序集;
步骤三:按照这c个程序与待划分程序相似值由大及小的顺序,依据公式(8)加权求取待划分程序的最优阈值;
步骤四:应用步骤三得到的最优阈值到待划分程序将其分解为可并行执行的推测多线程程序。
上述结合附图进行说明的具体内容只是示意性的,并非构成对本发明保护范围的限制,所属领域的研究人员在本发明提供的基于机器学习的推测多线程划分方法的基础上,不需付出创造性劳动而做出的各种修改或变形仍在本发明的保护范围内。
Claims (8)
1.一种基于机器学习的推测多线程划分方法,其特征在于,包括以下步骤:
1)从非规则程序集中提取程序特征,并将提取的程序特征注释到程序的控制流图CFG上,同时以数组结构来存储程序关键路径上的基本块,得到以带注释的图联合数组的方式表达的程序集;
2)基于SUIF编译器构造程序控制流图CFG,并用程序剖析信息和结构化分析方法将构造的程序控制流图依次转化为加权控制流图WCFG和超级块控制流图SCFG,然后对程序集分别进行循环部分和非循环部分的线程划分,得到由程序特征和最优划分方案构成的训练样本集;
3)提取待划分非规则程序的特征,利用基于图的相似性比较算法计算待划分的非规则程序特征与训练样本集的程序特征的相似性,得到最相似的样本程序,然后对最相似的样本程序的划分阈值进行加权计算,并将计算结果作为最优划分阈值应用到待划分非规则程序中完成推测多线程划分。
2.根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步骤1)中依据影响程序加速比的因素从非规则程序集中提取程序特征,并使用图G和数组A联合的数据结构来存储程序特征;其中影响程序加速比的因素包括线程粒度、负载均衡、数据依赖以及控制依赖;提取的程序特征包括动态指令数、循环概率、分支概率、数据依赖数和数据依赖距离;图G是带注释的控制流图,图G中的节点的属性为动态指令数,边的属性为由循环分支概率、数据依赖数、数据依赖距离组成的三元组;数组A中的元素Ai表示关键路径上的基本块。
3.根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步骤2)中在进行循环部分的线程划分时,根据剖析器分析得到的迭代次数、循环体大小以及循环体之间的数据依赖数来决定循环部分的划分,只有当激发下一次迭代是盈利的,才将每个迭代指定为一个候选线程;并且在划分循环部分时,依据线程粒度和数据依赖数将候选线程的激发点SP插入到循环体内,将准控制无关点CQIP即候选线程的起始点插入到循环分支指令前。
4.根据权利要求3所述的基于机器学习的推测多线程划分方法,其特征在于,判断激发下一次迭代是盈利的标准为:循环体的线程粒度ThreadSize∈[3,32],且迭代之间的数据依赖数DDC∈[3,9]。
5.根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步骤2)中在进行非循环部分的线程划分时,将当前候选线程初始化为空,以起始点作为当前线程划分的参考点,获得从起始点到最近一个后向支配节点的最可能路径,仅当最可能路径上所有基本块的动态指令数满足经验值设定的线程粒度阈值范围条件,并且与后继待划分部分的最优依赖数小于经验值设定的阈值时,则获得由最可能路径上的节点构成的候选线程;若大于线程粒度上限,则将被进一步划分;若小于线程粒度下限,则当前起始点的最近后向支配节点不会激发新的线程,将最可能路径上的节点加入到当前候选线程;每一步递归将当前参考点的最近后向支配节点作为当前候选线程的起始点,直到当前非循环部分的结束节点结束为止。
6.根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步骤2)中分别针对循环部分和非循环部分进行线程划分,得到程序的划分方案,然后对程序特征及其相应的最优划分方案进行联合表达,得到训练样本集;其中划分方案表示为线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限的五维阈值组合,训练样本T表示为其中,表示第i个程序的程序特征,表示第i个程序对应的最优划分,N表示程序总个数。
7.根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步骤3)中待划分的非规则程序特征与训练样本集的程序特征的相似性比较方法为:分别提取待划分的非规则程序和训练样本集的程序在起始点和结束点之间的所有路径,比较二者所有路径的相似性,加权累加后得到图的相似性,具体计算公式如式(1)所示:
其中Kfun(G1,G2)为图G1和图G2的相似性,walki为图G1的程序执行路径,walkj为图G2的程序执行路径,Kwalk(walki,walkj)为walki和walkj的相似性,Kwalk(walkG1,walkG2)为图G1和图G2的关键路径的相似性,p为权值参数。
8.根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步骤3)中对最相似的样本程序的划分方案五维阈值进行加权计算,获得待划分非规则程序的最优划分阈值,计算公式如式(8)所示:
其中THj表示第j个待求阈值,j=1~5,e为欧拉数,th1j表示距离待划分过程最近的第1个过程的第j个阈值,thij表示距离待划分过程最近的第i个过程的第j个阈值,参数c表示选取的最相似样本数;五维阈值为线程粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510661837.5A CN105373424B (zh) | 2015-10-14 | 2015-10-14 | 一种基于机器学习的推测多线程划分方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510661837.5A CN105373424B (zh) | 2015-10-14 | 2015-10-14 | 一种基于机器学习的推测多线程划分方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105373424A true CN105373424A (zh) | 2016-03-02 |
CN105373424B CN105373424B (zh) | 2018-10-30 |
Family
ID=55375649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510661837.5A Expired - Fee Related CN105373424B (zh) | 2015-10-14 | 2015-10-14 | 一种基于机器学习的推测多线程划分方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105373424B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958896A (zh) * | 2018-06-16 | 2018-12-07 | 温州职业技术学院 | 多线程并发处理系统及方法 |
CN110069347A (zh) * | 2019-04-29 | 2019-07-30 | 河南科技大学 | 一种基于过程重要度的线程划分方法 |
CN111078289A (zh) * | 2017-12-04 | 2020-04-28 | 北京磐易科技有限公司 | 用于执行多线程系统的子线程的方法和多线程系统 |
CN111459633A (zh) * | 2020-03-30 | 2020-07-28 | 河南科技大学 | 一种面向非规则程序的自适应线程划分方法 |
JPWO2021161429A1 (zh) * | 2020-02-12 | 2021-08-19 | ||
CN114721657A (zh) * | 2021-01-04 | 2022-07-08 | 中国移动通信有限公司研究院 | 一种多线程程序实现方法、装置及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923460A (zh) * | 2010-07-19 | 2010-12-22 | 西安交通大学 | 一种动态多线程划分方法 |
CN103699365A (zh) * | 2014-01-07 | 2014-04-02 | 西南科技大学 | 一种众核处理器结构上避免无关依赖的线程划分方法 |
US9003421B2 (en) * | 2005-11-28 | 2015-04-07 | Intel Corporation | Acceleration threads on idle OS-visible thread execution units |
-
2015
- 2015-10-14 CN CN201510661837.5A patent/CN105373424B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9003421B2 (en) * | 2005-11-28 | 2015-04-07 | Intel Corporation | Acceleration threads on idle OS-visible thread execution units |
CN101923460A (zh) * | 2010-07-19 | 2010-12-22 | 西安交通大学 | 一种动态多线程划分方法 |
CN103699365A (zh) * | 2014-01-07 | 2014-04-02 | 西南科技大学 | 一种众核处理器结构上避免无关依赖的线程划分方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078289A (zh) * | 2017-12-04 | 2020-04-28 | 北京磐易科技有限公司 | 用于执行多线程系统的子线程的方法和多线程系统 |
CN111078289B (zh) * | 2017-12-04 | 2021-11-23 | 北京奕斯伟智慧技术有限公司 | 用于执行多线程系统的子线程的方法和多线程系统 |
CN108958896A (zh) * | 2018-06-16 | 2018-12-07 | 温州职业技术学院 | 多线程并发处理系统及方法 |
CN110069347A (zh) * | 2019-04-29 | 2019-07-30 | 河南科技大学 | 一种基于过程重要度的线程划分方法 |
CN110069347B (zh) * | 2019-04-29 | 2022-10-25 | 河南科技大学 | 一种基于过程重要度的线程划分方法 |
JPWO2021161429A1 (zh) * | 2020-02-12 | 2021-08-19 | ||
JP7355123B2 (ja) | 2020-02-12 | 2023-10-03 | 日本電信電話株式会社 | プログラム生成装置、プログラム生成方法及びプログラム |
CN111459633A (zh) * | 2020-03-30 | 2020-07-28 | 河南科技大学 | 一种面向非规则程序的自适应线程划分方法 |
CN111459633B (zh) * | 2020-03-30 | 2023-04-11 | 河南科技大学 | 一种面向非规则程序的自适应线程划分方法 |
CN114721657A (zh) * | 2021-01-04 | 2022-07-08 | 中国移动通信有限公司研究院 | 一种多线程程序实现方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105373424B (zh) | 2018-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373424B (zh) | 一种基于机器学习的推测多线程划分方法 | |
Hu et al. | Spear: Optimized dependency-aware task scheduling with deep reinforcement learning | |
De Campos et al. | Efficient structure learning of Bayesian networks using constraints | |
Quiñones et al. | Mitosis compiler: an infrastructure for speculative threading based on pre-computation slices | |
US5889999A (en) | Method and apparatus for sequencing computer instruction execution in a data processing system | |
US6381739B1 (en) | Method and apparatus for hierarchical restructuring of computer code | |
JP2002116916A (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
Luo et al. | Finding representative sets of optimizations for adaptive multiversioning applications | |
CN112434785B (zh) | 一种面向超级计算机的分布式并行深度神经网络性能评测方法 | |
CN110069347B (zh) | 一种基于过程重要度的线程划分方法 | |
CN105260166B (zh) | 一种应用于机器学习线程划分的手工样本集生成方法 | |
Liu et al. | Toward emotion-aware computing: A loop selection approach based on machine learning for speculative multithreading | |
Deniz et al. | Using machine learning techniques to detect parallel patterns of multi-threaded applications | |
Cosnard et al. | Compact dag representation and its symbolic scheduling | |
Park et al. | XLA-NDP: Efficient Scheduling and Code Generation for Deep Learning Model Training on Near-Data Processing Memory | |
Prokesch et al. | Towards automated generation of time-predictable code | |
Rameshka et al. | Rigel: A framework for openmp performancetuning | |
Ma et al. | Parallel exact inference on multicore using mapreduce | |
Bruynooghe | PROGRAMMING PEARL: Enhancing a search algorithm to perform intelligent backtracking | |
Duan et al. | Large Language Model Inference Acceleration Based on Hybrid Model Branch Prediction | |
Li et al. | An Adaptive Thread Partitioning Approach in Speculative Multithreading | |
Mangla et al. | Bayesian optimisation of solver parameters in CBMC | |
Li et al. | Tpaopi: a thread partitioning approach based on procedure importance in speculative multithreading | |
Chen et al. | Branch-and-bound style resource constrained scheduling using efficient structure-aware pruning | |
Li et al. | IDaTPA: Importance Degree Based Thread Partitioning Approach in Thread Level Speculation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181030 Termination date: 20211014 |
|
CF01 | Termination of patent right due to non-payment of annual fee |