Skip to Main Content
Parallelizing compilers rely on data dependence information in order to produce valid parallel code. Polynomial data dependence analysis techniques, such as the Banerjee test and the I-Test, can efficiently compute data dependence information for simple instances of the data dependence problem. In more complicated cases such as triangular or trapezoidal loop regions with direction vector constraints these tests, including the triangular Banerjee test, ignore or simplify many of the constraints and thus introduce further approximations. The I-Test and the Omega test are two data dependence tests that can provide exact data dependence information. In addition the Omega test can accurately handle complex loop regions but at a higher computation cost. We extend the ideas behind the I-Test to handle such complex regions which are frequently found in actual source code. In particular, we provide a polynomial-time algorithm, the VI-Test that can detect data dependences in loops with triangular bounds and symbolic variables subject to any direction vector. We also perform an extensive experimental evaluation of the various dependence tests, including the I-Test, the VI-Test and the Omega test. We run several experiments using the Perfect Club Benchmarks and the scientific libraries Eispack, Linpack and Lapack. We present accuracy results, reasons for inconclusive answers, and comparative efficiency metrics.