Skip to Main Content
Accurate data dependence testing allows a compiler to perform safe automatic code optimization and parallelization. It has been shown that factors, such as loop variants and nonlinear expressions, limit opportunity for data dependence testing and parallelization. Recently, the NLVI-Test has been introduced as new technology to enable exact data dependence testing on nonlinear expressions. Apart from this work, analyses that utilize the Chains of Recurrences formalism have been shown to boost a dependence test's ability to analyze expressions. In this paper we present techniques for applying the NLVI-Test ideas in conjunction with Chains of Recurrences analysis, to couple the benefits of both. In addition, we develop a "Parallelization Index" which describes the upper bound of the total parallelization obtainable for our compiler infrastructure. We perform an experimental evaluation of our efforts on scientific benchmarks. Results show our techniques result in higher numbers of total parallel loops discovered, and moreover, that we consistently expose a majority of the parallelism obtainable.