一种基于机器学习技术的多线程应用程序动态调度方法技术

技术编号:24352698 阅读:42 留言:0更新日期:2020-06-03 01:55
本发明专利技术公开了一种基于机器学习技术的多线程应用程序动态调度方法,其步骤包括:A)初始时,将多线程应用程序中的各个线程随机映射到多核执行平台中的各个处理核上;B)每隔一段时间收集一次多核执行平台中各线程的执行信息;C)根据收集到的信息检测程序行为是否发生明显变化,若是则须重映射调度,否则重复步骤B);D)对收集的信息进行预处理,求得线程在不同处理核上性能预测值;E)利用预测值对线程到处理核的映射方案进行搜索评估,选择最优的一种完成线程到处理核的映射。本发明专利技术通过为程序分配最适合的处理核来降低在线调度的计算开销,从而达到最大化系统总体性能的目的。

A dynamic scheduling method for multithreaded applications based on machine learning technology

【技术实现步骤摘要】
一种基于机器学习技术的多线程应用程序动态调度方法
本专利技术涉及到任务调度和机器学习领域,具体地说是一种基于机器学习技术的在异构多核处理系统上对多线程应用进行动态调度以实现性能最大化的调度方法。
技术介绍
为了应对应用场景对高性能和低功耗的需求,异构多核处理系统逐渐成为主流的解决方案,而如何根据系统需求对应用进行动态的资源映射和调度,从而充分发挥出异构多核处理系统的优势,成为一个需要解决的重要问题。多核执行平台上的资源映射和调度问题,本质上是将应用集合按照一定规则分配到处理核上以充分发挥整个多核执行平台高性能低功耗的优势,其数学模型如下:定义一组应用集合用T={t1,t2,..,tn}表示,一个包含n台节点{c1,c2,..,c3}的多核执行平台机器集合为M。令Y为所有可行的分配情况集合,元素y∈Y,其中y表示一种T和M的映射关系f:T→M,即一种分配情况。假设存在一个目标函数C:y→[0,+∞](目标函数的值可以被表示为性能指标或能耗指标),那么对于每一种分配计划y,都有Cij:y→[0,+∞],其中Cij表示将应用ti分配到处理核cj后的性能(能耗)指标。综上,调度问题可以抽象为求出一组最优的分配解y∈Y,使得目标函数C值最优。对于资源映射和调度的优化问题,有两个主要方面需要考虑,一个是调度所占开销,一个是调度后系统的总体性能提升情况。应用在线调度已经被证明属于NP完全问题,无法在多项式时间内找到问题的最优解。现有的解决NP完全问题的多基于启发式算法或者机器学习算法,启发式算法只能找到次优解,调度后系统总体性能提升效果有时不够理想;传统的机器学习模型执行时间较长,且需要频繁调用才能找到相对较好的解,带来了巨大的调度开销,这些开销在部分情况下甚至是不可以接受的。
技术实现思路
本专利技术为了避免上述现有技术的不足,提出了一种基于机器学习技术的多线程应用程序动态调度方法,以期能充分考虑多核执行平台不同处理核的计算能力和工作负载的行为变化对映射和调度的影响,通过为程序分配最适合的处理核以及降低在线调度的计算开销,来达到最大化系统总体性能的目的。本专利技术为解决上述技术问题采用的技术方案是:本专利技术一种基于机器学习技术的多线程应用程序动态调度方法的特点是应用于具有M种不同类型的N个处理核的多核执行平台上,并按照如下步骤进行:步骤A.初始时,将多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从而得到一个映射方案;步骤B.每隔一段固定时间,收集所述多核执行平台中各个线程的执行信息以及IPC值,并将所述执行信息作为初始输入数据集,将所述IPC值单独存入集合A中;步骤C.对每条线程的执行信息进行数据预处理,生成特征向量集合S;步骤D.将所述特征向量集合S作为人工神经网络的输入,将集合A作为人工神经网络的输出,利用人工神经网络训练参数矩阵θ,从而得到训练好的性能预测模型;步骤E.获取新的多线程应用程序,并采集相应的执行信息以及IPC值;步骤F.根据新的IPC值判断新的多线程应用程序的执行行为是否发生变化,若发生变化,则执行步骤G,否则,表示调度时机不合适,保持当前映射方案;步骤G.对新的执行信息进行数据预处理,生成新的特征向量集合S′,并代入性能预测模型中,得到新的多线程应用程序在M种不同类型的N个处理核上运行的IPC集合A′;步骤H.将新的多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从而得到一个初始映射方案;根据所述初始映射方案,得到各个新的线程映射到所有不同类型的处理核上的映射方案集合;步骤I.根据所述IPC集合A′,计算映射方案集合中每个映射方案的IPC总和,从而选择IPC总和最大的映射调度作为最优映射方案,并根据所述最优映射方案实现新的多线程应用程序中各个线程到处理核的映射。本专利技术所述的基于机器学习技术的多线程应用程序动态调度方法的特点也在于,步骤C中的数据预处理步骤如下:步骤C1).计算所述执行信息中的各种类型的指令数占总指令条数的百分比;步骤C2).根据所述各种指令的百分比,计算所述执行信息的均值和方差,从而对所述执行信息进行归一化处理,得到归一化后的执行信息,并作为特征向量集合S。步骤F中是按如下步骤进行判断:步骤F1).利用式(1)计算时间片t上的线程j的波动幅度式(1)中,表示时间片t上的线程j的IPC值,为时间片t-1上的线程j的IPC值步骤F2).若则表示新的多线程应用程序的执行行为发生了变化,反之,表示没有发生变化,其中,δ为阈值。与现有技术相比,本专利技术的有益效果体现在:1.相比传统调度方法,本专利技术可以感知程序行为特性和处理核特性,对程序性能实现了快速准确的评估,并根据评估结果进行调度,提升了调度效果。2.相对其它相关的机器学习方法,本专利技术引入了阶段检测技术,通过对程序行为阶段的检测来有效确定重调度时机,实现了按需调度,从而大大减少了重调度的次数和在线计算开销,进一步提升了系统整体性能。3.本专利技术利用了多个机器学习模型来对运行在不同类型处理核上的程序进行性能评估,能为程序分配最适合的处理核,避免了单一模型在多类型处理核的异构平台上无法保证评估精度的缺陷,具有更好的泛化性能。4.本专利技术所实现的算法可以动态调整M和N的个数,具有更好的灵活性。附图说明图1是本专利技术基于机器学习的多线程应用程序动态调度的框架图;图2是本专利技术基于机器学习的多线程应用程序动态调度的方法流程图;图3是本专利技术的神经网络结构图;图4是本专利技术的多核执行平台架构图。具体实施方式本实施例中提到的ANN:即人工神经网络;BP:反向传播;IPC:每个时钟周期运行的指令条数。如图2所示,本实施例中,如图1所示,一种基于机器学习技术的多线程应用程序动态调度方法,是应用于具有M种不同类型的N个处理核的多核执行平台上,实施例中使用的多核执行平台如图3所示,其中处理核C1是大核(性能核),其余三个是小核(能效核),将线程A,B,C,D分配到4个处理核C1~C4上执行的具体过程,并利用已训练的ANN对线程A,B,C,D进行调度。具体的说,如图2所示,该调度方法是按照如下步骤进行:步骤A.初始时,将多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从而得到一个映射方案;本实例中是将多线程应用程序中的4个线程随机映射到在具有4个处理核的多核执行平台中的各个处理核上;步骤B.每隔一段固定时间,收集多核执行平台中各个线程的执行信息以及IPC值,并将执行信息作为初始输入数据集,将IPC值单独存入集合A中;步骤B中收集的线程执行信息包括:1)与处理核微架构相关的4种信息:L1-D命中缺失率、L1-I命中缺失率、L2命中缺失率、LLC命中缺失率。2)与程序行为变化相关的6种信息:浮点加法指令条数、浮点减法指令条数本文档来自技高网
...

【技术保护点】
1.一种基于机器学习技术的多线程应用程序动态调度方法,其特征是应用于具有M种不同类型的N个处理核的多核执行平台上,并按照如下步骤进行:/n步骤A.初始时,将多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从而得到一个映射方案;/n步骤B.每隔一段固定时间,收集所述多核执行平台中各个线程的执行信息以及IPC值,并将所述执行信息作为初始输入数据集,将所述IPC值单独存入集合A中;/n步骤C.对每条线程的执行信息进行数据预处理,生成特征向量集合S;/n步骤D.将所述特征向量集合S作为人工神经网络的输入,将集合A作为人工神经网络的输出,利用人工神经网络训练参数矩阵θ,从而得到训练好的性能预测模型;/n步骤E.获取新的多线程应用程序,并采集相应的执行信息以及IPC值;/n步骤F.根据新的IPC值判断新的多线程应用程序的执行行为是否发生变化,若发生变化,则执行步骤G,否则,表示调度时机不合适,保持当前映射方案;/n步骤G.对新的执行信息进行数据预处理,生成新的特征向量集合S′,并代入性能预测模型中,得到新的多线程应用程序在M种不同类型的N个处理核上运行的IPC集合A′;/n步骤H.将新的多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从而得到一个初始映射方案;根据所述初始映射方案,得到各个新的线程映射到所有不同类型的处理核上的映射方案集合;/n步骤I.根据所述IPC集合A′,计算映射方案集合中每个映射方案的IPC总和,从而选择IPC总和最大的映射调度作为最优映射方案,并根据所述最优映射方案实现新的多线程应用程序中各个线程到处理核的映射。/n...

【技术特征摘要】
1.一种基于机器学习技术的多线程应用程序动态调度方法,其特征是应用于具有M种不同类型的N个处理核的多核执行平台上,并按照如下步骤进行:
步骤A.初始时,将多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从而得到一个映射方案;
步骤B.每隔一段固定时间,收集所述多核执行平台中各个线程的执行信息以及IPC值,并将所述执行信息作为初始输入数据集,将所述IPC值单独存入集合A中;
步骤C.对每条线程的执行信息进行数据预处理,生成特征向量集合S;
步骤D.将所述特征向量集合S作为人工神经网络的输入,将集合A作为人工神经网络的输出,利用人工神经网络训练参数矩阵θ,从而得到训练好的性能预测模型;
步骤E.获取新的多线程应用程序,并采集相应的执行信息以及IPC值;
步骤F.根据新的IPC值判断新的多线程应用程序的执行行为是否发生变化,若发生变化,则执行步骤G,否则,表示调度时机不合适,保持当前映射方案;
步骤G.对新的执行信息进行数据预处理,生成新的特征向量集合S′,并代入性能预测模型中,得到新的多线程应用程序在M种不同类型的N个处理核上运行的IPC集合A′;
步骤H.将新的多线程应用程序中的各个线程随机映射到在多核执行平台中的各个处理核上,从...

【专利技术属性】
技术研发人员:安鑫康安杨静卫圆祺王沐晗
申请(专利权)人:安徽安喆科技有限公司
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1