[发明专利]用于程序自动性能预测的视点提升方法有效
| 申请号: | 201510579026.0 | 申请日: | 2015-09-11 |
| 公开(公告)号: | CN105183651B | 公开(公告)日: | 2018-03-16 |
| 发明(设计)人: | 张伟哲;谢虎成;何慧;韩硕;郝萌;王学惠;鲁刚钊 | 申请(专利权)人: | 哈尔滨工业大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 哈尔滨市松花江专利商标事务所23109 | 代理人: | 杨立超 |
| 地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 程序 自动 性能 预测 视点 提升 方法 | ||
1.一种用于程序自动性能预测的视点提升方法,其特征在于:所述方法通过以下步骤实现:
步骤一、定义基本块N执行次数的视点V,则利用二元组表示的基本块频率为(Ev,BV,N);其中,Ev表示视点V的实际运行次数,BV,N表示在视点V中预测到基本块N的频率;所述视点V即为计算循环基本块执行次数的指令的插入点;
步骤二、对二元组表示的基本块频率(Ev,BV,N)中的视点V的实际运行次数Ev的量进行提升操作,且提升后的视点V满足其中,δ表示支配关系,即在视点V能够获取直接依赖的%start、%end和%stride三个变量的值;
所述提升操作的过程为:
步骤二一、选择循环的基本块次数的直接依赖的指令;
步骤二二、将步骤二一选择的直接依赖的指令中只被使用一次的操作数赋值给目标集合;
步骤二三、将步骤步骤二一选择的指令中多次使用的操作数的父循环的视点赋值给Depends集合;
步骤二四、若Depends集合为空,则返回循环所在的基本块,并进行步骤二五的操作;否则,进行寻找视点V的操作;
步骤二五、遍历目标集合中的指令,将指令插入到初始视点pos的终止指令之前;
步骤二六、返回初始视点pos,即完成视点V的提升;
步骤三、确定二元组表示的基本块频率(Ev,BV,N)中的视点V中预测到基本块N的频率BV,N的量;具体为:
当选择的视点V与父循环在同一循环层时,确定视点V中预测到基本块N的频率BV,N表示为:Ev,(V→m)%tc;其中,m表示父循环所在的循环层;
当选择的视点在第n个父循环之外时,将视点到达Preheader的概率依次乘以循环次数和下一个节点到达前驱基本块Preheader的概率,依次嵌套下去,得到视点V中预测到基本块N的频率为:
其中,
Ei表示第i个循环的头节点,Pi表示前驱基本块Preheader,Vi表示视点,%tci表示循环次数,i=1.2...n-1,n;
步骤四、令视点V的实际运行次数Ev与视点V中预测到基本块N的频率BV,N的乘积定义为基本块N的频率BN,即BN=Ev×BV,N;
步骤五、每实际运行一次视点V都得到实际运行次数Ev,相应地,将视点V中预测到基本块N的频率BV,N的指令插入视点V,因此视点V在一次运行中总的基本块频率为
2.根据权利要求1所述的用于程序自动性能预测的视点提升方法,其特征在于:步骤一所述的二元组表示的基本块频率(Ev,BV,N)的取值为:
(1)当选择基本块本身作为视点时,二元组表示的基本块频率表示为(EN,1);
(2)对于循环中的基本块,当选择循环的Preheader作为视点时,基本块频率表示为其中,%tc表示静态分析循环次数,是编译框架LLVM提供的静态分支预测的概率;
(3)对于非循环的基本块,沿用编译框架LLVM基本块频率,非循环的基本块的视点仍然为函数入口基本块e,即:(Ee,Be,N)。
3.根据权利要求2所述的用于程序自动性能预测的视点提升方法,其特征在于:步骤二四所述寻找视点V的操作的过程为,
遍历Depends集合中的基本块N,若初始视点pos能够支配基本块N,则视点pos重新赋值为基本块N;否则,初始视点pos仍为原值。
4.根据权利要求3所述的用于程序自动性能预测的视点提升方法,其特征在于:当选择的视点V与父循环相同时,利用父循环表示简化的视点V中预测到基本块N的频率BV,N为:
其中,H1表示父循环,表示视点与父循环共同的视点,表示简化计算时父循环频率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510579026.0/1.html,转载请声明来源钻瓜专利网。





