[发明专利]基于循环分割或索引阵列的循环并行化有效
申请号: | 201180061439.X | 申请日: | 2011-12-19 |
公开(公告)号: | CN103282878A | 公开(公告)日: | 2013-09-04 |
发明(设计)人: | J·林;N·拉维;X·田;J·L·吴;R·V·瓦利乌林 | 申请(专利权)人: | 英特尔公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/45 |
代理公司: | 永新专利商标代理有限公司 72002 | 代理人: | 刘瑜;王英 |
地址: | 美国加*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 循环 分割 索引 阵列 并行 | ||
1.一种方法,包括:
基于控制和数据依赖信息,识别用于推测并行化的循环;
响应于确定所述循环要被并行化,生成一个或多个推测防护来保存与所述循环相对应的推测信息;
基于检查代码的执行,确定控制推测和数据推测的误推测信息,其中所述检查代码是基于所述一个或多个推测防护生成的;以及
基于所述误推测信息,生成与所述循环相对应的一个或多个分割循环。
2.根据权利要求1所述的方法,还包括:
分析优化信息,以生成控制和数据依赖信息。
3.根据权利要求2所述的方法,其中,所述优化信息包括启发信息或者简档信息中的一个或多个。
4.根据权利要求1所述的方法,还包括:
判断是否对所述循环进行并行化,其中判断是否对所述循环进行并行化是基于判断对所述循环进行并行化是否将导致加速的。
5.根据权利要求1所述的方法,还包括:
生成用于所述循环的占位符。
6.根据权利要求5所述的方法,还包括:
更新与所述占位符相对应的控制和数据依赖图。
7.根据权利要求6所述的方法,其中,更新所述控制和数据依赖图包括:消除一个或多个高度不可能发生的分支,以及忽略低概率的数据依赖。
8.根据权利要求1所述的方法,还包括:
基于所述一个或多个推测防护,在编译器的后期阶段应用分析和转换,而不进行改变来适应所述推测信息,其中所述一个或多个推测防护是在所述编译器的早期阶段生成的。
9.根据权利要求1所述的方法,还包括:
基于所述一个或多个推测防护,生成所述检查代码。
10.根据权利要求1所述的方法,其中,在与所述循环相比时,所述一个或多个分割循环包括下面中的一个或多个:不相交索引集、更少的分支、或者更少的循环承载的依赖。
11.一种方法,包括:
将一组索引存储在索引阵列中,其中对于所述一组索引来说,循环的if条件语句对于仅仅一个迭代集始终成立;以及
基于所述索引阵列,从所述循环中生成多个子循环,其中所述索引阵列造成所述循环中的一个或多个控制流和数据流依赖的打破。
12.根据权利要求11所述的方法,还包括:
基于所述索引阵列,对所述多个子循环进行重新排序。
13.根据权利要求11所述的方法,其中,所述索引阵列包括所述循环的迭代空间的子集,所述子集是通过响应于所述循环中针对仅仅一个迭代集而存在的流或者逆向流依赖边缘选择迭代集来构造的。
14.根据权利要求11所述的方法,其中,生成所述多个子循环是响应于确定具有单一分支的if条件语句负责所述一个或多个控制流依赖而执行的,其中所述if条件语句具有单一分支使得所述if条件语句的预测取决于循环索引变量。
15.根据权利要求11所述的方法,还包括:
通过使用相应的索引阵列元素来替代索引变量的一次或多次出现,基于所述循环来生成子循环。
16.根据权利要求11所述的方法,还包括:
生成两个预计算循环,以构造所述索引阵列。
17.根据权利要求11所述的方法,还包括:
将所述循环转换成两级循环嵌套。
18.一种包括一个或多个指令的计算机可读介质,其中当所述一个或多个指令在处理器上执行时,将所述处理器配置成执行一个或多个操作,以便:
基于控制和数据依赖信息,识别用于推测并行化的循环;
响应于确定所述循环要被并行化,生成一个或多个推测防护来保存与所述循环相对应的推测信息;
基于检查代码的执行,确定控制推测和数据推测的误推测信息,其中所述检查代码是基于所述一个或多个推测防护生成的;以及
基于所述误推测信息,生成与所述循环相对应的一个或多个分割循环。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201180061439.X/1.html,转载请声明来源钻瓜专利网。