论文部分内容阅读
本文的工作主要是进行数据相关性测试的研究,作者首先回顾了数据相关性研究的传统方法,以及并行编程与数据相关性的关系。进而提出了基于路径分析和符号执行的静态测试和动态测试方法,来研究串行程序中循环内部数组变量的数据相关性,该方法对于下标表达式为线性表达式时有很好的效果,而且能够处理一些复杂的数组下标表达式,比如数组下标表达式含有输入变量和非线性下标表达式的情况。 数据相关性的静态测试中,我们首先生成程序的流程图,在遍历流程图的同时生成这个程序的扩展有限状态机(EFSM),然后调用路径分析工具对EFSM的路径进行分析。我们采用了遍历程序路径和对路径进行符号执行的策略,这样可以尽可能早的发现程序中的不可执行路径,从而提高分析的效率。数据相关性的静态测试可以精确处理数组下标表达式为线性表达式的情况,而且还可以精确求解数组下标中含有输入变量的情况。静态测试在限定的范围内是精确测试。 同时,我们还提出了判断数据相关性的动态测试。动态测试就是在解释执行程序的同时,记录串行程序对数组元素的访问,如果发现数据相关就终止测试。动态测试是基于我们假设如果循环中存在数据相关,那么在循环的有限几次迭代中就会出现数据相关。动态测试能够处理数组下标表达式较为复杂的情况,也可以处理非线性表达式。