15、优化编译器的高效符号分析

优化编译器的高效符号分析

在编译器优化领域,广义归纳变量(GIV)的识别和处理对于循环并行化至关重要。传统的符号差分法虽然强大,但存在一定的局限性。本文将介绍一种新的、更安全且易于实现的归纳变量识别方法。

1. 相关工作

1.1 广义归纳变量(GIV)

GIV 可以通过循环迭代形成多项式和几何级数。其特征函数定义为:
[
\chi(n) = \phi(n) + r a^n
]
其中,$n$ 是循环迭代次数,$\phi$ 是 $k$ 阶多项式,$a$ 和 $r$ 是循环不变表达式。

1.2 符号差分法

符号差分法是一种强大的归纳变量识别方法,通过抽象解释对循环进行固定次数的符号求值,构建差分表来识别多项式和几何级数。例如,对于 $m$ 次多项式 GIV,编译器最多执行 $m + 2$ 次循环。

然而,这种方法存在问题。当 $m$ 设置过低时,分析结果可能不正确。例如,在图 1 中,设置 $m = 3$ 得到的转换循环是错误的,正确的转换需要执行 6 次或更多次迭代。

示例 代码
原循环 fortran<br>DO i=0,n<br>t=a<br>a=b<br>b=c+2*b-t+2<br>c=c+d<br>d=d+i<br>ENDDO<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值