i+1), (w;.wi+1)) = 1-1wight(v;,vi+1)-wight(w;,wi+1) 式(7)
[0100] 其中,wight(Vl,v1+1)表示提取输入程序特征后的带注释的CFG边属性,即循环概 率分支概率、数据依赖数和数据依赖距离三元组,wight(Wl,w1+1)表示训练样本程序边属 性,feature(vj和;feature(w.j)表示各自的节点特征,即动态指令数,Kedge( (X,vi+1), (Wi, wi+1))表示边相似性,Uvi,wj、Kncide(vi+1,wi+1)表示各自的顶点相似性,Kkncide表示总的顶 点相似性,Κ_((ν?,ν?+1),(Wi,wi+1))表示路径中每步相似性,Uwalkywalkj)表示路径相 似性,表示带注释CFG的相似性,表示输入程序和训练样本的相似 性。walk;为图G1的程序执行路径,walk」为图G2的程序执行路径,Kwalk(walkG1,walkG2)为 图G1和图G2的关键路径的相似性,Walksl和walkS2表示图GJPG2的关键路径,p为权值 因子,本例中设置为0.4。
[0101] 2)改进的KNN算法
[0102] 在构建的样本集中,每个特征向量对应的标签是五维阈值,即线程粒度上限、线程 粒度下限、数据依赖数、激发距离上限和激发距离下限的阈值组合,而不是单一的数字类标 签,并且每组阈值基本上都是不同的,不能把一组阈值当成单一的类标签进行处理。因此, 待划分程序不能简单地使用原始的KNN算法判定标签类别,而是采用对c个最相似样本程 序的划分阈值加权求取,计算公式如下式所示:
[0103]
[0104] 其中,TH,代表第j个待求阈值,th、,表示距离待划分过程最近的第i个过程的第 j个阈值,参数c表示选取的最相似样本数。从而得到输入程序的最优阈值,也即得到适应 于该程序的近似最优划分方案,本发明采用该划分方案将输入程序分解为可并行执行的推 测多线程程序。改进的KNN算法其输入为最近邻数目参数值c、训练样本集和待划分程序, 具体步骤为:
[0105] 步骤一:使用基于图的相似性比较算法来计算待划分程序特征和样本集中程序特 征之间的相似性;
[0106] 步骤二:选择与划分程序最相似的c个程序集;
[0107] 步骤三:按照这c个程序与待划分程序相似值由大及小的顺序,依据公式⑶加权 求取待划分程序的最优阈值;
[0108] 步骤四:应用步骤三得到的最优阈值到待划分程序将其分解为可并行执行的推测 多线程程序。
[0109] 上述结合附图进行说明的具体内容只是示意性的,并非构成对本发明保护范围的 限制,所属领域的研究人员在本发明提供的基于机器学习的推测多线程划分方法的基础 上,不需付出创造性劳动而做出的各种修改或变形仍在本发明的保护范围内。
【主权项】
1. 一种基于机器学习的推测多线程划分方法,其特征在于,包括W下步骤: 1) 从非规则程序集中提取程序特征,并将提取的程序特征注释到程序的控制流图CFG 上,同时W数组结构来存储程序关键路径上的基本块,得到W带注释的图联合数组的方式 表达的程序集; 2) 基于SUIF编译器构造程序控制流图CFG,并用程序剖析信息和结构化分析方法将构 造的程序控制流图依次转化为加权控制流图WCFG和超级块控制流图SCFG,然后对程序集 分别进行循环部分和非循环部分的线程划分,得到由程序特征和最优划分方案构成的训练 样本集; 3) 提取待划分非规则程序的特征,利用基于图的相似性比较算法计算待划分的非规则 程序特征与训练样本集的程序特征的相似性,得到最相似的样本程序,然后对最相似的样 本程序的划分阔值进行加权计算,并将计算结果作为最优划分阔值应用到待划分非规则程 序中完成推测多线程划分。2. 根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步 骤1)中依据影响程序加速比的因素从非规则程序集中提取程序特征,并使用图G和数组A 联合的数据结构来存储程序特征;其中影响程序加速比的因素包括线程粒度、负载均衡、数 据依赖W及控制依赖;提取的程序特征包括动态指令数、循环概率、分支概率、数据依赖数 和数据依赖距离;图G是带注释的控制流图,图G中的节点的属性为动态指令数,边的属性 为由循环分支概率、数据依赖数、数据依赖距离组成的=元组;数组A中的元素Ai表示关键 路径上的基本块。3. 根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步 骤2)中在进行循环部分的线程划分时,根据剖析器分析得到的迭代次数、循环体大小W及 循环体之间的数据依赖数来决定循环部分的划分,只有当激发下一次迭代是盈利的,才将 每个迭代指定为一个候选线程;并且在划分循环部分时,依据线程粒度和数据依赖数将候 选线程的激发点SP插入到循环体内,将准控制无关点CQIP即候选线程的起始点插入到循 环分支指令前。4. 根据权利要求3所述的基于机器学习的推测多线程划分方法,其特征在于,判断激 发下一次迭代是盈利的标准为:循环体的线程粒度化readSizeG[3, 32],且迭代之间的数 据依赖数DDCG巧,9]。5. 根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步 骤2)中在进行非循环部分的线程划分时,将当前候选线程初始化为空,W起始点作为当前 线程划分的参考点,获得从起始点到最近一个后向支配节点的最可能路径,仅当最可能路 径上所有基本块的动态指令数满足经验值设定的线程粒度阔值范围条件,并且与后继待划 分部分的最优依赖数小于经验值设定的阔值时,则获得由最可能路径上的节点构成的候选 线程;若大于线程粒度上限,则将被进一步划分;若小于线程粒度下限,则当前起始点的最 近后向支配节点不会激发新的线程,将最可能路径上的节点加入到当前候选线程;每一步 递归将当前参考点的最近后向支配节点作为当前候选线程的起始点,直到当前非循环部分 的结束节点结束为止。6. 根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步 骤2)中分别针对循环部分和非循环部分进行线程划分,得到程序的划分方案,然后对程序 特征及其相应的最优划分方案进行联合表达,得到训练样本集;其中划分方案表示为线程 粒度上限、线程粒度下限、数据依赖数、激发距离上限和激发距离下限的五维阔值组合,训 练样本T表示为其中,表示第i个程序的程序特征,:表示第i个程序对应的最优划分,N表示 程序总个数。7. 根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步 骤3)中待划分的非规则程序特征与训练样本集的程序特征的相似性比较方法为:分别提 取待划分的非规则程序和训练样本集的程序在起始点和结束点之间的所有路径,比较二 者所有路径的相似性,加权累加后得到图的相似性,具体计算公式如式(1)所示:科) 其中Kf。。咕,Gz)为图Gl和图G2的相似性,walki为图Gl的程序执行路径,walki为图G2的程序执行路径,Kwaik(wa化i,wa化.j)为wa化郝wa化.j的相似性,Kwalk("日化即wa&G2)为 图Gl和图G2的关键路径的相似性,P为权值参数。8. 根据权利要求1所述的基于机器学习的推测多线程划分方法,其特征在于,所述步 骤3)中对最相似的样本程序的划分方案五维阔值进行加权计算,获得待划分非规则程序 的最优划分阔值,计算公式如式(8)所示:拷) 其中THj表示第j个待求阔值,j= 1~5,e为欧拉数,thU表示距离待划分过程最近 的第1个过程的第j个阔值,thi,表示距离待划分过程最近的第i个过程的第j个阔值,参 数C表示选取的最相似样本数;五维阔值为线程粒度上限、线程粒度下限、数据依赖数、激 发距离上限和激发距离下限。
【专利摘要】本发明公开了一种基于机器学习的推测多线程划分方法,先从非规则程序集中提取程序特征,应用带注释的CFG图联合关键路径来表示程序特征;然后用SUIF编译器构造程序的控制流图,并转化为加权控制流图和超级块控制流图,对程序集进行针对循环部分和非循环部分的线程划分,得到由程序特征和最优划分方案构成的训练样本集;最后通过提取待划分非规则程序的特征,并计算其与训练样本中程序特征的相似性,对若干最相似样本程序的划分阈值进行加权计算,获得适应于该非规则程序的最优划分方案。本发明依据程序特征来比较待划分程序与样本程序的相似性,将相似样本的划分方案应用到待划分程序中,对于并行化各类非规则程序具有更好的适应性。
【IPC分类】G06F9/50, G06F9/48
【公开号】CN105373424
【申请号】CN201510661837
【发明人】赵银亮, 吉烁, 李玉祥, 侍加强, 刘延昭, 吕挫挫
【申请人】西安交通大学
【公开日】2016年3月2日
【申请日】2015年10月14日