[发明专利]一种基于谓词的自动并行优化方法无效
申请号: | 201010281799.8 | 申请日: | 2010-09-15 |
公开(公告)号: | CN101944040A | 公开(公告)日: | 2011-01-12 |
发明(设计)人: | 杨克峤;李弋;臧斌宇 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 谓词 自动 并行 优化 方法 | ||
1.一种基于谓词的自动并行优化方法,其特征在于基本步骤为:(1)谓词的构建;(2)基于谓词构建并行循环版本;其中:
谓词的构建,是依据传统的数组数据流分析和循环依赖性分析,通过程序的已知信息推导出并行谓词,消除循环的简单依赖,发掘循环结构的并行潜力;
基于谓词构建并行循环版本,是在谓词的约束条件下,判断嵌套循环能否最外层完全并行;如果能够最外层完全并行,则将谓词作为运行时的并行条件,创建循环结构的并行版本;否则,放弃假设的谓词。
2.根据权利要求1所述的基于谓词的自动并行优化方法,其特征在于具体操作步骤如下:
第一,将源程序转化为编译器中间表示
首先将源程序转变成中间表示形式,程序的中间表示是以结构化形式描述程序的抽象语法树结构,并记录在程序分析和优化过程中收集和产生的各种信息,为程序分析、变换和优化的各个阶段提供所需的程序信息支持;
第二,数组数据流的依赖性测试
采用已有的数组数据流分析方法,对两层嵌套循环中可能存在的数据依赖进行分析,其步骤为:
构建循环边界与数组下标的等式
首先找出两层嵌套循环的代码中可能存在数据依赖的定义,设两层嵌套循环的下标分别为i和j,存在数组引用对:对a数组的写引用a[A1i+B1j+C1]和对a数组的读引用a[A2i+B2j+C2];由数组a的定义和引用关系,建立如下等式:
A1i + B1j+ C1 = A2i +B2j + C2
和限制条件不等式:
m<= i <=n
x<= j <=y
将等式写成如下矩阵的形式:
(A1 - A2,B1 – B2) = C2 – C1
即Av = c,这里v=<i,j>, c=<C2 – C1>
依据等式系统,进行数组数据流的依赖性测试,对上面的等式的测试过程如下:
A I
(A1 - A2 B1 – B2)
把A的第一列* 加到第二列,得到:
(A1 – A2 0)
D U
求解等式Dt = c,得t = <C2 – C1, t2>,此时<i, j> = Ut,因此
i=
j = t2
依据条件不等式
m<= <=n
x <= t2 <= y
得到最终判定不等式:
<=t2 <=
x <= t2 <= y
若 x,y<=或 <=x,y,则t2无解,a数组的访问没有依赖;
谓词构造
将不等式系统中最后判定的不等式转化为使得数组数据流无依赖的并行谓词,即将最终判定条件转化为条件谓词x,y<=或 <=x,y;并基于该条件谓词更新循环信息,继续后续并行优化分析;
第三,判断能否对嵌套循环最外层进行完全并行
基于更新后循环迭代信息,进行相关性测试,判定能否嵌套循环最外层的完全并行;如果能够完全并行,则采纳构建的并行谓词,并以该谓词作为运行时的并行执行条件,生成并行循环结构;
第四,将中间表示翻译成带OpenMP标注的并行程序
采用源到源的程序转换,将串行程序优化成带OpenMP并行指示的并行程序;具体是把程序翻译成如下形式:
IF (( y .le.) .or.
(x .ge. .and. y .ge. )) THEN
#pragma parallel do
嵌套循环程序
ELSE
嵌套循环程序
ENDIF。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010281799.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:集装箱卡车的调度方法及系统
- 下一篇:液晶显示装置及其侧光式背光模块