Optimizing compilers rely upon program analysis techniques to detect data dependences between program statements. Data dependence information captures the essential ordering constraints of the statements in a program that need to be preserved in order to produce valid optimized and parallel code. Data dependence testing is very important for automatic parallelization, vectorization and any other code transformation. In this paper we examine the impact of data dependence analysis in practice. A number of data dependence tests have been proposed in the literature. In each test there are different tradeoffs between accuracy and efficiency. We present an experimental evaluation of several data dependence tests, including the Banerjee test, the I-Test and the Omega test. We compare these tests in terms of data dependence accuracy, compilation efficiency, effectiveness in parallelization and program execution performance. We analyze the reasons why a data dependence test can be inexact and we explain how the examined tests handle such cases. We run various experiments using the Perfect Club Benchmarks and the scientific library Lapack. We present the measured accuracy of each test and the reasons for any approximation. We compare these tests in terms of efficiency and we analyze the tradeoffs between accuracy and efficiency. We also determine the impact of each data dependence test on the total compilation time. Finally, we measure the number of loops parallelized by each test and we compare the execution performance of each benchmark on a multiprocessor. Our results indicate that the Omega test is more accurate, but also very inefficient in the cases where the other two tests are inaccurate. In general the cost of the Omega test is high and a significant percentage of the total compilation time. Furthermore, the difference in accuracy of the Omega test over the Banerjee test and the I-Test does not improve parallelization and program execution performance.
[1]
Kleanthis Psarris.
The Banerjee-Wolfe and GCD Tests on Exact Data Dependence Information
,
1996,
J. Parallel Distributed Comput..
[2]
William Pugh,et al.
A practical algorithm for exact array dependence analysis
,
1992,
CACM.
[3]
Ron Cytron,et al.
Interprocedural dependence analysis and parallelization
,
1986,
SIGP.
[4]
Utpal Banerjee,et al.
Dependence analysis for supercomputing
,
1988,
The Kluwer international series in engineering and computer science.
[5]
George B. Dantzig,et al.
Fourier-Motzkin Elimination and Its Dual
,
1973,
J. Comb. Theory, Ser. A.
[6]
Kleanthis Psarris,et al.
The I Test: An Improved Dependence Test for Automatic Parallelization and Vectorization
,
1991,
IEEE Trans. Parallel Distributed Syst..
[7]
Lawrence Rauchwerger,et al.
Effective Automatic Parallelization with Polaris
,
1995
.
[8]
Ken Kennedy,et al.
Practical dependence testing
,
1991,
PLDI '91.
[9]
KLEANTHIS PSARRIS,et al.
On the Accuracy of the Banerjee Test
,
1991,
J. Parallel Distributed Comput..
[10]
David Niedzielski,et al.
An Analytical Comparison of the I-Test and Omega Test
,
1999,
LCPC.
[11]
Xiangyun Kong,et al.
The Direction Vector I Test
,
1993,
IEEE Trans. Parallel Distributed Syst..
[12]
Yunheung Paek,et al.
Parallel Programming with Polaris
,
1996,
Computer.
[13]
William Pugh,et al.
Eliminating false data dependences using the Omega test
,
1992,
PLDI '92.