法律状态公告日
法律状态信息
法律状态
2017-10-20
授权
授权
2015-06-24
实质审查的生效 IPC(主分类):G06F9/50 申请日:20150227
实质审查的生效
2015-05-27
公开
公开
技术领域
本发明属于计算机系统结构领域,涉及一种并行应用程序线程数动态调整 方法,尤其涉及一种用于异构众核系统下的应用程序线程数动态调整方法。
背景技术
随着多核、众核技术的迅速发展,异构系统已经成为高性能计算领域一种 重要的发展趋势,如何在充分利用异构系统高计算能力提升程序性能的同时, 降低系统的能耗是异构系统需要解决的一个关键问题。在主处理器+协处理器 架构的新型异构众核系统下,主处理器主要负责处理复杂的逻辑控制任务,协 处理器负责处理计算密度高、逻辑分支简单的大规模数据并行任务,主处理器 和协处理器协同的计算任务的不同部分,为具体的应用程序提供高效的计算平 台。在具体运行程序时,如何在主处理器和协处理器端设置线程数,对程序性 能、异构系统整体能耗都将产生重要的影响。
异构众核系统下,主处理器一般采用通用的片上多核处理器(CMP),因 处理器核数有限,通常在CMP上将线程数设置为具体的处理器核数,就能达 到较好的加速效果。协处理器通常采用新型众核处理器(如GPU和MIC),由 于处理器核数众多(通常几十、上百个核),同时处理核内部又引入了同时多 线程(SMT)技术,这使得影响因素更加复杂。如果设置的线程数过多,会因 线程间争用共享资源导致计算性能下降,同时由于启用众多的处理核会造成过 高的能源消耗;设置的线程数过少,则因异构系统处理核资源得不到充分利用, 影响计算性能的提升。又因主处理器和协处理器具有不同的硬件架构,如何根 据分配到的任务特点,结合硬件架构特征合理的设置线程数,将任务映射到具 体的处理核上,对充分利用不同处理器的硬件资源、高效发挥异构众核系统的 计算能力及提高异构众核系统整体效能具有重要意义。
已有的针对多核及众核环境下,确定多线程应用程序最佳线程数的研究工 作,总体上可以分为根据经验值静态设置、迭代探测、预测三种实现方法。由 于受所处理数据及具体运行平台的变化等因素影响,根据经验值静态设置的方 法通常不能正确的反映程序具体运行时的特性,准确性和性能较低;迭代探测 的方法通过在程序运行过程中不断的测试对比不同的线程数对性能的影响,最 终找到近似最优的线程数,然后以此为标准进行线程映射,但该方法会引入较 高的额外开销,不能反映程序动态变化的特性;预测的方法介于前两者之间, 结合一定的模型,估计出最优的线程数。
已有的工作主要针对传统的多核及众核环境研究相应的最优线程数,但在 由主处理器和协处理器构成的异构众核系统下,协处理器集成了更多数量的处 理核,主处理器和协处理器协同的处理计算任务,要根据架构特征,结合应用 程序本身的特点及程序在运行过程中运行状态才能设置合理的线程数,从而保 证程序计算性能的同时最大程度的降低系统能耗,而已有的在传统的多核及众 核环境下确定最佳线程数的方法不能较好的适应新型异构众核系统。
由于存在以上问题,目前还没有一种能够根据异构众核系统架构的特征, 结合应用程序在运行过程中阶段性变化的特性,实时对并行应用程序的线程数 进行动态调整以较低的开销在提高程序的计算性能同时降低系统能耗的有效 方法。
发明内容
本发明的目的在于克服上述现有技术中的问题,提供一种异构众核系统下 的用于异构众核系统下的应用程序线程数动态调整方法,该线程数动态调整方 法以最优线程数动态预测模型为基础,可以在保证应用程序理想计算性能的同 时尽量降低系统的整体能耗。
为了达到上述目的,本发明采用的技术方案包括如下步骤:
1)异构系统主机端主进程将程序循环部分代码分派到异构系统的协处理 器上运行,通过系统硬件性能记数器获取程序在不同的线程数运行情况下的 IPS1和IPSn的值,其中IPS1为单个线程运行时程序每秒钟所处理的指令数,IPSn为n个线程运行时程序每秒钟所处理的指令数;
2)将收集到的状态信息IPS1和不同线程数情况下的IPSN值返回到CPU 主机端;
3)CPU主机端根据以下公式计算多线程运行时相对于单个线程运行时的 相对周转时间fn:
公式(1)中TTn和TT1分别表示多线程运行时程序的执行时间和单线程 运行时的程序执行时间,SIP为程序总的指令数;
3)根据公式(1)计算得到多组(fn,n)值,利用最小二乘法,通过求 解以下方程组:
计算出最优线程数预测模型中的系数α,β的值,其中α表示所处理任务 中的串行比例系数、β表示并行任务比例系统、γ表示额外开销对性能的影响 因子;
4)根据最优线程数预测模型:
计算最优线程数预测值n;
5)将步骤3)中计算出的α和β的值代入公式(2)计算出最优线程数预 测值n,将应用程序的线程数设为最优线程数n后重新在协处理器端运行应用 程序;同时以最优线程数为标准将空闲的处理核及处理核内部的硬件线程关闭 或置于非活动状态;
6)程序在协处理器端运行的过程中,在一定的时间间隔内对程序的运行 状态信息采集一次,并对程序的运行状态进行检测;如果检测到程序发生阶段 性变化,则转到步骤2);如果程序在协处理器端运行过程中没有检测到阶段性 变化,则继续运行程序,直到程序运行结束;
7)将协处理器端的运行结果返回给主机端,主机端继续执行整个应用程 序的后继部分,遇到有循环部分则继续分派到协处理器端执行,即转到步骤1);
8)不断的迭代直到整个应用程序执行完成,从而实现了在应用程序运行 的过程中动态的对线程数进行调整;
所述步骤4)中的最优线程数预测模型根据以下多线程运行时相对于单线 程运行时的周转时间计算公式推导后得到:
1)经过对Amdahl定律扩展变换后得公式(3):
由公式(1)和公式(3)等价变化后得到公式(4):
2)通过利用极值定理求解使公式(4)中相对周转时间最小的值n,即可 以得到最优线程数预测模型。
所述步骤6)中,对程序的运行状态进行检测是根据采集到的线程上下文 切换率、线程迁移率、cache缺失率、CPU利用率以及带宽利用率这五个指标 判断程序的运行状态是否发生了阶段性的变化。
所述步骤6)中的状态信息采样间隔为100ms。
与现有技术相比,本发明的有益效果在于:
本发明在结合具体异构众核系统架构特征的基础上,同时考虑应用程序本 身的特点和程序在具体运行时动态变化特性,通过实时采集反映程序运行状态 的性能计算器信息,利用相应的数学模型预测最佳线程数,然后动态的进行线 程到处理核的映射。它即能依据程序的动态特性实时的控制线程数,提升程序 的性能,又可通过合理的控制启动的线程数和处理核数,减少由于启用过多的 线程和处理核而造成的能源浪费,达到降低系统整体能耗的目的;同时基于线 程预测模型进行预测线程数,不会引入过高的额外开销,从而可高效的利用异 构众核系统的计算能力来提升应用程序的性能,提高整个异构众核系统的能 效。
附图说明
图1为本发明的流程图:
图2为在MIC众核发系统上具体实现框架。
具体实施方式
以下结合附图对本发明作进一步的详细描述。
参见图1,本发明能够对运行在异构众核系统上的并行应用程序的最优线 程数进行预测,同时根据程序运行状态的变化对程序的线程数进行动态的调 整,从而在保证程序理想性能的同时降低系统能耗。具体的最优线程数预测及 线程数动态调整过程如图1所示,具体包括以下步骤:
1)异构系统主机端主进程将程序循环部分代码分派到异构系统的协处理 器上运行,通过系统硬件性能记数器获取程序在不同的线程数运行情况下的 IPS1(单个线程运行时,程序每秒钟所处理的指令数)和IPSn(N个线程运行 时程序每秒钟所处理的指令数)的值;
2)将收集到的状态信息IPS1和不同线程数情况下的IPSn值返回到CPU主 机端;
3)CPU主机端根据以下公式计算多线程运行时相对于单个线程运行时的 相对周转时间f:
公式中TTn和TT1分别表示多线程运行时程序的执行时间和单线程运行时 的程序执行时间,SIP为程序总的指令数;
4)根据计算得到多组(fn,n)值,利用最小二乘法,通过解以下方程组:
计算出相应预测模型中的系数α,β的值;
5)将计算出的α,β的值代入最优线程数预测模型:
计算出最优线程数的预测值n;
6)计算出最优线程数n后,将应用程序的线程数设为最优线程数n后重 新在协处理器端运行应用程序;同时以最优线程数为标准将空闲的处理核及处 理核内部的硬件线程关闭或置于非活动状态,从而避免不必要的额外的能源消 耗,降低系统的整体能耗;
7)程序在协处理器端运行的过程中,每隔一定的时间间隔对程序运行状 态信息采集一次,并检测程序是否发生了阶段性的变化。主要根据采集到的线 程上下文切换率、线程迁移率、cache缺失率、CPU利用率、带宽利用率这五 个指标判断程序是否发生了阶段性的变化。如果检测到程序发生阶段性变化, 则转到步骤2),具体程序阶段性变化检测算法如图2所示;
8)如果程序在协处理器端运行过程中没有检测到阶段性变化,则继续运 行程序,直到程序运行结束;
9)将协处理器端的运行结果返回给主机端,主机端继续执行整个应用程 序的后继部分,遇到有循环部分则继续分派到协处理器端执行,即转到步骤1);
10)这样不断的迭代直到执行完整个应用程序,从而实现了在应用程序运 行的过程中动态的对线程数进行调整。
图2描述了在MIC异构系统上的具体实现框架。
本发明针对异构系统下如何提高程序性能和降低系统能耗的问题,通过动 态设置合理的线程数来提升程序性能、降低系统能耗。以Amdal定理为基础, 结合主成分分析理论及用回归分析理论构造动态线程数预测模型,通过实时采 集反映程序运行时的系统级状态信息,利用预测模型估计出程序在不同阶段最 优的线程数,然后动态的调整程序并行性,从而在提升程序性能的同时尽量降 低系统能耗。本发明可以根据程序运行过程中阶段性变化及对计算资源动态要 求的特点,动态的对程序的线程数进行调整,以较低的开销达到高性能和低功 耗的目的,为异构众核系统下运行应用程序时如何在提高程序计算性能的同时 降低系统能耗提供了一种有效的方法。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围, 凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入 本发明权利要求书的保护范围之内。
机译: 在运行时自动调整应用程序服务器中线程数的系统和方法
机译: 预测用于电子设备上的应用程序运行的最佳线程数的方法和系统
机译: 预测用于电子设备上的应用程序运行的最佳线程数的方法和系统