[发明专利]用于程序自动性能预测的视点提升方法有效
| 申请号: | 201510579026.0 | 申请日: | 2015-09-11 |
| 公开(公告)号: | CN105183651B | 公开(公告)日: | 2018-03-16 |
| 发明(设计)人: | 张伟哲;谢虎成;何慧;韩硕;郝萌;王学惠;鲁刚钊 | 申请(专利权)人: | 哈尔滨工业大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 哈尔滨市松花江专利商标事务所23109 | 代理人: | 杨立超 |
| 地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 程序 自动 性能 预测 视点 提升 方法 | ||
技术领域
本发明涉及一种用于程序自动性能预测的视点提升方法。
背景技术
程序常见的性能评测方法包括动态分析和静态分析。所谓动态分析即真实运行较小输入规模和并行度预测大规模的情况,静态分析即基于编译器分析代码,获取程序特征。现在希望动态分析和静态分析相结合获取程序性能。动态分析代表精确性,而静态分析代表预测性。
研究中通过静态分析获取循环次数,插桩到源程序中,运行删减后的程序获取循环次数,结合程序特征,最终得到预测时间。LLVM本身提供了EdgeProfiling,即在循环的preheader插入“边”的信息。但这种方法是纯动态分析的方法与我们预测的初衷不符,所得的预测概率较低。
需要在保证精度的同时寻找合适的插入位置,所寻找的插桩位置即视点,视点是指通过静态分析得到循环次数的插桩位置,其优点在于完美的统一了静态预测和动态预测。通过提升或降低视点来自由调节动态性和静态性的比例。视点过高,增加预测性但会降低精度,也就是趋近于纯静态分析。如果视点过低则会失去预测性,趋近于LLVM提供的EdgeProfiling。亟需一种能够保证精度的同时尽量提升视点以提高预测性的方法。
发明内容
本发明的目的是为了解决现有的程序自动性能预测方法存在难以在保证预测精度的同时确定最大预测性的问题,而提出一种用于程序自动性能预测的视点提升方法。
一种用于程序自动性能预测的视点提升方法,所述方法通过以下步骤实现:
步骤一、定义基本块N执行次数的视点V,则利用二元组表示的基本块频率为(Ev,BV,N);其中,Ev表示视点V的实际运行次数,BV,N表示在视点V中预测到基本块N的频率;所述视点V即为计算循环基本块执行次数的指令的插入点;
步骤二、对二元组表示的基本块频率(Ev,BV,N)中的视点V的实际运行次数Ev的量进行提升操作,且提升后的视点V满足其中,δ表示支配关系,即在视点V能够获取直接依赖的%start、%end和%stride三个变量的值;
步骤三、确定二元组表示的基本块频率(Ev,BV,N)中的视点V中预测到基本块N的频率BV,N的量;
步骤四、令视点V的实际运行次数Ev与视点V中预测到基本块N的频率BV,N的乘积定义为基本块N的频率BN,即BN=Ev×BV,N;
步骤五、每实际运行一次视点V都得到实际运行次数Ev,相应地,将视点V中预测到基本块N的频率BV,N的指令插入视点V,因此视点V在一次运行中总的基本块频率为
本发明的有益效果为:
本发明通过将基本块次数插入Preheader中,以提升精度,并通过使视点V获取直接依赖的%start、%end和%stride三个变量的值来提升视点,从而弥补因为提升精度而导致的预测性降低的缺点,进而通过提高的预测性使后期代码删减操作,全局计数器数组的读写散布在每个基本块内,从而阻断了删减过程。实现在保证精度的同时确定合适的插入位置,结合静态分支概率提高预测性。且预测精确率达到92-95%。
附图说明
图1为本发明的流程图;
图2为本发明实施例1中不同视点包含不同程度的动态性静态性比例;
图3为本发明实施例1涉及的不同视点循环嵌套示意图;
具体实施方式
具体实施方式一:
本实施方式的用于程序自动性能预测的视点提升方法,结合图1所示,所述方法通过以下步骤实现:
步骤一、定义基本块N执行次数的视点V,则利用二元组表示的基本块频率为(Ev,BV,N);其中,Ev表示视点V的实际运行次数,BV,N表示在视点V中预测到基本块N的频率;所述视点V即为计算循环基本块执行次数的指令的插入点;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510579026.0/2.html,转载请声明来源钻瓜专利网。





